ELK部署-Beats

概述

简介

        最开始的架构中,由 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=*&[email protected]:desc

error: Content is protected !!