当前位置:  开发笔记 > 编程语言 > 正文

手动触发Sensu事件

如何解决《手动触发Sensu事件》经验,为你挑选了1个好方法。

Sensu说:当检查结果显示状态发生变化时,会创建一个Sensu事件.

是否可以创建一个不是检查结果的自定义事件?

Sensu API无法创建事件:https://sensuapp.org/docs/latest/api-events .



1> 小智..:

是的,但它会看起来在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

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有