Ubuntu Filebeat设置报警机制指南
Filebeat本身不具备直接报警功能,需结合Elastic Stack(Elasticsearch、Kibana)或其他工具(如ElastAlert)实现。以下是两种主流方案的详细步骤:
X-Pack是Elastic Stack的内置功能,提供强大的报警能力,适用于已部署Elasticsearch和Kibana的环境。
filebeat.inputs指向日志文件,output.elasticsearch指向Elasticsearch地址);编辑/etc/filebeat/filebeat.yml,确保以下关键配置:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log # 监控系统日志(可根据需求调整)
output.elasticsearch:
hosts: ["localhost:9200"] # Elasticsearch地址
index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}" # 索引命名规则
启动/重启Filebeat服务:
sudo systemctl enable filebeat
sudo systemctl restart filebeat
通过Kibana图形界面配置报警,步骤如下:
http://<服务器IP>:5601);filebeat-*);your-email@example.com);手动向监控的日志文件(如/var/log/syslog)添加符合条件的内容(如100条以上“error”日志),等待1分钟检查是否收到报警通知。
ElastAlert是Elastic社区开发的轻量级报警工具,适用于不想依赖X-Pack的场景。
sudo apt-get install python-pip
sudo pip install elastalert
创建配置文件:
新建/etc/elastalert/config.yaml,内容如下:
rules_folder: /etc/elastalert/rules # 规则文件存放目录
es_host: localhost # Elasticsearch地址
es_port: 9200 # Elasticsearch端口
smtp_host: smtp.example.com # SMTP服务器地址
smtp_port: 587 # SMTP端口
smtp_user: your-email@example.com # SMTP用户名
smtp_password: your-email-password # SMTP密码
from_addr: elastalert@example.com # 发件人邮箱
创建报警规则:
新建/etc/elastalert/rules/log_error_rule.yaml,内容如下:
name: "High Error Log Count"
type: frequency # 触发类型(频率型)
index: filebeat-* # 监控的索引
num_events: 10 # 触发阈值(10条错误日志)
timeframe:
minutes: 1 # 时间窗口(1分钟)
filter:
- query:
query_string:
query: "message: error" # 过滤条件(日志中包含“error”)
alert:
- email # 报警方式(邮件)
email:
- "your-email@example.com" # 接收人邮箱
启动ElastAlert守护进程(前台运行,用于测试):
elastalert --config /etc/elastalert/config.yaml --rule /etc/elastalert/rules/log_error_rule.yaml
若需后台运行,可使用nohup或systemd服务(需自行编写服务文件)。
向/var/log/syslog添加包含“error”的日志条目(如echo "This is an error" | sudo tee -a /var/log/syslog),等待1分钟检查是否收到邮件报警。