ELK+Filebeat+Kafka+Zk日志收集分析统计系统

摘要

通过日志分析解决系统故障,是发现问题的主要手段。日志包含多种类型,包括程序日志,系统日志以及安全日志等等。通过对日志进行分析,可以预防故障的发生,又可以在故障发生时,寻找到蛛丝马迹,快速定位故障点,及时解决问题。

在分布式系统下,假如一个后端服务部署了几十个节点,这时候你想要查看日志、分析日志就会异常麻烦,所以非常需要这样一个专门收集各个系统日志的平台,对于这个场景,业界最受欢迎的应该就是这个elk的解决方案了。

组件介绍

Filebeat

隶属于Beats,轻量级数据收集引擎。基于原先Logstash-forwarder的源码改造出来。换句话说:Filebeat就是新版的Logstash-forwarder,也会是ELK Stack在Agent的第一选择

KafKa

数据缓冲队列。作为消息队列解耦了处理过程,同时提高了可扩展性。具有峰值处理能力,使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃.(因为日志量非常庞大,所以采用kafka异步收集日志)

Zookeeper

ZooKeeper是一个分布式协调服务,它的主要作用是为分布式系统提供一致性服务,提供的功(Kafka的运行依赖它)

logstash

主要是用来日志的搜索、分析、过滤日志的工具。用于管理日志和事件的工具,你可以用它去收集日志、转换日志、解析日志并将他们作为数据提供给其它模块调用,例如搜索、存储等

Elasticsearch

是一个基于Lucene的搜索服务器。提供搜集、分析、存储数据三大功能。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便

Kibana

是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图标,为用户提供强大的数据可视化支持,它能够搜索、展示存储在Elasticsearch中索引数据。使用它可以很方便的使用图表、表格、地图展示和分析数据

环境搭建

Filebeat安装

  1. 将filebeat-6.6.0-linux-x86_64.tar.gz传到应用服务器上(每个应用服务器都需要配一个fileBeat)

  2. 解压filebeat-6.6.0-linux-x86_64.tar.gz到指定文件

tar -zxvf filebeat-6.6.0-linux-x86_64.tar.gz -C /home/app
  1. 去除filebeat.yml的分组权限
chmod go-w /home/app/filebeat-6.6.0-linux-x86_64/filebeat.yml
  1. 进入filebeat-6.6.0-linux-x86_64文件夹修改fileBeat.yml配置文件
vim /home/app/filebeat-6.6.0-linux-x86_64/filebeat.yml

打开按照如下编辑(注意冒号后面要有空格,不然会报错)

filebeat.inputs:
-type: log
 enabled: true
 paths:
   - /home/application/gateway.log    #应用的日志路径
 fields:
    type: gateway     #区分不同应用的日志一般按应用名称来取
 fields_under_root: true
 multiline.pattern: '^[0-9]{4}[0-9]{2}[0-9]{2}'  #错日日志合并为一行,表达式兼容正则,根据正常日志的前缀来配置
 multiline.negate: true
 multiline. after
-type: log
 enabled: true
 paths:
   - /home/application/sso.log    #应用的日志路径
 fields:
    type: sso     #区分不同应用的日志一般按应用名称来取
 fields_under_root: true
 multiline.pattern: '^[0-9]{4}[0-9]{2}[0-9]{2}'  #错日日志合并为一行,表达式兼容正则,根据正常日志的前缀来配置
 multiline.negate: true
 multiline. after
  1. 启动脚本
nohup /home/app/filebeat-6.6.0-linux-x86_64/filebeat -e -c /home/app/filebeat-6.6.0-linux-x86_64/filebeat.log 2>&1 &
  1. 出现关闭命令界面程序就停止时,需要用命令 exit来退出

KafKa安装

  1. 将kafka_2.12-2.1.1.tgz传到目标服务器上

  2. 解压kafka_2.12-2.1.1.tgz到指定文件

tar -zxvf kafka_2.12-2.1.1.tgz -C /home/app
  1. 进入kafka_2.12-2.1.1/config/修改sever.properties配置文件
vim /home/app/kafka_2.12-2.1.1/sever.properties

修改如下配置

brocker.id=1
advertised.listeners=PLAINTEXT://128.33.18.12:9092 #改为本机的IP端口号用默认的9092
log.dirs=/data/kafka-logs  #设置日志输出目录
  1. 启动脚本
