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实现相同功能,可能需要使用其他工具将数据发送到localhost上的tcp端口. https://serverfault.com/questions/629682/send-text-string-to-a-socket-in-windows