在 Debian 上用 Filebeat 发送日志到 Kafka,一般步骤如下(以 Debian 11/12 为例,Filebeat 7.x/8.x 通用):
sudo apt update
sudo apt install curl gnupg -y
curl -L https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic.list
sudo apt update
sudo apt install filebeat -y
如果是 7.x,把
8.x换成7.x
编辑配置文件:
sudo vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
fields:
service: my-app
output.kafka:
hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"]
topic: "filebeat-logs"
partition.round_robin:
reachable_only: true
required_acks: 1
compression: gzip
max_message_bytes: 1000000
hosts:Kafka broker 地址topic:Kafka topic(需提前创建)required_acks:
0 不确认1 leader 确认all 全部确认(最安全)compression:可选 none / gzip / snappy / lz4kafka-topics.sh --create \
--topic filebeat-logs \
--bootstrap-server kafka1:9092 \
--partitions 3 \
--replication-factor 2
sudo systemctl enable filebeat
sudo systemctl start filebeat
查看状态:
sudo systemctl status filebeat
journalctl -u filebeat -f
Kafka 连不上
hosts 配置错误Topic 不存在
auto.create.topics.enable=false)权限问题
/var/log 读取权限output.kafka:
hosts: ["kafka:9092"]
topic: "%{[fields.service]}"
如果你愿意,可以告诉我:
我可以给你一份完全定制化的配置。