美文网首页
ELK日志分析系统

ELK日志分析系统

作者: 番茄不爱炒鸡蛋 | 来源:发表于2019-10-15 14:17 被阅读0次

    背景介绍

           随着软件行业的发展,软件系统的生产部署结构日趋复杂。对于一个分布式的系统,同一应用通常部署在不同的节点上,通过负载均衡的方式将请求分发到各个不同的节点进行处理。此时就会相对增加生产运维的复杂度,在进行问题查询的时候很难判断本次请求是在哪台机器上执行的,也就无法快速的对日志进行查询从而定位问题,因此,就需要对日志进行统一的处理和分析,以便方便开发和运维人员的问题处理速度。

    本文介绍的是elastic stack开源的ELK组件,主要包括elasticsearch(简称es),logstash,kibana三个核心组件。
    es是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能,对外提供REST和java api,可扩展性的分布式系统。
    Logstash是一个用来搜集、分析、过滤日志的工具,几乎支持所有类型的日志,能够接收多种来源的日志,包括syslog、mq,并且能够输出到多种介质中,包括es,邮件等等。
    Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户定制仪表板视图,还允许用户使用es语法进行操作。

    ELK初版部署结构图

    但是,在实际使用的过程中发现,logstash会占用很多系统资源,因此决定加入一个更轻量的日志收集组件(也是elastic stack的组件之一)filebeat。因此在加入filebeat之后,整个部署架构变成了如下图所示。


    ELK第二版部署结构图

    部署步骤

    1.准备工作(ELK 三个组件必须使用同一个版本,其他边缘组件可以不使用)

    安装包:
        elasticsearch-6.6.2.tar.gz
        kibana-6.6.2-linux-x86_64.tar.gz
        logstash-6.6.2.tar.gz
        filebeat-6.6.0-linux-x86_64.tar.gz
        jdk-8u192-linux-x64.tar.gz
    机器:
        192.168.45.174,192.168.45.175,192.168.45.176(ES集群)
        192.168.45.2(logstash,kibana)
        192.168.45.136(应用服务器,安装filebeat)

    2.开始安装ES集群

       注(1):由于ELK组件都是使用java开发的,因此需要安装1.8以上版本的jdk
          jdk的安装方法:https://www.cnblogs.com/kuoAT/p/7555298.html
       注(2):Elasticsearch不能使用root用户运行,需要单独创建用户
    1)为es创建一个目录

    mkdir elasticsearch
    

    2)创建一个elk用户,并为elk用户授权elasticsearch目录

    groupadd elk
    useradd elk -g elk -p elk
    chown -R elk:elk elasticsearch
    

    3)上传es的安装包,并解压到elasticsearch目录

    tar -zxvf elasticsearch-6.6.2.tar.gz
    

    4)切换到root用户,修改以下文件

    vi /etc/security/limits.conf
     添加如下四行
    @elk hard nofile 65536
    @elk soft nofile 65536
    @elk  hard    nproc    4096
    @elk  soft     nproc    4096
    vi /etc/sysctl.conf
     添加以下内容
    vm.max_map_count=655360
    

    5)执行sysctl –p ,使配置生效
    6)切换回elk用户,进入 elasticsearch/config/目录下,修改es的配置文件elasticsearch.yml

      cluster.name: my-application
      node.name: node-1
      node.master: true
      node.data: true
      path.data: elasticsearch/data
      path.logs: elasticsearch/logs
      network.host: 192.168.45.174
      http.port: 9200
      discovery.zen.ping.unicast.hosts: ["192.168.45.174", "192.168.45.175","192.168.45.176"]  // 配置ES集群各个节点
      discovery.zen.minimum_master_nodes:2  // 防止脑裂
    
    3.开始安装filebeat

    1)将filebeat上传到要进行日志收集的服务器上192.168.45.136,并解压

    tar -zxvf filebeat-6.6.0-linux-x86_64.tar.gz
    

    2)修改配置文件

    vi filebeat-6.6.0-linux-x86_64/filebeat.yml
    

    a. 修改其中的enabled为true,并配置paths(要收集的日志路径,可以使用* 代替)。也可以根据exclude_lines和include_lines来做一些过滤日志的行为。

    filebeat.yml

    b. filebeat的配置文件路径,以及是否允许重新加载配置文件。并设置索引的分片数量

    filebeat.yml

    c. 配置kibana地址


    filebeat.yml

    d. 配置logstash地址

    filebeat.yml
    4.开始安装logstash

    1)将logstash安装包上传到192.168.45.2服务器并解压
    tar -xvf logstash-6.6.2.tar.gz
    2)修改logstash输入输出的配置文件logstash-sample.yml
    a.input中配置filebeat的监听端口
    b.filter中可以增加过滤条件对所有或者指定索引进行过滤
    c.output中可以配置filebeat输出之后的索引


    logstash-sample.yml
    5.开始安装kibana

    1)将kibana安装包kibana-6.6.2-linux-x86_64.tar.gz上传到192.168.45.2,并解压
    tar -xvf kibana-6.6.2-linux-x86_64.tar.gz
    2)修改配置文件

      vi kibana-6.6.2-linux-x86_64/config/kibana.yml
      修改下列内容
      server.port:5601
      server.host:"192.168.45.2"
      elasticsearch.host:["http://192.168.45.174", "192.168.45.175","192.168.45.176"]
    
    6.分别启动ES集群,logstash,filebeat,kibana

    1)分别在对应的bin目录下执行下列操作

      nohup ./elasticsearch >elasticsearch.log 2>&1 &    //ES启动服务
      nohup ./logstash >logstash.log 2>&1 &    //logstash启动服务
      nohup ./filebeat -e -c filebeat.yml >filebeat.log 2>&1 &    // filebeat启动服务
      nohup ./kibana >kibana.log 2>&1 &   //kibana启动服务
    

    2)启动后可以在浏览器中输入192.168.45.2:5601来进入kibana界面进行日志查询


    kibana查询界面

    相关文章

      网友评论

          本文标题:ELK日志分析系统

          本文链接:https://www.haomeiwen.com/subject/cheructx.html