简单了解filebeat开发插件的流程,及插件工做的机制。 github源码地址git
filebeat对于收集的每行日志都封装成event, event 发送到 output 以前,可在配置文件中定义processors去处理 event。 processor 做用:github
每一个 processor 会接收一个 event,将一些定义好的行为应用到 event,而后返回 event,若是你在配置文件中定义了一系列 processors,那么他会按定义的顺序依次执行。golang
因此,能够基于此机制进行filebeat功能扩展。测试
filebeat plugin processorui
基于URL维度计数,进行采样收集spa
采样率控制config.go中Sample插件
准确率要求不高的状况下,可使用采样的机制,好比,经过日志,计算服务的可用性,基于统计计数的状况,会存在偏差,服务波动状况下,可能致使抽样的数据都是正常的,异常的日志漏掉。日志
基于以上版本测试经过code
./filebeat -e -c filebeat_test.yml --plugin add_sample_data.so开发
// processor名称定义用于filebeat.yml配置文件Processors配置
const (
processorName = "add_sample_data"
)
// 插件注册
var Bundle = plugin.Bundle(
processors.Plugin(processorName, newSampleProcessor),
)
复制代码
基于 github.com/elastic/bea… 源码下进行编译打包
cd libbeat/processors/add_sample_data
go build -buildmode=plugin
复制代码
#================================ Processors =====================================
processors:
- add_sample_data: ~
复制代码
因为Mac系统(csrutil)保护系统完整性致使的问题,运行 csrutil status 查看结果,若是是 enable,关闭disable便可。具体操做步骤自行百度
plugin 编译问题致使,解决方法,基于beats对应版本源代码从新编译,执行filebeat下make命令,替换原有 filebeat 二进制文件