什么是ELK

E: Elasticsearch全文搜索引擎

L: logstash日志采集工具

K: kibana ES的可视化工具

ELK是当今业界非常流行的日志采集保存和查询的系统

我们编写的程序,会有很多日志信息,但是日志信息的保存和查询是一个问题

IDEA控制台是一个临时显示的位置,我们可以将它保存在文件中

但是即使保存在文件中,海量日志信息想要查询需要的条目也是问题

所以我们使用ELK来保存

为什么需要ELK

保存并能够快速便捷的查询查看日志信息就是新出现的需求了

ELK这个组合可以完成这个任务

ES负责将日志信息保存,查询时可以按关键字快速查询

利用logstash这个软件可以监听一个文件,将这个文件中出现的内容经过处理发送到指定端口

我们就可以监听我们程序输出的日志文件,然后将新增的日志信息保存到ES中

Kibana来负责进行查询和查看结果

与ELK有类似效果的日志管理工具还有一套叫链路追踪

Logstash

什么是Logstash

Logstash是一款开源的日志采集,处理,输出的软件,每秒可以处理数以万计条数据,可以同时从多个来源采集数据,转换数据,然后将数据输出至自己喜欢的存储库中(官方推荐的存储库为ES)




ELK日志 架构 elk日志存储_elk


上面图片的数据源可以是任何产生数据的介质: 数据库,Redis,Java的日志文件均可

输出目标一般也是能够保存数据的媒体: 数据库,Redis,ES等

Logstash内部有3个处理数据的步骤:

  1. input将数据源的数据采集到Logstash
  2. filter(非必要)如果需要可以对采集到的数据进行处理
  3. output将处理好的数据保存到目标(一般就是ES)

其中采集数据的方法比较多样,还支持各种插件

Logstash实现数据库和ES数据的同步

实现原理

我们可以配置logstash监听数据库中的某个表

一般设计为监听表中数据的变化,在规范的数据表中,logstash可能监听gmt_modified列

只要gmt_modified列有变化,就收集变化的数据行,将这行数据的信息更新到ES