Sensu说: 当检查结果表明状态发生变化时,将创建Sensu事件。
是否可能创建一个不是由检查结果引起的自定义事件?
Sensu API没有创建事件的命令:https://sensuapp.org/docs/latest/api-events。
Sensu说: 当检查结果表明状态发生变化时,将创建Sensu事件。
是否可能创建一个不是由检查结果引起的自定义事件?
Sensu API没有创建事件的命令:https://sensuapp.org/docs/latest/api-events。
是的,但是在Uchiwa中会显示一个勾选框——尽管它没有在sensu中定义。
请查看此页面:https://sensuapp.org/docs/0.16/external_result_input
在Linux客户端上运行了以下命令:
echo '{ "name": "my_check", "output": "some output", "status": 0 }' > /dev/tcp/localhost/3030
然后它神奇地出现在Uchiwa客户端的检查列表下。
接着我再次运行它,将状态字段设置为1:
echo '{ "name": "my_check", "output": "some output", "status": 1 }' > /dev/tcp/localhost/3030
而Uchiwa将其显示为警告。
我第三次以状态2运行它,果然如预期地变成了关键问题。再次使用状态0运行将使其返回正常状态。
因此,根据您想要实现的目标,您可以在客户端上使用PHP/Python/任何其他语言执行此操作,然后在sensu服务器上为其定义处理程序以执行所需操作。只需将处理程序名称添加到JSON中,并传递任何其他要传递的数据。
例如:
echo '{ "name": "trickyCheck", "output": "cake is delicious", "status": 0, "handler": "handlerOfDoom", "link": "http://cats.com" }' > /dev/tcp/localhost/3030
处理程序:
{
"handlers": {
"handlerOfDoom": {
"type": "pipe",
"command": "doSomethingCool.rb",
"severities": ["warning","critical"]
}
}
}
}
这个 Ruby 脚本将可以访问 JSON 中的所有内容,包括输出、链接、状态等等…所以你可以在那里做你需要做的事情。
如果要在 Windows 上使用 Sensu 实现相同的功能可能需要另一个工具来将数据发送到本地主机上的 TCP 端口。详情可参考:https://serverfault.com/questions/629682/send-text-string-to-a-socket-in-windows