首页主机资讯Ubuntu上Filebeat如何设置报警规则

Ubuntu上Filebeat如何设置报警规则

时间2026-01-20 15:33:03发布访客分类主机资讯浏览1183
导读:在 Ubuntu 上,Filebeat 本身不提供内置告警,常见做法是将日志送入 Elasticsearch/Kibana 或 Logstash,再基于这些组件配置规则与通知。下面给出 3 种常用方案与可直接套用的示例。 方案总览与选择...

在 Ubuntu 上,Filebeat 本身不提供内置告警,常见做法是将日志送入 Elasticsearch/KibanaLogstash,再基于这些组件配置规则与通知。下面给出 3 种常用方案与可直接套用的示例。

方案总览与选择

方案 组件依赖 适用场景 通知方式
Elasticsearch Watcher Elasticsearch(建议 7.x/8.x 基础版及以上)、Kibana(可选) 已在用 ES 做检索分析,需原生定时规则 Email、Webhook 等
ElastAlert ElastAlertElasticsearch 需要更灵活的匹配规则(频次、阈值、复合条件) Email钉钉、企业微信、Slack 等
Logstash 告警输出 Logstash 已在用 Logstash 做处理,想就近发信 Email(SMTP)

方案一 Elasticsearch Watcher 原生告警

  • 思路:Filebeat 将日志写入 filebeat-* 索引;在 Watcher 中定时查询匹配条件,触发 Email 等动作。
  • 步骤与示例:
    1. Filebeat 输出到 ES(示例):
      output.elasticsearch:
        hosts: ["localhost:9200"]
        index: "filebeat-%{
      +yyyy.MM.dd}
      "
      
    2. Kibana Dev Tools 创建规则(每分钟检查一次,命中 ERROR 即告警):
      PUT _watcher/watch/filebeat-error-alert
      {
      
        "trigger": {
       "schedule": {
       "interval": "1m" }
       }
      ,
        "input": {
      
          "search": {
      
            "request": {
      
              "indices": ["filebeat-*"],
              "body": {
      
                "query": {
       "match": {
       "message": "ERROR" }
       }
      ,
                "size": 0
              }
      
            }
      
          }
      
        }
      ,
        "condition": {
      
          "compare": {
       "ctx.payload.hits.total.value": {
       "gt": 0 }
       }
      
        }
      ,
        "actions": {
      
          "email_admin": {
      
            "email": {
      
              "to": "admin@example.com",
              "subject": "Filebeat Alert: ERROR detected",
              "body": "Found {
      {
      ctx.payload.hits.total.value}
      }
       ERROR logs in the last minute."
            }
      
          }
      
        }
      
      }
      
      
    3. 前提:确保 Watcher 可用并已配置邮件发送(如通过 SMTP 网关或云邮件服务)。
      说明:Watcher 适合“定时检索 + 阈值/比较”类告警,规则直观、维护成本低。

方案二 ElastAlert 第三方规则引擎

  • 思路:ElastAlert 持续查询 Elasticsearch,按自定义规则匹配并触发通知(支持 Email、钉钉、企业微信、Slack 等)。
  • 步骤与示例:
    1. 安装与最小配置(elastalert_config.yaml):
      rule_folder: /etc/elastalert/rules
      run_every:
        minutes: 1
      buffer_time:
        minutes: 15
      es_host: localhost
      es_port: 9200
      
    2. 创建规则(/etc/elastalert/rules/error_freq.yaml):
      name: Filebeat ERROR 1m
      type: frequency
      index: filebeat-*
      num_events: 1
      timeframe:
        minutes: 1
      filter:
      - query:
          query_string:
            query: "message:ERROR"
      alert:
      - email
      email:
      - "admin@example.com"
      
      如需钉钉,可改用 webhook 类型并配置钉钉机器人 access_token
    3. 启动:
      elastalert --config /etc/elastalert/elastalert_config.yaml
      
    说明:ElastAlert 规则类型丰富(如 frequency、spike、flatline),对复杂场景更友好。

方案三 Logstash 内嵌告警输出

  • 思路:Filebeat 将日志发到 Logstash,在 Logstash 的 output 阶段按条件触发 Email
  • 步骤与示例(/etc/logstash/conf.d/alert.conf):
    input {
    
      beats {
         port =>
     5044 }
    
    }
    
    filter {
    
      # 按需解析与丰富字段
    }
    
    output {
    
      if [message] =~ /ERROR/ {
    
        email {
        
          to      =>
         "admin@example.com"
          subject =>
         "Logstash Alert: ERROR found"
          body    =>
     "Message: %{
    [message]}
        "
          via     =>
     "smtp"
          smtp {
        
            host      =>
         "smtp.example.com"
            port      =>
         587
            user      =>
         "you@example.com"
            password  =>
         "yourpass"
            authentication =>
         "plain"
            enable_starttls_auto =>
     true
          }
    
        }
    
      }
    
      elasticsearch {
        
        hosts =>
         ["localhost:9200"]
        index =>
     "filebeat-%{
    +YYYY.MM.dd}
    "
      }
    
    }
        
    
    说明:适合已在 Logstash 做处理的链路,就近利用 SMTP 发信。

关键注意事项

  • 索引与时间字段:Watcher/ElastAlert 查询建议使用 filebeat-* 索引;时间过滤优先用 @timestamp,避免仅用 message 做时间判断。
  • 邮件与账号安全:SMTP 建议使用专用账号与 应用专用密码/令牌,并开启 TLS;生产环境避免明文密码。
  • 版本匹配:若采用 Kibana 插件(如 Sentinl),务必保证插件版本与 Kibana 版本一致,避免兼容性问题。
  • 资源与噪声:合理设置查询窗口与阈值,必要时在 Filebeat/Logstash 先做 字段解析与去重,减少无效告警。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu上Filebeat如何设置报警规则
本文地址: https://pptw.com/jishu/787323.html
Linux Informix如何应对高并发场景 Filebeat能否自定义日志路径在Ubuntu

游客 回复需填写必要信息