Fluent Bit是否支持运行时动态启停输入插件且无需重启?
Fluent Bit 提供了无需重启即可动态启停输入插件的内置方案,主要有以下两种实用方式:
1. 利用 Control API 直接控制插件状态
这是官方原生支持的核心方法,通过简单的 HTTP 请求就能实时切换输入插件的激活状态。
配置前提
首先需要在 Fluent Bit 的配置文件中开启 Control API,在 [SERVICE] 段添加以下配置:
[SERVICE] http_server on http_listen 0.0.0.0 http_port 2020 # 可选:添加身份验证防止未授权访问 # http_user your_username # http_passwd your_password
操作步骤
获取输入插件列表:发送 GET 请求查看所有输入插件的 ID 和当前状态
curl http://127.0.0.1:2020/api/v1/inputs
返回结果中会包含每个插件的id(如input.0)、name(如tail)和active状态。禁用目标插件:找到目标插件的 ID 后,发送 POST 请求修改其
active状态为falsecurl -X POST http://127.0.0.1:2020/api/v1/inputs/input.0 -d '{"active": false}'启用目标插件:将
active改为true即可重新激活curl -X POST http://127.0.0.1:2020/api/v1/inputs/input.0 -d '{"active": true}'
注意:这种状态修改是内存级的,Fluent Bit 重启后会恢复配置文件中定义的初始状态。如果需要持久化状态,需自行实现状态保存与加载的逻辑。
2. 通过 Filter 条件过滤减少资源占用
如果不需要完全停掉输入插件,只是想在非必要时段忽略日志,可以用 Filter 组件做条件过滤,减少后续处理链的资源消耗。比如使用 grep 过滤器只保留符合特定条件的日志:
[FILTER] Name grep Match your_input_tag Include key_name ^your_specific_condition$
这种方式不会停止插件的日志采集,但能过滤掉不需要的日志,降低整体资源占用。
内容的提问来源于stack exchange,提问作者NanoTree

