ELK
Logstash
开源的流数据处理、转换(解析)和发送引擎,可以采集来自不同数据源的数据,并对数据进行处理后输出到多种输出源。Logstash是ELK Stash的重要组成部分。
工作原理
Logstash的数据处理过程主要包括:Inputs, Filters, Outputs 三部分,如图:
Inputs:用于从数据源获取数据,常见的插件如beats、file、kafka、rabbitmq、log4j、redis等。参考
Filters:筛选器是Logstash管道中的数据处理器,input时会触发事件,触发filter对数据进行transport,即转换解析各种格式的数据,常见的过滤器插件如下:
1 | grok:解析和构造任意文本。是Logstash过滤器的基础,广泛用于从非结构化数据中导出结构 |
Outputs:用于数据输出,常见的插件如:
1 | elasticsearch:最高效、方便、易于查询的存储器,最有选择,官方推荐! |
logstash-sample.yml
官方文档:output
logstash默认集成了beats,所以默认配置推荐使用beats进行日志采集,logstash进行分析。
1 | # ============================== inputs =============================== |
1 | # ================================== Outputs =================================== |
1 | # ================================== filter =================================== |
1 | //输入 message = 55.3.244.1 GET /index.html 15824 0.043 |
1 | #通过查看文件,能够看到logstash提供的封装好的正则表达式 |
1 | #运行 |
Beats
基于golang语言开发,开源的、轻量级的日志收集器的统称。官方文档
特点:
开源:社区中维护了上百个beat,社区地址
轻量级:体积小,功能单一、基于go语言开发,具有先天性能优势,不依赖于Java环境。
高性能:对CPU、内存和IO的资源占用极小。
定位:就功能而言,Beats是弟弟,得益于Java生态优势,Logstash功能明显更加强大。但是Logstash在数据收集上的性能表现饱受诟病,Beats的诞生,其目的就是为了取代Logstash Forwarder 。
官方支持的Beats(下载地址)
Filebeat
文件日志监控采集 ,主要用于收集日志数据,官方使用手册
由于采集日志需要访问日志文件,意味需要将程序和采集的应用程序部署在同一台机器中,Logstash的Inputs和Filter会十分耗费机器性能,十分不合理,所以有了Beats这种轻量级日志收集器。
通过让Beats进行inputs采集日志,经过Http协议传输到logstash中,这样就能使得logstash无需和应用程序部署在同一台机器中,可以用其他机器来承担Logstash的Filter的性能损耗。
filebeat.yml
1 | # ============================== Filebeat inputs =============================== |
1 | //如这个案例,配置组合1 就会把后面的数据追加到第一行,整段作为一个事件 |
1 | //如这个案例,配置组合2 就会把非空格的当做第一行,以空格开头的数据则追加到第一行 |
1 | # ================================== Outputs =================================== |
1 | # ------------------------------ Logstash Output ------------------------------- |
1 | # ------------------------------ console Output ------------------------------- |
1 | 支持的输入类型: |
1 | #运行: |
Filebeat是读取日志是会记录到读取日志的行号,当重启或者删除es的索引,他依旧会从记录的那一行之后开始读,曾经读取过的数据不会再次读取,若想要重新全量读取,则需要去把data
文件夹的数据删除。
Packetbeat
通过网络抓包、协议分析,基于协议和端口对一些系统通信进行监控和数据收集。是一个实时网络数据包分析器,可以将其与Elasticsearch一起使用,以提供应用程序监视和性能分析系统。
1 | 支持的协议: |
1 | #执行: |
最后更新: 2020年12月17日 13:17