• 【ELK日志收集系统】


    目录

    一、概述

    1.作用

    2.为什么使用?

    二、组件

    1.elasticsearch

    1.1 作用

    1.2 特点

    2.logstash

    2.1 作用

    2.2 工作过程

    2.3 INPUT

    2.4 FILETER

    2.5 OUTPUTS

    3.kibana

    三、架构类型

    1.ELK

    2.ELKK

    3.ELFK

    4.ELFKK

    四、案例 - 构建ELK集群

    1.环境配置

    2.安装node1与node2节点的elasticsearch

    2.1 安装

    2.2 配置

    2.3 启动elasticsearch服务

    2.4 查看节点信息

    3.在node1安装elasticsearch-head插件

    3.1 安装node

    3.2 拷贝命令

    3.3 安装elasticsearch-head

    3.4 修改elasticsearch配置文件

    3.5 启动elasticsearch-head

    3.6 访问

    3.7 在node1的终端中输入:

    4.node1服务器安装logstash

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

    ​编辑

    6.node1节点安装kibana

    7.企业案例


    一、概述

    ELK由三个组件构成

    1.作用

    • 日志收集
    • 日志分析
    • 日志可视化

    2.为什么使用?

    • 日志对于分析系统、应用的状态十分重要,但一般日志的量会比较大,并且比较分散。
    • 如果管理的服务器或者程序比较少的情况我们还可以逐一登录到各个服务器去查看、分析。但如果服务器或者程序的数量比较多了之后这种方法就显得力不从心。基于此,一些集中式的日志系统也就应用而生。目前比较有名成熟的有,Splunk(商业)、FaceBook 的Scribe、Apache的Chukwa Cloudera的Fluentd、还有ELK等等。

    二、组件

    1.elasticsearch

    1.1 作用

    • 日志分析
    • 开源的日志收集、分析、存储程序

    1.2 特点

    • 分布式
    • 零配置
    • 自动发现
    • 索引自动分片
    • 索引副本机制
    • Restful风格接口
    • 多数据源
    • 自动搜索负载

    2.logstash

    2.1 作用

    • 日志收集
    • 搜集、分析、过滤日志的工具

    2.2 工作过程

    • 一般工作方式为c/s架构,Client端安装在需要收集日志的服务器上,Server端负责将收到的各节点日志进行过滤、修改等操作,再一并发往Elasticsearch上去
    • Inputs → Filters → Outputs
    • 输入-->过滤-->输出

    2.3 INPUT

    • File:从文件系统的文件中读取,类似于tail -f命令
    • Syslog:在514端口上监听系统日志消息,并根据RFC3164标准进行解析
    • Redis:从redis service中读取
    • Beats:从filebeat中读取

    2.4 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.5 OUTPUTS

    • Elasticsearch:可以高效的保存数据,并且能够方便和简单的进行查询。
    • File:将Event数据保存到文件中。
    • Graphite:将Event数据发送到图形化组件中,踏实一个当前较流行的开源存储图形化展示的组件。

    3.kibana

    • 日志可视化
    • 为Logstash和ElasticSearch在收集、存储的日志基础上进行分析时友好的Web界面,可以帮助汇总、分析和搜索重要数据日志。

    三、架构类型

    1.ELK

    es
    logstash
    kibana

    2.ELKK

    es
    logstash
    kafka
    kibana

    3.ELFK

    es
    logstash        重量级、占用系统资源较多
    filebeat          轻量级、占用系统资源较少
    kibana

    4.ELFKK

    es
    logstash
    filebeat
    kafka
    kibana

    四、案例 - 构建ELK集群

    1.环境配置

    设置各个主机的IP地址为拓扑中的静态IP,在两个节点中修改主机名为node1和node2并设置hosts文件

    node1:

    hostnamectl set-hostname node1

    bash

    vim /etc/hosts

    192.168.42.3  node1

    192.168.42.4  node2

    node2:

    hostnamectl set-hostname node2

    bash

    vim /etc/hosts

    192.168.42.3  node1

    192.168.42.4  node2

            

    2.安装node1与node2节点的elasticsearch

    2.1 安装

      mv elk-apppack elk

      cd elk

    rpm -ivh elasticsearch-5.5.0.rpm

    2.2 配置

    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:

    vim /etc/elasticsearch/elasticsearch.yml

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

    node.name:node2 //节点名字

    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"】 //群集发现通过单播实现

    2.3 启动elasticsearch服务

    node1和node2

    systemctl start elasticsearch

    2.4 查看节点信息

      http://192.168.42.3:9200

    http://192.168.42.4:9200

    3.在node1安装elasticsearch-head插件

    3.1 安装node

    cd elk

    ls

    tar xf node-v8.2.1.tar.gz

    cd node-v8.2.1

    ./configure && make && make install

    3.2 拷贝命令

    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

    3.3 安装elasticsearch-head

    cd elk

    tar xf elasticsearch-head.tar.gz

    cd elasticsearch-head

    npm install

    3.4 修改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

    3.5 启动elasticsearch-head

    cd /root/elk/elasticsearch-head

    npm run start &

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

    3.6 访问

    http://192.168.42.3:9100

    3.7 在node1的终端中输入:

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

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

    4.node1服务器安装logstash

    cd elk

    rpm -ivh logstash-5.5.1.rpm

    systemctl start logstash.service

    In -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.42.3:9200"]} }'

      查看结果:

    http://192.168.42.3:9100

    5.ogstash日志收集文件格式(默认存储在/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.42.1:9200"]

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

    }

    }

    重启日志服务: systemctl restart logstash

    查看日志: http://192.168.42.3:9100

    6.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.42.3:9200"  

    //和Elasticsearch 建立连接

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

    启动kibana

    systemctl start kibana

    访问kibana :

    http://192.168.42.3:5601

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

    7.企业案例

    收集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.42.3:9200"] // elasticsearch 监听地址及端口

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

    }

    }

    使用logstash命令导入配置:

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

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

  • 相关阅读:
    C++字符串详解
    力扣二叉树调试工具类——根据力扣数组输入形式的二叉树构造真正的二叉树
    (SpringBoot)第一章:Spring基本概念和核心思想
    文件I/O与标准I/O
    HTTP头部信息解释分析(详细整理)(转载)
    图书管理系统(SpringBoot+SpringMVC+Mybatis)
    园子的脱困努力-云厂商合作:领取阿里云免费ECS试用资源,部署Java Web环境,送小礼品
    Docker镜像仓库搭建(本地镜像推到阿里云)
    【vue2+avue】实现文件上传 技术栈用的是kkfileview
    GET 和 POST的区别
  • 原文地址:https://blog.csdn.net/2301_78349847/article/details/132562562