设置观察程序以通过某些进程来警告CPU使用率过高

时间:2018-07-13 07:55:29

标签: elasticsearch elasticsearch-x-pack elasticsearch-watcher

我正在尝试创建一个观察者警报,该警报将在节点上的某些进程在过去一小时内使用超过0.95%的CPU时触发。

这是我的配置示例:

{
  "trigger": {
    "schedule": {
      "interval": "10m"
    }
  },
  "input": {
    "search": {
      "request": {
        "search_type": "query_then_fetch",
        "indices": [
          "metricbeat*"
        ],
        "types": [],
        "body": {
          "size": 0,
          "query": {
            "bool": {
              "must": [
                {
                  "range": {
                    "system.process.cpu.total.norm.pct": {
                      "gte": 0.95
                    }
                  }
                },
                {
                  "range": {
                    "system.process.cpu.start_time": {
                      "gte": "now-1h"
                    }
                  }
                },
                {
                  "match": {
                    "environment": "test"
                  }
                }
              ]
            }
          }
        }
      }
    }
  },
  "condition": {
    "compare": {
      "ctx.payload.hits.total": {
        "gt": 0
      }
    }
  },
  "actions": {
    "send-to-slack": {
      "throttle_period_in_millis": 1800000,
      "webhook": {
        "scheme": "https",
        "host": "hooks.slack.com",
        "port": 443,
        "method": "post",
        "path": "{{ctx.metadata.onovozhylov-test}}",
        "params": {},
        "headers": {
          "Content-Type": "application/json"
        },
        "body": "{ \"text\": \" ==========\nTest parameters:\n\tthrottle_period_in_millis: 60000\n\tInterval: 1m\n\tcpu.total.norm.pct: 0.5\n\tcpu.start_time: now-1m\n\nThe watcher:*{{ctx.watch_id}}* in env:*{{ctx.metadata.env}}* found that the process *{{ctx.system.process.name}}* has been utilizing CPU over 95% for the past 1 hr on node:\n{{#ctx.payload.nodes}}\t{{.}}\n\n{{/ctx.payload.nodes}}\n\nThe runbook entry is here: *{{ctx.metadata.runbook}}* \"}"
      }
    }
  },
  "metadata": {
    "onovozhylov-test": "/services/T0U0CFMT4/BBK1A2AAH/MlHAF2QuPjGZV95dvO11111111",
    "env": "{{ grains.get('environment') }}",
    "runbook": "http://mytest.com"
  }
}

设置指标system.process.cpu.start_time时,此Watcher不起作用。也许这个指标不正确。不幸的是,我没有与Watcher相关的经验来独自解决此问题。

另一个问题是我不知道如何将system.process.name添加到邮件正文中。

在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

使用timestamp字段代替system.process.cpu.start_time来检查最近10分钟内的所有metrcibeat-*文档

"range": { 
    "timestamp": {
        "gte": "now-10m",
        "lte": "now"
    }
}

要在邮件正文中包含system.process.name,请查看{{ctx.payload}}并使用适当的符号来引用进程名称。对于前。在我们的一个观察者配置中,我们使用{{_source.appname}}来引用应用程序名称。