在 CentOS 上配置 Filebeat 使用证书,通常是指 Filebeat 与 Elasticsearch / Logstash 之间启用 TLS 加密(最常见场景)。下面按最常用场景给你一个完整、可落地的配置示例。
一般你会有以下文件(名字可能不同):
ca.crt:CA 证书(必须)client.crt:Filebeat 客户端证书(可选,双向认证时需要)client.key:Filebeat 客户端私钥(可选)假设放在:
/etc/filebeat/certs/
├── ca.crt
├── client.crt
├── client.key
设置权限(非常重要):
chmod 600 /etc/filebeat/certs/*
chown root:root /etc/filebeat/certs/*
编辑:
vi /etc/filebeat/filebeat.yml
output.elasticsearch:
hosts: ["https://es-node1:9200"]
username: "filebeat_writer"
password: "yourpassword"
ssl.enabled: true
ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"]
✅ 适用于:Elasticsearch 开了 HTTPS,但不要求客户端证书
output.elasticsearch:
hosts: ["https://es-node1:9200"]
username: "filebeat_writer"
password: "yourpassword"
ssl.enabled: true
ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"]
ssl.certificate: "/etc/filebeat/certs/client.crt"
ssl.key: "/etc/filebeat/certs/client.key"
output.logstash:
hosts: ["logstash:5044"]
ssl.enabled: true
ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"]
ssl.certificate: "/etc/filebeat/certs/client.crt"
ssl.key: "/etc/filebeat/certs/client.key"
Logstash 端需对应开启:
input {
beats {
port => 5044
ssl => true
ssl_certificate => "/etc/logstash/certs/server.crt"
ssl_key => "/etc/logstash/certs/server.key"
ssl_certificate_authorities => ["/etc/logstash/certs/ca.crt"]
}
}
filebeat test config
filebeat test output
✅ 成功示例:
elasticsearch: https://es-node1:9200...
parse connection... OK
TLS... OK
systemctl restart filebeat
systemctl status filebeat
✅ ca.crt 路径错误或未配置
✅ key 文件权限不是 600
✅ crt / key 不匹配
/usr/share/elasticsearch/bin/elasticsearch-certutil
生成后:
ca/ca.crtinstances/filebeat/filebeat.crtinstances/filebeat/filebeat.key直接拷到 /etc/filebeat/certs/ 即可。
如果你愿意,可以告诉我:
我可以直接帮你写一份 完全匹配你环境的 filebeat.yml。