Sensu说: 当检查结果指示状态改变时,创建Sensu事件。
是否可以创建一个不是检查结果的自定义事件?
Sensu API无法创建活动:https://sensuapp.org/docs/latest/api-events。
答案 0 :(得分:5)
是的,但它会在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实现相同功能,可能需要使用其他工具将数据发送到localhost上的tcp端口。 https://serverfault.com/questions/629682/send-text-string-to-a-socket-in-windows