手动触发Sensu事件

时间:2015-12-18 16:40:18

标签: sensu

Sensu说: 当检查结果指示状态改变时,创建Sensu事件。

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

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

1 个答案:

答案 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