如何向Docker部署的Fluent Bit代理发送虚拟测试日志
向Docker内Fluent Bit发送测试日志的实操方案
你已经完成Fluent Bit 24224端口的本地映射,直接用以下几种可直接执行的方式发送测试日志即可验证全链路:
方法1:netcat发送(系统自带工具,无额外依赖,适配TCP/Forward类输入插件)
直接在本地终端执行命令,发送JSON格式的测试日志:echo '{"log":"pipeline verify test log","level":"info","source":"manual-test","ts":"'$(date -Iseconds)'"}' | nc -w 1 localhost 24224命令里的
-w 1参数表示发送完成后1秒自动断开连接,避免nc一直挂起。Windows原生环境无nc的话可以用WSL执行,或者选后面的方法。方法2:官方fluent-cat发送(Forward协议100%兼容,无格式解析问题)
这是Fluent Bit官方配套的日志发送工具,不会出现协议不匹配导致的日志收不到问题:
本地装了Fluent Bit的话直接执行:echo "test log from fluent-cat" | fluent-cat verify.pipeline --host localhost --port 24224不想本地装Fluent Bit的话,直接跑临时Docker容器执行即可,不需要持久化存储:
docker run --rm --net=host cr.fluentbit.io/fluent/fluent-bit:latest /fluent-bit/bin/fluent-cat verify.pipeline --host host.docker.internal --port 24224 <<< "temp docker client test log"命令里的
verify.pipeline是日志tag,替换成你Fluent Bit路由规则里能匹配转发到otel-collector的tag即可。方法3:curl发送(适配24224端口配置为HTTP输入插件的场景)
如果你给Fluent Bit的24224端口配置的是HTTP输入而非默认Forward输入,直接用curl发POST请求即可:curl -X POST -H "Content-Type: application/json" -d '{"log":"curl test log","service":"pipeline-check"}' http://localhost:24224/verify.pipeline
链路排查提示
如果发送后otel-collector(localhost:8006)没收到对应日志,按顺序检查三点即可:
- 执行
docker ps确认端口映射规则,PORTS列需要存在0.0.0.0:24224->24224/tcp的映射,避免只绑定容器内部回环 - 确认Fluent Bit的输入插件监听地址是
0.0.0.0:24224,而非容器内的127.0.0.1:24224 - 确认Fluent Bit输出到otel-collector的地址配置正确:如果Fluent Bit跑在Docker容器里,访问宿主机的8006端口不能写
localhost,要替换为host.docker.internal或者宿主机的实际内网IP,同时确认路由tag匹配规则覆盖你发送测试日志用的tag。
内容的提问来源于stack exchange,提问作者Keval Bhogayata
相关产品推荐
相关产品推荐

