目录
article
通过 Elasticsearch Watcher 发送预警消息到飞书
通过 Elasticsearch Watcher 发送预警消息到飞书
主要参考这篇博客,原文是发送消息到钉钉,发送到飞书也是类似的。
- trigger 控制监视的时间间隔
- input 指定查询条件
查询条件的写法请参考官方文档。 - condition 指定阈值
- actions 定义达到阈值后的行为,这里是 webhook
请求的内容参考飞书机器人的使用文档。
这是一个监控 5 分钟内某个关键字出现次数的监视脚本:
{
"trigger": {
"schedule": {
"interval": "5m"
}
},
"input": {
"search": {
"request": {
"search_type": "query_then_fetch",
"indices": [
"log_*"
],
"types": [],
"body": {
"size": 0,
"query": {
"bool": {
"must": [
{
"match": "TokenNotExist"
},
{
"range": {
"@dtTime": {
"gte": "now-5m",
"lte": "now",
"format": "epoch_millis"
}
}
}
]
}
}
}
}
}
},
"condition": {
"compare": {
"ctx.payload.hits.total": {
"gte": 10
}
}
},
"actions": {
"my_webhook": {
"webhook": {
"scheme": "https",
"host": "open.feishu.cn",
"port": 443,
"method": "post",
"path": "/open-apis/bot/v2/hook/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"params": {},
"headers": {
"Content-Type": "application/json"
},
"body": "{\"msg_type\": \"text\",\"content\": {\"text\": \"TokenNotExist gte 10 in 5 minutes\"}}"
}
}
}
}
ES 使用的阿里云上的实例,创建 Watcher 时报了如下错误:
Watcher: Error 400 Bad Request: no handler found for uri [/_xpack/watcher/watch/token_not_exist_warning] and method [GET]
在阿里云的帮助文档上看到如下注意事项:
如果在执行以上命令时,出现 No handler found for uri [/_xpack/watcher/watch/log_error_watch_2] and method [PUT] 异常,表示您购买的阿里云 Elasticsearch 实例未开启 X-Pack Watcher 功能,请开启后再执行以上命令。具体步骤,请参见配置 YML 参数。
在 ES 实例的 ES 集群配置 页面可以修改这个配置,不过看提示修改后需要重启。因为是生产环境一直在用,怕影响使用,就暂时没有继续下去。
开启 Watcher:
开启后,可使用 X-Pack 的 Watcher 功能。请注意定时清理
.watcher-history*索引,避免占用大量磁盘空间。
对应的 YML 文件的配置项为 xpack.watcher.enabled,默认为false。