ubuntu filebeat告警机制设置
导读:Ubuntu 上 Filebeat 告警机制设置 核心思路与组件 Filebeat 本身不提供告警,通常将日志发往 Elasticsearch 或 Logstash,再由 Elasticsearch Watcher 或 Kibana 告警...
Ubuntu 上 Filebeat 告警机制设置
核心思路与组件
- Filebeat 本身不提供告警,通常将日志发往 Elasticsearch 或 Logstash,再由 Elasticsearch Watcher 或 Kibana 告警执行定时查询与通知;也可在 Logstash 中做阈值判断并调用邮件/Webhook 发送告警。若不使用 X-Pack,可采用第三方告警器(如 ElastAlert)或轻量脚本轮询实现。Watcher 支持 email、webhook、slack、pagerduty 等动作,适合在 Kibana Dev Tools 中以 API 方式创建与管理。
方案一 Elasticsearch Watcher 告警(推荐)
- 前置准备
- 安装并启动 Elasticsearch/Kibana;确保 Filebeat 已写入数据,并在 Kibana 创建索引模式(如 filebeat-*)。
- 若使用 email 通知,需提前在 Elasticsearch 配置 SMTP(如 xpack.notification.email)。Watcher 在 7.x 通常随 X-Pack 提供,在 8.x 告警功能已并入 Stack Alerting & Actions 框架(UI 与 API 均可创建)。
- Filebeat 最小配置示例(输出到 ES)
- filebeat.yml
- filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
- type: log
enabled: true
paths:
- output.elasticsearch:
- hosts: [“localhost:9200”]
- index: “filebeat-%{ +yyyy.MM.dd} ”
- filebeat.inputs:
- filebeat.yml
- 创建 Watcher(Kibana Dev Tools)
- 每分钟检查近 5 分钟是否出现 ERROR,出现即触发 Webhook(示例为钉钉机器人)
- PUT _watcher/watch/filebeat_error_alert
- {
- “trigger”: { “schedule”: { “interval”: “1m” } } ,
- “input”: {
- “search”: {
- “request”: {
- “indices”: [“filebeat-*”],
- “body”: {
- “query”: {
- “bool”: {
- “must”: [
- { “match”: { “log.level”: “ERROR” } } ,
- { “range”: { “@timestamp”: { “gte”: “now-5m”, “lte”: “now” } } }
- ]
- “must”: [
- }
- “bool”: {
- }
- “query”: {
- }
- }
- “request”: {
- } ,
- “search”: {
- “condition”: {
- “compare”: { “ctx.payload.hits.total”: { “gt”: 0 } }
- } ,
- “actions”: {
- “notify_dingtalk”: {
- “webhook”: {
- “method”: “POST”,
- “url”: “https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN”,
- “headers”: { “Content-Type”: “application/json” } ,
- “body”: “{ "msgtype":"markdown","markdown":{ "title":"Filebeat ERROR 告警","text":"在过去5分钟内发现 { { ctx.payload.hits.total} } 条 ERROR 日志。"} } ”
- }
- “webhook”: {
- }
- “notify_dingtalk”: {
- }
- }
- {
- PUT _watcher/watch/filebeat_error_alert
- 每分钟检查近 5 分钟是否出现 ERROR,出现即触发 Webhook(示例为钉钉机器人)
- 验证与查看
- 在 Kibana 的 Stack Management → Rules and Connectors(或 Dev Tools 的 Watcher 页面)查看执行历史与命中情况;也可临时把 actions 改为 logging 验证是否触发。
方案二 Logstash 阈值与邮件告警
- 适用场景:需要在数据管道中做聚合、去重或调用外部告警通道(如企业微信、钉钉、短信网关)。
- 配置示例(阈值 + 邮件)
- input { beats { port => 5044 } }
- filter {
- if [log][level] == “ERROR” { mutate { add_tag => [“error”] } }
- metrics {
- meter => “error_count”
- add_tag => [“metric”]
- flush_interval => 60
- clear_interval => 60
- }
- }
- output {
- if “metric” in [tags] and [error_count][count] >
0 {
- email {
- to => “admin@example.com”
- subject => “Logstash Alert: ERROR 超过阈值”
- body => “过去 1 分钟 ERROR 数量: %{ [error_count][count]} ”
- via => “smtp”
- smtp {
- host => “smtp.example.com”
- port => 587
- user => “your@mail.com”
- password => “******”
- authentication => “plain”
- }
- }
- email {
- }
- elasticsearch { hosts => [“localhost:9200”] index => “filebeat-%{ +yyyy.MM.dd} ” }
- if “metric” in [tags] and [error_count][count] >
0 {
- }
- 说明:metrics 插件按 60 秒窗口统计,超过阈值触发邮件;也可改为 http 输出调用 Webhook。
方案三 轻量替代与运维建议
- 轻量脚本轮询(无 ES/Watcher 时)
- 让 Filebeat 将事件写到本地文件(output.file),再用 cron + grep/curl 检索关键字并推送到 钉钉/企业微信;适合资源紧张、日志量不大、时效要求不高的环境。
- 运维要点
- 为告警查询设置合适的 时间窗口 与 阈值,避免抖动;必要时使用 compare 的 gt/ge/lt/le 控制触发频率。
- 为通知准备 连接器(如 Email、Webhook),并在生产环境使用 安全凭证 与 最小权限 的账号;Watcher/规则执行失败要有 日志与告警(如 logging 动作或二次 webhook 回调)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu filebeat告警机制设置
本文地址: https://pptw.com/jishu/749255.html
