Getting Started with Watcher
当您将X-Pack安装到Elasticsearch和Kibana时,监视器会自动启用。
设置监控开始发送警报:
- 计划监控并定义输入。
- 添加一个条件,检查是否需要发送警报。
- 配置一个在满足条件时发送警报的操作。
Schedule the Watch and Define an Input
一个监控计划控制触发监控的频率。监控输入获取希望评估的数据。
要定期搜索日志数据并将结果加载到监控中,您可以使用间隔时间表和搜索输入。例如,以下监控每10秒搜索logs索引错误。
PUT _xpack/watcher/watch/log_error_watch { "trigger" : { "schedule" : { "interval" : "10s" } 【1】 }, "input" : { "search" : { "request" : { "indices" : [ "logs" ], "body" : { "query" : { "match" : { "message": "error" } } } } } } }
【1】计划通常配置为运行频率较低。该例子将间隔设置为10秒,以便你可以轻松的查看正在触发的监控。由于此监控运行频繁,不要忘记在完成实验后删除监控。
假如你去检查监控的历史,你将看到该监控每10秒被触发。然而,搜索没有返回任何结果,所以没有什么被加载到监控的有效负荷。
例如,以下请求从监视历史记录中检索最后十次监视执行(观察记录):
GET .watcher-history*/_search?pretty { "sort" : [ { "result.execution_time" : "desc" } ] }
Add a Condition
条件评估您加载到监视的数据,并确定是否需要执行任何操作。现在,您已经将错误日志加载到监视中,您可以定义一个条件,以检查是否发现任何错误。
例如,以下比较条件只需检查查询输入是否返回任何命中。
PUT _xpack/watcher/watch/log_error_watch { "trigger" : { "schedule" : { "interval" : "10s" }}, "input" : { "search" : { "request" : { "indices" : [ "logs" ], "body" : { "query" : { "match" : { "message": "error" } } } } } }, "condition" : { "compare" : { "ctx.payload.hits.total" : { "gt" : 0 }} 【1】 } }
【1】:比较条件允许您轻松地与执行上下文中的值进行比较。
为了将此比较条件求值为true,您需要向日志索引中添加一个包含错误的事件。例如,以下请求向日志索引中添加404错误:
POST logs/event { "timestamp" : "2015-05-17T18:12:07.613Z", "request" : "GET index.html", "status_code" : 404, "message" : "Error: File not found" }
一旦您添加了该事件,在监视下一次执行的时候,该条件将评估为true。每次执行监视时,条件结果都将作为watch_record的一部分进行记录,因此您可以通过搜索监视历史记录来验证条件是否满足:
GET .watcher-history*/_search?pretty { "query" : { "bool" : { "must" : [ { "match" : { "result.condition.met" : true }}, { "range" : { "result.execution_time" : { "from" : "now-10s" }}} ] } } }
Configure an Action
在监视历史中记录监视记录是不错的,但是当监控条件被满足时,监控的真正实力就能够做到。当监视条件被评估为true时,监视的动作定义应做什么。你可以发送电子邮件,调用第三方webhooks,向Elasticsearch索引写文档,或向标准Elasticsearch日志文件中记录消息。
例如,当检测到错误时,以下操作会将消息写入Elasticsearch日志。
PUT _xpack/watcher/watch/log_error_watch { "trigger" : { "schedule" : { "interval" : "10s" }}, "input" : { "search" : { "request" : { "indices" : [ "logs" ], "body" : { "query" : { "match" : { "message": "error" } } } } } }, "condition" : { "compare" : { "ctx.payload.hits.total" : { "gt" : 0 }} }, "actions" : { "log_error" : { "logging" : { "text" : "Found {{ctx.payload.hits.total}} errors in the logs" } } } }
Delete the Watch
自由于log_error_watch被配置为每10秒运行,因此在完成实验后请确保将其删除。否则,该样本监视的噪音(niose)将使您很难看到您的监视历史记录和日志中发生了什么。
移除该监视,使用DELETE watch API:
DELETE _xpack/watcher/watch/log_error_watch
Where to Go Next
- 有关监视和监视生命周期的解剖结构的更多信息,请参阅监控器的工作原理。
- 有关设置监视的更多实例,请参阅监视例子。
- 请参阅Elastic实例中的监视例子,以获取更多监视实例,您可以将其作为构建自定义监视的起点。
原文地址:https://www.elastic.co/guide/en/x-pack/5.0/watcher-getting-started.html