You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Filebeat到Graylog的TLS连接(遇连接重置问题)

Graylog + Filebeat TLS配置连接重置问题解决

问题现象

Docker部署的Graylog原本可正常接收另一台机器Filebeat的日志,启用TLS后出现连接重置错误:

{"log.level":"error","@timestamp":"2023-01-04T15:08:57.746+0100","log.logger":"publisher_pipeline_output","log.origin":{"file.name":"pipeline/client_worker.go","file.line":150},"message":"Failed to connect to backoff(async(tcp://<graylog_ip>:5044)): read tcp 192.168.178.99:54372-><graylog_ip>:5044: read: connection reset by peer","service.name":"filebeat","ecs.version":"1.6.0"}

未启用TLS时连接正常。

配置回顾

  • 证书生成命令:
openssl genrsa -out filebeat.key 2048
openssl req -new -x509 -key filebeat.key -out filebeat.crt -days 3650
  • Graylog Beats输入配置(启用TLS):
bind_address: 0.0.0.0
charset_name: UTF-8
no_beats_prefix: false
number_worker_threads: 12
override_source: <empty>
port: 5044
recv_buffer_size: 1048576
tcp_keepalive: false
tls_cert_file: /etc/graylog/server/filebeat.crt
tls_client_auth: disabled
tls_client_auth_cert_file: <empty>
tls_enable: true
tls_key_file: /etc/graylog/server/filebeat.key
tls_key_password: ********
  • Filebeat输出配置:
output.logstash:
  hosts: ["<graylog_ip>:5044"]
  ssl.certificate: '/etc/pki/tls/certs/filebeat.crt'
  ssl.key: '/etc/pki/tls/private/filebeat.key'

排查与解决步骤

1. 修正证书认知误区

你之前的理解有误:Filebeat连接Graylog(Beats输入)时,客户端(Filebeat)需要验证服务器(Graylog)的证书合法性,而非双方互用同一份密钥对。正确逻辑是:

  • Graylog使用自身的公钥证书+私钥对外提供TLS服务
  • Filebeat需要信任Graylog的公钥证书,确保连接的是合法服务器

2. 检查Graylog容器内证书权限

Docker挂载证书后,容器内Graylog进程可能没有读取权限:

  • 进入Graylog容器:docker exec -it <graylog_container_name> /bin/bash
  • 检查证书文件权限:ls -l /etc/graylog/server/filebeat.crt /etc/graylog/server/filebeat.key
  • 若权限不足,设置正确权限(Graylog进程通常以graylog用户运行):
chown graylog:graylog /etc/graylog/server/filebeat.crt /etc/graylog/server/filebeat.key
chmod 600 /etc/graylog/server/filebeat.key
chmod 644 /etc/graylog/server/filebeat.crt
  • 重启Graylog容器

3. 修正Filebeat配置

Filebeat连接Graylog Beats输入时,不需要配置ssl.certificate和ssl.key(这两个用于客户端证书认证,但你设置了tls_client_auth: disabled,无需启用)。正确配置应为:

output.logstash:
  hosts: ["<graylog_ip>:5044"]
  ssl.enabled: true
  ssl.certificate_authorities: ['/etc/pki/tls/certs/filebeat.crt']  # 信任Graylog的公钥证书
  • 确保filebeat.crt在Filebeat机器上的路径正确,且进程可读取
  • 重启Filebeat服务

4. 验证证书有效性

  • 检查证书的主机名是否与Graylog服务器的FQDN或IP匹配:
openssl x509 -in filebeat.crt -text -noout | grep Subject
  • 若用IP访问Graylog,生成证书时Common Name(CN)需填写Graylog的IP;若用域名,填写对应域名
  • 若不匹配,重新生成证书

5. 测试TLS连接

在Filebeat机器上用openssl s_client测试Graylog的TLS端口:

openssl s_client -connect <graylog_ip>:5044 -CAfile /etc/pki/tls/certs/filebeat.crt
  • 连接成功会显示证书信息及Verify return code: 0 (ok)
  • 失败则根据错误提示排查(如证书不匹配、权限问题、端口未开放等)

6. 检查Graylog日志

查看Graylog容器日志,获取更详细的TLS错误信息:

docker logs <graylog_container_name> | grep -i tls

常见错误如密钥密码错误、证书格式错误等,可从日志中定位


内容的提问来源于stack exchange,提问作者Damian Games

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 19:35:22