nohup /home/app/kafka_2.12-2.1.1/bin/kafka-sever-start.sh /home/app/kafka_2.12-2.1.1/kafka.log 2>&1 &

Zookeeper安装

  1. 将zookeeper.3.14.13.tar.gz传到目标服务器上

  2. 解压zookeeper.3.14.13.tar.gz到指定文件

tar zookeeper.3.14.13.tar.gz -C /home/app
  1. 创建配置文件
cp zoo_sample.cfg zoo.cfg
  1. 编辑配置文件
dataDir=/usr/local/zookeeper/data  #配置ZK的数据目录
clientPort=2181                 #用于接收客户端请求的端口号
dataLogDir=/usr/local/zookeeper/logs  #配置ZK的日志目录
  1. 启动脚本
./zkSever.sh start 

logstash安装

  1. 将logstash-6.6.0.tar.gz传到目标服务器上

  2. 解压logstash-6.6.0.tar.gz到指定文件

tar logstash-6.6.0.tar.gz -C /home/app
  1. 配置文件jvm.options文件
vim /home/app/logstash-6.6.0/config/jvm.options

配置如下属性

-Xms:256
-Xmx:256
  1. 修改主配置文件
vim /home/app/logstash-6.6.0/config/logstash.conf

数据源配置

input {
    kafka{
        boostrap_severs => "128.33.18.12:9092"
        topics => ["test"] #消息主题配置
        group_id => "logstash"
        codec => "json"
    }
}

过滤器配置

filter {
    if[type] == "sso" { #对应filebeat设置的type
        grok{   #由于存入es中的@timestamp的时间是logstash的消费时间,这里设置过滤,把它改成日志里日志产生的时间
            match => {"message" => "(?<datetime>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})"}
        }
        date{
            match => ["datetime","yyyy-MM-dd HH:mm:ss"]
            target => "的@timestamp"
        }
        mutate{ #过滤存入es中的字段
            remove_field => ["beat","beat","offset","source","input","log","prospector","@version","ecs","agent","datetime"]
        }
    }
}

输出配置

output{
     if[type] == "sso" { 
        elasticsearch{
            hosts => ["128.33.18.12:9200"]
            index => "%{YYYY-MM-dd}" #这里按日期索引
        }
     }
}
  1. 启动脚本
nohup /home/app/logstash-6.6.0/bin/logstash -f /home/app/logstash-6.6.0/logstash.log 2>&1 &

Elasticsearch安装

  1. 将elasticsearch-6.6.0.tar.gz传到目标服务器上

  2. 将elasticsearch-6.6.0.tar.gz到指定文件

tar 将elasticsearch-6.6.0.tar.gz -C /home/app
  1. 修改系统配置参数(需要root用户)
vim /etc/security/limits.conf

修改如下配置

    *         soft    nofile          65536
    *         hard    nofile          65536
    *         soft    nproc           4096
    *         hard    nproc           4096

修改内核参数

vim /etc/sysctl.conf

按如下修改

vm.max_map_count=655360

让命令修改生效

sysctl -p
  1. 修改主配置文件
vim /home/app/elasticsearch-6.6.0/config/elasticsearch.yml 

按如下修改

path.data: /home/app/elasticsearch-6.6.0/data
path.logs: /home/app/elasticsearch-6.6.0/logs
network.host: 0.0.0.0
http.port: 9200
node.name: es-node1
cluster.initial_master_nodes: ["es-node1"]
vim /home/app/elasticsearch-6.6.0/config/jvm.options

按如下修改

-Xms2g
-Xmx2g
  1. 启动脚本
./elasticsearch -d

Kibana安装

  1. 将kibana-6.6.0.tar.gz传到目标服务器上

  2. 将kibana-6.6.0.tar.gz到指定文件

tar 将kibana-6.6.0.tar.gz -C /home/app
  1. 修改配置文件
vim /home/app/将kibana-6.6.0/config/kibana.yml 

按如下修改

#提供服务的端口,监听端口
server.port: 5601
#主机地址,可以是ip,主机名
server.host: 128.33.18.12
#kibana访问es服务器的URL,就可以有多个,以逗号","隔开
elasticsearch.hosts: ["http://128.33.18.12:9200"]
#中文配置
i18n.locale: "zh-CN" 
  1. 启动脚本
nohup /home/app/kibana-6.6.0/bin/kibana /home/app/kibana-6.6.0/kibana.log 2>&1 &
  1. 进入管理界面http://128.33.18.12:5601查看日志
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的架狗师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值