ELK扩展:使用Beats收集其他服务器上的日志
一、logstash与beats
由于Logstash在数据收集上并不出色,而且作为agent,性能并不达标。elastic发布了beats系列轻量级采集组件。至此,elastic形成了一个完整的生态链和技术栈,成为大数据市场的佼佼者
二、什么是beats
beats 是一个使用 Golang 构建的平台,libbeat 是其核心库,用来提供API进行与Elasticsearch,Logstash 的连接,还能配置输入特性和实现信息收集等工作。其中封装一个输出模块(Publisher),输出模块可以负责将收集到的数据发送给 Logstash 或者 Elasticsearch。由于 go 语言设计有 channel,收集数据的逻辑代码与 Publisher 都是通过 channel 通信的,耦合度的最低的。因此,开发一个收集器,完全不需要知道Publisher 的存在,程序运行的时候自然就“神奇”的把数据发往服务端了。除此之外,还封装了配置文件处理、日志处理、守护化等功能,方便开发者拓展 beats 的能力。
Beats 是一组轻量级采集程序的统称,我们通常常用的几个如下:
- filebeat: 进行文件和目录采集,主要用于收集日志数据。
- metricbeat: 进行指标采集,指标可以是系统的,也可以是众多中间件产品的,主要用于监控系统和软件的性能。
- packetbeat: 通过网络抓包、协议分析,对一些请求响应式的系统通信进行监控和数据收集,可以收集到很多常规方式无法收集到的信息。
- Winlogbeat: 专门针对 windows 的 event log 进行的数据采集。
- Heartbeat: 系统间连通性检测,比如 icmp, tcp, http 等系统的连通性监控。
- 可以通过 beats 生成器来生成自己的 beats
三、filebeat下载及配置
由于logstash只能收集本机日志,故在其他机器上搭建filbeat,将日志发送给logstash
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.7.1-linux-x86_64.tar.gz
tar xzvf filebeat-6.7.1-linux-x86_64.tar.gz
打开filebeat.yml文件,配置input
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
#- c:\programdata\elasticsearch\logs\*
filebeat可将日志输出到logstash
#----------------------------- Logstash output --------------------------------
output.logstash:
hosts: ["127.0.0.1:5044"]
配置logstash接收文件,
input {
beats {
port => "5044"
}
}
也可以输出到es和kibana
output.elasticsearch:
hosts: ["myEShost:9200"]
username: "filebeat_internal"
password: "YOUR_PASSWORD"
setup.kibana:
host: "mykibanahost:5601"
username: "my_kibana_user"
password: "YOUR_PASSWORD"
四、filebeat启动
sudo chown root filebeat.yml
sudo ./filebeat -e