我正在尝试创建一个观察者警报,该警报将在节点上的某些进程在过去一小时内使用超过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
添加到邮件正文中。
在此先感谢您的帮助!
答案 0 :(得分:1)
使用timestamp
字段代替system.process.cpu.start_time
来检查最近10分钟内的所有metrcibeat-*
文档
"range": {
"timestamp": {
"gte": "now-10m",
"lte": "now"
}
}
要在邮件正文中包含system.process.name
,请查看{{ctx.payload}}
并使用适当的符号来引用进程名称。对于前。在我们的一个观察者配置中,我们使用{{_source.appname}}
来引用应用程序名称。