ELK日志分析系统

背景介绍

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

本文介绍的是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日志分析系统)