• ELK日志收集系统


    一,概述

    ELK由三个组件构成

    作用:日志收集 日志分析 日志可视化

    二,组件

    1,elasticsearch


        日志分析
        开源的日志收集、分析、存储程序
        特点
            分布式
            零配置
            自动发现
            索引自动分片
            索引副本机制
            Restful风格接口
            多数据源
            自动搜索负载

    2,logstash

     
       2.1 日志收集
        2.2 搜集、分析、过滤日志的工具
        2.3 工作过程
            一般工作方式为c/s架构,Client端安装在需要收集日志的服务器上,Server端负责将收到的各节点日志进行过滤、修改等操作,再一并发往Elasticsearch上去
            Inputs → Filters → Outputs
            输入-->过滤-->输出
        2.4 INPUT
              File:从文件系统的文件中读取,类似于tail -f命令
              Syslog:在514端口上监听系统日志消息,并根据RFC3164标准进行解析
              Redis:从redis service中读取
              Beats:从filebeat中读取
        2.5 FILETER
            Grok:解析任意文本数据,Grok 是 Logstash 最重要的插件。它的主要作用就是将文本格式的字符串,转换成为具体的结构化的数据,配合正则表达式使用。
              官方提供的grok表达式:logstash-patterns-core/patterns at main · logstash-plugins/logstash-patterns-core · GitHub
              Grok在线调试:Grok Debugger
              Mutate:对字段进行转换。例如对字段进行删除、替换、修改、重命名等。
              Drop:丢弃一部分Events不进行处理。
              Clone:拷贝Event,这个过程中也可以添加或移除字段。
              Geoip:添加地理信息(为前台kibana图形化展示使用)
        2.6 OUTPUTS
              Elasticsearch:可以高效的保存数据,并且能够方便和简单的进行查询。
              File:将Event数据保存到文件中。
              Graphite:将Event数据发送到图形化组件中,踏实一个当前较流行的开源存储图形化展示的组件。
        了解

    三,配置ELK日志收集系统

    设置各个主机的IP地址为拓扑中的静态IP,在两个节点中修改主机名为node1和node2并设置hosts文件
    node1:
    hostnamectl set-hostname node1
    vim /etc/hosts
    192.168.115.3  node1
    192.168.115.4 node2


    node2:
    hostnamectl set-hostname node2
    vim /etc/hosts
    192.168.115.3  node1
    192.168.115.4  node2
    三、 安装node1与node2节点的elasticsearch
    点解分别安装java环境:
    yum install -y java-1.8.0-openjdk
    1. 安装

     mv elk软件包  elk

     cd elk

     rpm -ivh elasticsearch-5.5.0.rpm

    1. 配置

    node1:

    vim /etc/elasticsearch/elasticsearch.yml

    cluster.name:my-elk-cluster  //集群名称   

    node.name:node1 //节点名字

    path.data:/var/lib/elasticsearch  //数据存放路径

    path.logs: /var/log/elasticsearch/  //日志存放路径

    bootstrap.memory_lock:false //在启动的时候不锁定内存

    network.host:0.0.0.0  //提供服务绑定的IP地址,0.0.0.0代表所有地址

    http.port:9200 //侦听端口为9200
    discovery.zen.ping.unicast.hosts:【"node1","node2"】 //群集发现通过单播实现

    node2节点安装

    scp把配置文件传到node2节点

    更改节点名称

    配置完成保存退出重启服务并查看

    网页测试

    1. 查看集群健康状态:

    http://192.168.115.3:9200/_cluster/health

    在node1安装elasticsearch-head插件

    cd elk

    tar xf node-v8.2.1.tar.gz

    cd node-v8.2.1

    ./configure && make -j4 && make install

    拷贝命令

    cd elk

    tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2
    cd phantomjs-2.1.1-linux-x86_64/bin
    cp phantomjs  /usr/local/bin

    安装elasticsearch-head
    cd elk
    tar xf elasticsearch-head.tar.gz 
    cd elasticsearch-head
    npm install

    修改elasticsearch配置文件
    vim /etc/elasticsearch/elasticsearch.yml
     # Require explicit names when deleting indices:
    #
    #action.destructive_requires_name:true 
    http.cors.enabled: true  //开启跨域访问支持,默认为false
    http.cors.allow-origin: "*"  //跨域访问允许的域名地址

    重启服务: systemctl restart elasticsearch

    启动elasticsearch-head

    cd /root/elk/elasticsearch-head

    npm run start &

    查看监听: netstat -anput | grep :9100

    访问:

    http://192.168.115.3:9100

    测试

    在node1的终端中输入:

    curl -XPUT 'http://192.168.115.3:9200/index-demo/test/1?pretty' -H 'Content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

    刷新浏览器可以看到对应信息即可

    node1服务器安装logstash

    cd  elk

    rpm -ivh logstash-5.5.1.rpm

    systemctl start logstash.service

    ln -s /usr/share/logstash/bin/logstash  /usr/local/bin/

    测试1: 标准输入与输出

     logstash -e 'input{ stdin{} }output { stdout{} }'

    测试2: 使用rubydebug解码

    logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug }}'

    测试3:输出到elasticsearch

    logstash -e 'input { stdin{} } output { elasticsearch{ hosts=>["192.168.115.3:9200"]} }'

      查看结果:

    http://192.168.115.3:9100

    若看不到,请刷新!!!

    • logstash日志收集文件格式(默认存储在/etc/logstash/conf.d)

    Logstash配置文件基本由三部分组成:input、output以及 filter(根据需要)。标准的配置文件格式如下:

    input (...)  输入

    filter {...}   过滤

    output {...}  输出

    在每个部分中,也可以指定多个访问方式。例如,若要指定两个日志来源文件,则格式如下:

    input {

    file{path =>"/var/log/messages" type =>"syslog"}

    file { path =>"/var/log/apache/access.log"  type =>"apache"}

    }

    案例:通过logstash收集系统信息日志

    chmod o+r /var/log/messages

    vim /etc/logstash/conf.d/system.conf【自定义】

    input {

    file{

    path =>"/var/log/messages" 

    type => "system"

    start_position => "beginning"

    }

    }

    output {

    elasticsearch{

    hosts =>["192.168.1.1:9200"]

    index => "system-%{+YYYY.MM.dd}"

    }

    }

    重启日志服务: systemctl restart logstash

    查看日志: http://192.168.114.3:9100​​​​​​   

    node1节点安装kibana

    cd elk

    rpm -ivh kibana-5.5.1-x86_64.rpm

    配置kibana

    vim /etc/kibana/kibana.yml

    server.port:5601  //Kibana打开的端口

    server.host:"0.0.0.0" //Kibana侦听的地址

    elasticsearch.url: "http://192.168.115.3:9200"  

    //和Elasticsearch 建立连接

    kibana.index:".kibana"  //在Elasticsearch中添加.kibana索引

    启动kibana

    systemctl start kibana

    访问kibana :

    http://192.168.115.3:5601

    首次访问需要添加索引,我们添加前面已经添加过的索引:system-*

    企业案例:

    收集httpd访问日志信息

    在httpd服务器上安装logstash,参数上述安装过程,可以不进行测试

    logstash在httpd服务器上作为agent(代理),不需要启动

    编写httpd日志收集配置文件

    vim /etc/logstash/conf.d/httpd.conf

    input {

    file{

    path=>"/var/log/httpd/access_log" //收集Apache访问日志

    type => "access" //类型指定为 access

    start_position => "beginning" //从开始处收集

    }

    output{

    elasticsearch {

    hosts =>["192.168.115.3:9200"] // elasticsearch 监听地址及端口

    index =>"httpd_access-%{+YYYY.MM.dd}" //指定索引格式

    }

    }

    使用logstash命令导入配置:

    logstash -f  /etc/logstash/conf.d/httpd.conf

    使用kibana查看即可! http://192.168.115.3:5601   查看时在mangement选项卡创建索引httpd_access-*  即可!

  • 相关阅读:
    Unity粒子系统ParticleSystem各模块及其参数学习
    如何写出一篇好的A-Level历史 essay?
    H5组件Canvas画电子印章
    探索电子元器件商城:从原型到批量生产的选择
    Isaac-gym(5):关于强化学习
    ICML 2017: 基于卷积的Seq2Seq解决方案
    东方博宜OJ——1163 - 相加之和最大,并给出它们的起始位置
    汇编语言(5)寄存器(内存访问)
    js 继承内置类型 之 洗牌算法
    在北京多有钱能称为富
  • 原文地址:https://blog.csdn.net/mengjialiang2002/article/details/132585116