概述
简介
最开始的架构中,由 Logstash 承担数据采集器和过滤功能,并部署在应用服务器。由于 Logstash 对大量日志进行过滤操作,会消耗应用系统的部分性能,带来不合理的资源分配问题;另一方面,过滤日志的配置,分布在每台应用服务器,不便于集中式配置管理。
由于 Beats 的系统性能开销更小,所以应用服务器性能开销可以忽略不计;另一方面,Beats 可以作为数据采集插件形式工作,可以按需启用 Beats 下不同功能的插件,更灵活,扩展性更强。例如,应用服务器只启用 Filebeat,则只收集日志文件数据,如果某天需要收集系统性能数据时,再启用 Metricbeat 即可,并不需要太多的修改和配置。
Beats有很多种类可供下载使用:https://www.elastic.co/cn/downloads/beats/。
Filebeat
Filebeat是用于转发和集中日志数据的轻量级传送工具。Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。
Filebeat的工作方式如下:启动Filebeat时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。对于Filebeat所找到的每个日志,Filebeat都会启动收集器。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到libbeat,libbeat将聚集事件,并将聚集的数据发送到为Filebeat配置的输出。
下载
官方地址:https://www.elastic.co/cn/downloads/beats/filebeat。
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.16.2-linux-x86_64.tar.gz
其内部主要是二进制程序”filebeat”,不依赖于JDK环境;同时压缩包里也提供了大量的日志收集配置可供使用。
解压并配置
tar zxf filebeat-7.16.2-linux-x86_64.tar.gz -C /usr/local/ mv /usr/local/filebeat-7.16.2-linux-x86_64/ /usr/local/filebeat groupadd -g 85 es useradd -g es -u 85 -s /sbin/nologin -d /usr/local/filebeat -c "Elastic Stack" -M es chown -R es.es /usr/local/filebeat
Tips: 注意创建收集日志主机上es用户。
测试收集
filebeat发送到es
为了测试简单,手动模拟日志生成:
echo "something1 - something2" >> /tmp/test1.log echo "something2 - something1" >> /tmp/test2.log
这样就有两个日志文件了。
新建一个filebeat配置文件:
cd /usr/local/filebeat/ vim test.yml
filebeat.inputs: - type: log paths: - /tmp/test1.log tags: ["test1"] document_type: test1 - type: log paths: - /tmp/test2.log tags: ["test2"] document_type: test2 output.elasticsearch: hosts: ["192.168.220.31:9200"]
配置说明:
- type 日志类型,默认log
- input_type输入类型,默认log
- paths 采集的日志路径,可使用通配符,支持多个
- tags 自定义标签,是个数组
- document_type 自定义字段,用于Logsatsh区分来源,在Logsatsh里用变量type表示
一个 – 表示一个filebeat.inputs,这里设置了2个,日志发送到elasticsearch,索引index是test-filebeat。
运行此配置:
chown es.es test.yml chmod 600 test.yml su - es -s /bin/bash -c "./filebeat -c test.yml"
在Kibana上可以看到传输进es的数据:
在索引管理可以看到其自建了个索引:
也通过curl查询数据:
curl http://127.0.0.1:9200/filebeat-7.16.0-2021.12.08-000001/_search?q=*
可以看到返回的文档json里有一个字段 message ,这个是日志原始内容。filebeat还默认加了一些字段。
filebeat发送到logstash
将日志使用filebeat发送到logstash,然后通过logstash处理后发送到ElasticSearch。
还以上面为例:
vim test.yml
filebeat.inputs: - type: log paths: - /tmp/test1.log tags: ["test1"] document_type: test1 - type: log paths: - /tmp/test2.log tags: ["test2"] document_type: test2 output.logstash: hosts: ["127.0.0.1:5044"]
su - es -s /bin/bash -c "./filebeat -c test.yml" & echo "new msg from 2" >> /tmp/test2.log
在es中查看新进入的数据:
curl http://ES-dn1:9200/filebeat-7.16.0-2021.12.08-000001/_search?q=*&sort=@timestamp:desc