ubuntu

ubuntu filebeat如何进行插件开发

小樊
36
2025-11-21 08:51:58
栏目: 智能运维

Ubuntu 下 Filebeat 插件开发实践

一 开发方式与选型

二 快速上手 Processor 插件

// file: beats/x-pack/filebeat/processor/myplugin/sample.go
package myplugin

import (
	"sync"

	"github.com/elastic/beats/v7/libbeat/beat"
	"github.com/elastic/beats/v7/libbeat/common"
	"github.com/elastic/beats/v7/libbeat/processors"
	"github.com/pkg/errors"
)

const pluginName = "sample_keep"

type sampleKeep struct {
	config struct {
		Keep uint `config:"keep" validate:"min=0"`
	}
	mu   sync.Mutex
	seen uint
}

func init() {
	processors.RegisterPlugin(pluginName, newSampleKeep)
}

func newSampleKeep(cfg *common.Config) (processors.Processor, error) {
	p := &sampleKeep{}
	if err := cfg.Unpack(&p.config); err != nil {
		return nil, errors.Wrapf(err, "fail to unpack config for %v", pluginName)
	}
	return p, nil
}

func (p *sampleKeep) Run(event *beat.Event) (*beat.Event, error) {
	p.mu.Lock()
	defer p.mu.Unlock()
	if p.seen < p.config.Keep {
		p.seen++
		return event, nil
	}
	return nil, nil // 丢弃
}

func (p *sampleKeep) String() string { return pluginName }
  1. 在 filebeat.yml 中使用(注意插件名与代码中一致):
processors:
  - sample_keep:
      keep: 1000
  1. 构建与运行
    • 内嵌式:在 beats 根目录执行 make filebeat,然后用 ./filebeat -e -c filebeat.yml 运行。
    • 验证:观察日志是否按预期保留/丢弃,必要时加 logging.level: debug 排查。

三 构建与运行要点

四 常见问题与排查

0
看了该问题的人还看了