示例手表
edit示例监视器
edit以下示例展示了如何设置一个监视器来:
有关更多示例监视器,您可以将其用作构建自定义监视器的起点,请参阅 Elastic 示例库中的 示例监视器。
监控 Elasticsearch 集群的状态
edit您可以轻松配置一个基本监视器来监控您的 Elasticsearch 集群的健康状况:
- 安排监视并定义一个输入,用于获取集群健康状态。
- 添加一个条件,用于评估健康状态以确定是否需要采取行动。
- 如果集群为红色,则采取行动。
安排监视并添加输入
edit一个监视器计划控制监视器触发的频率。 监视器输入获取您要评估的数据。
定义计划的最简单方法是指定一个间隔。例如,以下计划每10秒运行一次:
|
调度通常配置为运行频率较低。此示例将间隔设置为10秒,以便您可以轻松看到监视器被触发。由于此监视器运行如此频繁,请不要忘记在完成实验后删除监视器。 |
要获取集群的状态,您可以调用集群健康API:
GET _cluster/health?pretty
要将健康状态加载到您的手表中,您只需添加一个调用集群健康 API 的 HTTP 输入:
PUT _watcher/watch/cluster_health_watch
{
"trigger" : {
"schedule" : { "interval" : "10s" }
},
"input" : {
"http" : {
"request" : {
"host" : "localhost",
"port" : 9200,
"path" : "/_cluster/health"
}
}
}
}
如果你使用的是Security,那么你还需要在watch配置中提供一些认证凭证:
PUT _watcher/watch/cluster_health_watch
{
"trigger" : {
"schedule" : { "interval" : "10s" }
},
"input" : {
"http" : {
"request" : {
"host" : "localhost",
"port" : 9200,
"path" : "/_cluster/health",
"auth": {
"basic": {
"username": "elastic",
"password": "x-pack-test-password"
}
}
}
}
}
}
为使用这种监控配置,创建一个具有最低权限要求的用户是一个好主意。
根据您的集群配置,在监视器可以访问您的集群之前,可能需要额外的设置,例如密钥库、信任库或证书。有关更多信息,请参阅Watcher设置。
如果您查看监视历史记录,您会看到每次执行监视时,集群状态都会作为watch_record的一部分被记录下来。
例如,以下请求从观看历史记录中检索最后十个观看记录:
GET .watcher-history*/_search
{
"sort" : [
{ "result.execution_time" : "desc" }
]
}
添加一个条件
edit一个条件评估您加载到监视中的数据,并确定是否需要采取任何行动。由于您已经定义了一个加载集群状态到监视中的输入,您可以定义一个检查该状态的条件。
例如,您可以添加一个条件来检查状态是否为红色。
PUT _watcher/watch/cluster_health_watch
{
"trigger" : {
"schedule" : { "interval" : "10s" }
},
"input" : {
"http" : {
"request" : {
"host" : "localhost",
"port" : 9200,
"path" : "/_cluster/health"
}
}
},
"condition" : {
"compare" : {
"ctx.payload.status" : { "eq" : "red" }
}
}
}
如果您查看监视历史记录,您会看到每次执行监视时,条件结果都会作为watch_record的一部分被记录下来。
要检查条件是否满足,您可以运行以下查询。
GET .watcher-history*/_search?pretty
{
"query" : {
"match" : { "result.condition.met" : true }
}
}
采取行动
edit在观看历史记录中记录watch_records是很好的,但Watcher的真正强大之处在于能够在警报响应时执行某些操作。一个观察的actions定义了当观察条件为真时要执行的操作——您可以发送电子邮件、调用第三方webhooks,或者在满足观察条件时将文档写入Elasticsearch索引或日志。
例如,您可以在状态为RED时添加一个操作来索引集群状态信息。
PUT _watcher/watch/cluster_health_watch
{
"trigger" : {
"schedule" : { "interval" : "10s" }
},
"input" : {
"http" : {
"request" : {
"host" : "localhost",
"port" : 9200,
"path" : "/_cluster/health"
}
}
},
"condition" : {
"compare" : {
"ctx.payload.status" : { "eq" : "red" }
}
},
"actions" : {
"send_email" : {
"email" : {
"to" : "username@example.org",
"subject" : "Cluster Status Warning",
"body" : "Cluster status is RED"
}
}
}
}
为了使 Watcher 发送电子邮件,您必须在您的 elasticsearch.yml 配置文件中配置一个电子邮件账户并重新启动 Elasticsearch。要添加电子邮件账户,请设置 xpack.notification.email.account 属性。
例如,以下代码片段配置了一个名为 work 的单个 Gmail 账户:
xpack.notification.email.account:
work:
profile: gmail
email_defaults:
from: <email>
smtp:
auth: true
starttls.enable: true
host: smtp.gmail.com
port: 587
user: <username>
password: <password>
如果您为电子邮件帐户启用了高级安全选项, 您需要采取额外步骤从 Watcher 发送电子邮件。有关更多信息,请参阅 配置电子邮件帐户。
您可以查看观看历史记录或status_index以确认操作已执行。
GET .watcher-history*/_search?pretty
{
"query" : {
"match" : { "result.condition.met" : true }
}
}
删除监视
edit由于cluster_health_watch配置为每10秒运行一次,请确保在完成实验后删除它。否则,您将无限期地给自己发送垃圾信息。
要移除监视器,请使用删除监视器 API:
DELETE _watcher/watch/cluster_health_watch