在 Debian 上,**Filebeat 本身的“鉴权”**通常不是指“登录 Filebeat”,而是指 Filebeat 在采集、输出(如 Elasticsearch / Logstash / Kafka)时如何进行身份认证和权限控制。下面按常见场景说明。
Filebeat 默认以 filebeat 用户运行:
ps aux | grep filebeat
确保 filebeat 用户能读日志:
sudo usermod -aG adm filebeat
sudo chmod 644 /var/log/xxx.log
或把日志目录授权:
sudo chown root:filebeat /var/log/app
sudo chmod 750 /var/log/app
Debian 上
/var/log通常属于root:adm
/etc/filebeat/filebeat.yml:
output.elasticsearch:
hosts: ["https://es.example.com:9200"]
username: "filebeat_writer"
password: "${ES_PASSWORD}"
设置密码(避免明文):
sudo filebeat keystore create
sudo filebeat keystore add ES_PASSWORD
output.elasticsearch:
hosts: ["https://es.example.com:9200"]
api_key: "${ES_API_KEY}"
创建 API Key:
filebeat keystore add ES_API_KEY
output.elasticsearch:
ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"]
ssl.certificate: "/etc/filebeat/certs/filebeat.crt"
ssl.key: "/etc/filebeat/certs/filebeat.key"
output.logstash:
hosts: ["logstash.example.com:5044"]
ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"]
username: "filebeat"
password: "${LS_PASSWORD}"
output.kafka:
hosts: ["kafka1:9092"]
topic: "logs"
username: "filebeat"
password: "${KAFKA_PASSWORD}"
sasl.mechanism: PLAIN
ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"]
如果是 Elastic Stack 安全模式:
sudo filebeat setup \
-E output.elasticsearch.username=elastic \
-E output.elasticsearch.password=xxx
Filebeat 以 systemd 服务运行:
sudo systemctl status filebeat
限制运行用户:
# /usr/lib/systemd/system/filebeat.service
User=filebeat
| 场景 | 鉴权方式 |
|---|---|
| 读日志 | Linux 文件权限 |
| ES | 用户名/密码 / API Key / TLS |
| Logstash | TLS + 用户名密码 |
| Kafka | SASL |
| 系统级 | systemd 用户 |
如果你能说明 “Filebeat 是连哪里(ES / Logstash / Kafka)”、“是否启用 TLS / Elastic Security”,我可以给你一份 可直接用的 Debian 配置示例。