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
    ELK扩展:使用Beats收集其他服务器上的日志_第1张图片

三、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

你可能感兴趣的:(linux环境搭建及软件使用)