基于ELK的日志收集分析系统(Elasticsearch+Filebeat+Kibana)

前言

痛点:

传统意义上,查找日志都是通过shell等工具登陆服务器后台去相应的日志目录下查看log文件,特别是联调、测试时,我们需要通过tail -f 、grep 'xxx’等命令,肉眼观察日志,如果是一个复杂的业务流程,则需要辗转多个日志目录下,并且没有统计分析等功能。

思考:

对于我们的业务系统,现在已经存在了一套日志收集系统(syslog+flume+kafka+elasticsearch),但是是基于核心业务,收集的都是需要做分析统计和机器学习的业务日志,对于研发人员来说,需要关心的是程序运行时log文件的日志。本着不影响核心业务的原则(如果也用flume接入log文件日志有影响业务的风险),所以笔者调研了现在主流的ELK,本文将快速部署一套供研发人员使用的日志搜索系统,即装即用,非常轻量级。

ELK:

ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案,是三个产品的首字母缩写,分别是ElasticSearch、Logstash 和 Kibana,整个ELK生态圈有很多周边插件,而Logstash因为太重量级,启动需要占用大量内存资源,并且侧重于分析过滤格式化,可以和flume进行替换,对于简单的日志收集,官网出了一个更轻量级的替代产品filebeat,也是官方推荐使用。官网传送门 https://www.elastic.co/cn/

原理:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qoKTV6cf-1595242363957)(http://www.luran.name/upload/3106ab12091c4557a8c4f28e8850eee6_313.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fc2ZvRzG-1595242363960)(http://www.luran.name/upload/f4bcd8f66187401dab073a48f03fbb2b_1231.png)]
(图片来源)

搭建ELK

一、Elasticsearch安装配置:

1、下载地址:

https://www.elastic.co/cn/downloads/elasticsearch,3个组件需要版本一致

tar -vxf elasticsearch-7.5.1.tar.gz   
2、配置文件:

打开**/config/elasticsearch.yml**

#ip
network.host: ***.***.*.**
#端口
http.port: 9200
#主要用于集群配置,可以先放开,不打开会报错,后边具体说;ES名称,多台服务器配置名称不可相同
node.name: node-1
cluster.initial_master_nodes: ["node-1"]
3、启动:

ES默认不能用root启动,需新增一个用户,adduser esuser ,su esuser

进入bin目录,执行./elasticsearch &

4、验证

访问http://ip:9200,返回数据则启动成功

二、Filebeat安装配置:

1、下载地址:

https://www.elastic.co/cn/downloads/beats/filebeat

tar -vxf kibana-7.5.1.tar.gz 
2、配置文件:

进入安装目录下,打开filebeat.yml

注释:在inputs中配置了两个目录的.log文件,在output中也配置了两个会在es中产生的index

#=========================== Filebeat inputs =============================
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/ida/ida-osquery-service/*.log
  multiline.pattern: '^[[:space:]]+(at|\.{3})\b|^Exception|^Caused by'
  multiline.negate: false
  max_lines: 20
  multiline.match: after
  document_type: "osquery"
  tags: ["osquery"]
  fields:
    type: 'osquery'
    
- type: log
  enabled: true
  paths:
    - /var/log/ida/ida-restful-api/*.log
  multiline.pattern: '^[[:space:]]+(at|\.{3})\b|^Exception|^Caused by'
  multiline.negate: false
  max_lines: 20
  multiline.match: after  
  document_type: "restful"
  tags: ["restful"]
  fields:
    type: 'restful'
#================================ Outputs =====================================
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
  hosts: ["ip:9200"]
  indices:
    - index: "osquery-%{+yyyy.MM.dd}"
      when.equals:
        fields.type: "osquery"
    - index: "restful-%{+yyyy.MM.dd}"
      when.equals:
        fields.type: "restful"

3、启动:
/usr/local/filebeat-7.5.1-linux-x86_64/filebeat -e -c /usr/local/filebeat-7.5.1-linux-x86_64/filebeat.yml -d "publish" &
4、验证:
ps -aux|grep filebeat

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ibkb2PTh-1595242363963)(C:\Users\luran\AppData\Roaming\Typora\typora-user-images\1579251063597.png)]
有进程在说明启动成功

三、Kibana安装配置:

1、下载地址:

https://www.elastic.co/cn/downloads/kibana

tar -vxf kibana-7.5.1.tar.gz 
2、配置文件:
server.host: "ip"
elasticsearch.hosts: ["http://ip:9200"]
i18n.locale: "zh-CN"
3、启动

kibana默认不允许root启动,后面加上 --allow-root &

/usr/local/kibana-7.5.1-linux-x86_64/bin/kibana --allow-root &

4、验证

kibana会监听5601端口,访问http://ip:5601

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S6fsle98-1595242363966)(http://www.luran.name/upload/f6162c856e884c9dae45b4c92d7de938_1579251558240.png)]

四、开始启用

首先需要创建索引模式,需要关注filebeat的配置文件

1、创建索引模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m7JzFG2K-1595242363967)(http://www.luran.name/upload/7111df7b6b67494887d7afcd8a4b20b7_1579251751084.png)]

自动匹配到filebeat中创建的index

2、查询日志

模拟产生一条日志,在搜索栏输入关键字,效果如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tH2NJt9G-1595242363969)(http://www.luran.name/upload/8e718b6007f148d9ada1c541a09b1330_1579251922110.png)]

3、索引管理

在filebeat中配置了index的名字,osquery-%{+yyyy.MM.dd},会每天自动生成一个ES索引日志文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IarjlSV4-1595242363971)(http://www.luran.name/upload/125d5727c02d4c41a7acf9dbde876561_1579251970390.png)]

五、总结

至此,基于ELK的日志搜索系统搭建完成,10分钟落地启用,告别传统的去服务器目录下查log文件的方式,拥抱新技术。下一篇将分享笔者是怎么一键部署ELK的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值