我正在尝试在 docker 容器上使用 fluent-bit 设置 EFK 堆栈。虽然我可以将日志从 fluent-bit 推送到 elasticsearch,但当我尝试集成 fluentd 时,我遇到了问题。这是确切的错误消息:
意外错误 error_class=Errno::EADDRNOTAVAIL error="地址不可用 - bind(2) for \"fluent-bit\" port 24224"
我的docker-compose文件中的服务
弹性搜索: 图片:docker.elastic.co/elasticsearch/elasticsearch:${TAG} 端口: - '9200:9200' - '9300:9300' 卷: - 类型:绑定 来源:./config/elasticsearch.yml 目标:/usr/share/elasticsearch/config/elasticsearch.yml 只读:真 - 类型:体积 来源:弹性搜索 目标:/usr/share/elasticsearch/data 网络: - efk_1 流利的: 图片:流利/流利:${FLBV} 端口: - '24224:24224' 卷: - 类型:绑定 来源:./config/fluent.conf 目标:/fluentd/etc/fluent.conf 只读:真 网络: - efk_1 取决于: - 弹性搜索 流利位: 图片:流利/流利位:${FBITV} 端口: - '2020:2020' 卷: - 类型:绑定 来源:./config/fluent-bit.conf 目标:/fluent-bit/etc/fluent-bit.conf 只读:真 - 类型:绑定 来源:./sample_logs 目标:/var/log 网络: - efk_1 取决于: - 流利
以前我像这样直接将日志从 fluent-bit 推送到 elasticsearch,而无需在任何地方进行 fluentd 配置:
[SERVICE]
Flush 2
Log_Level debug
[INPUT]
Name tail
Path /var/log/log.txt
[OUTPUT]
Name es
Match *
Host elasticsearch
Port 9200
这成功地将日志推送到elasticsearch,但是现在我在两者之间添加了fluentd,所以fluent-bit会将日志发送到fluentd,然后再推送到elasticsearch。
流利的位conf:
[SERVICE]
Flush 2
Log_Level debug
[INPUT]
Name tail
Path /var/log/log.txt
[OUTPUT]
Name forward
Match *
Host fluentd
流利的conf:
<source>
@type forward
bind fluent-bit
</source>
<match **>
@type stdout
</match>
这给了我错误,因为即使它们是同一个 docker 网络的一部分,它们也无法检测到地址。
这些是我得到的错误:
流利位_1 | [2019/11/06 10:31:02] [error] [io] TCP 连接失败:fluentd:24224(连接被拒绝)
和
流利的_1 | 2019-11-06 10:31:02 +0000 [错误]:#0 意外错误 error_class=Errno::EADDRNOTAVAIL 错误="地址不可用 - 绑定 (2) 用于 \"fluent-bit\" 端口 24224"
有人可以帮我知道我在哪里犯了错误吗?