概述
一 简介
filebeat是一个纯go编写的日志收集工具,但是内置的插件不能满足所有的日常需求,那么我们就可以根据自己的需求自定义插件集成进去
filebeat启动的时候会将配置文件中processors给定的列表启动对应的插件有内置的有自定义的
processors:
#数字1-100 不能超过100
#如果是需要收集所有日志请关闭scale processor
- scale_event:
num: 10
二 开发流程
项目地址https://github.com/strive-after/beats
请看7.7分支
开发流程
首先我们需要在libbeat的process目录中添加自己的自定义插件 这个插件需要满足2个方法一个init函数
其中init函数主要是注册使用
Run是每次filebeat 读取一行日志都会生成一个event都会传递在Run里面 你可以针对这个消息处理
String 主要是名称 跟配置文件相互对应
package scalelog
import (
"sync"
"github.com/pkg/errors"
"github.com/elastic/beats/v7/libbeat/beat"
"github.com/elastic/beats/v7/libbeat/common"
"github.com/elastic/beats/v7/libbeat/processors"
)
var (
processorName = "scale_event"
rantList = []string{}
MaxNum uint = 101
MinNum uint = 0
)
type scaleLog struct {
config
lock sync.Mutex
logNum uint
}
type config struct {
//最大值100 百分比采样数据
Num uint `config:"num" json:"num"`
}
func init() {
processors.RegisterPlugin(processorName, newscaleLog)
//processors.RegisterPlugin(processorName,checks.ConfigChecked(newscaleLog,checks.RequireFields("")))
}
func defaultconfig() config{
return config{}
}
func newscaleLog(cfg *common.Config) (processors.Processor,error){
scaleLogSingleton := &scaleLog{
logNum: MinNum,
lock: sync.Mutex{},
}
scaleconfig := defaultconfig()
if err := cfg.Unpack(&scaleconfig); err != nil {
return nil, errors.Wrapf(err, "fail to unpack the %v configuration", processorName)
}
if scaleconfig.Num > 101 {
return nil, errors.Wrapf(errors.New("numbers greater than 100"), "fail to unpack the %v configuration", processorName)
}
scaleLogSingleton.config = scaleconfig
return scaleLogSingleton,nil
}
func (s *scaleLog) Run(event *beat.Event) (*beat.Event, error) {
if s.Num() {
return event,nil
}
return nil, nil
}
func (s *scaleLog) Num() bool {
s.lock.Lock()
defer s.lock.Unlock()
s.logNum++
if s.logNum == MaxNum {
s.logNum = MinNum+1
}
if s.logNum > s.config.Num {
return false
}
return true
}
func (s *scaleLog) String() string {
return processorName
}
写完主要的处理逻辑的部分之后需要在 加入引用 触发init函数
_ "github.com/elastic/beats/v7/libbeat/processors/scalelog"
最后
以上就是缓慢口红为你收集整理的filebeat开发自定义插件一 简介二 开发流程的全部内容,希望文章能够帮你解决filebeat开发自定义插件一 简介二 开发流程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复