filebeat 收集 syslog 并自动归类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了filebeat 收集 syslog 并自动归类相关的知识,希望对你有一定的参考价值。

参考技术A syslog 作为一种通用的日志收集协议,有广泛的应用。强大的 fluentd 可以用来进行日志收集,就是需要安装一个又一个的 ruby 插件,不便于部署。发现 filebeat 越来越成熟,支持的 input 协议和 output 协议很多,也不需要安装额外的插件。

本文介绍使用 filebeat 收集远程Linux 和 思科 网络设备的 syslog,并根据需求写入到 elasticsearch 的 不同的索引中。

filebeat 版本: 7.6
filebeat.yaml

说明: indices 的 条件判断是,从上到下进行,满足哪个条件,日志就会存到相应的索引。
如果所有的条件都不满足,就存到默认的索引里面。
遇到的问题:配置了自定义的 setup.template.name 和默认的 index 可能就无法写入。

额外的配置:
通过 kibana 配置 Index Lifecycle Policies,自动定期清理历史日志。

参考文档:
https://www.elastic.co/guide/en/beats/filebeat/current/elasticsearch-output.html

ES 7.6 默认的 堆内存是 1G,可根据实际内存大小,适当增加
/etc/elasticsearch/jvm.options

filebeat 插件开发

  filebeat是一个轻量的日志收集工具,全套使用go语言开发。

  我目前遇到的问题是,在收集的时候需要对数据进行采样,采样比和采样形式要灵活,因为可能在多个项目会使用到这个日志收集功能。刚开始我仔细研究filebeat的配置,我感觉他自身应该带有采集需求,然而并没有。于是我想着去修改他的源码,这样也很方便。然而这个方案不可行,因为这是一个开源项目,后期如果版本更新,那还得继续修改,这个不灵活。于是我想着用插件的方式,看了下filebeat是支持插件的,但是网上很难找到资料。

  我最终在官网找到了资料,所以我自己按照他的模式写了我自己的采样插件和一个我们业务用的query解析插件。

  filebeat采取的是多个线程同时去读多个文件,每个文件读到数据会被封装为一个event,event经过一系列的processors处理,最终会放在一个队列,这个队列在发送到输出(kafka,es等)
技术图片

下面直接给大家上我写的插件源码:filebeat 插件源码 附加 filebeat源码

插件使用方法:

  1. 下载filebeat的源码
  2. 在beats/libbeat/processors目录下进行插件开发
  3. 在你需要使用的的平台打包 打包命令:go build -buildmode=plugin
  4. 启动filebeat filebeat ---plugin ./myplugin.so,多个插件用多个--plugin
    插件必须在beats/libbeat/processors目录下编译打包,打包和平台有关,mac下打的包,在linux上不能使用

技术图片
我用的整套日志收集方案是:
filebeat+kafka+elastis+kibana

  • filebeat负责收集
  • kafka负责做个缓存;在kafka出来还可以做一些过滤
  • elastic负责存储和搜索
  • kibana负责展示

以上是关于filebeat 收集 syslog 并自动归类的主要内容,如果未能解决你的问题,请参考以下文章

Beats:使用 Linux 系统上的 Rsyslog 收集日志并导入 Elasticsearch

Beats:使用 Linux 系统上的 Rsyslog 收集日志并导入 Elasticsearch

自动运维|logstash收集syslog及保存实践

filebeat 多个日志输出到logstash后怎么区分

Logstash Filebeat 安装配置之使用 Kibana 分析日志数据

使用 filebeat 和 logstash 将 syslog 转换为 json