Nagios 松弛通道集成

Posted

技术标签:

【中文标题】Nagios 松弛通道集成【英文标题】:Nagios slack channel integration 【发布时间】:2021-06-07 16:06:02 【问题描述】:

我正在使用 slack_nagios.pl 脚本。 Ubuntu 14.05 和 Nagios 4.4.5 https://raw.githubusercontent.com/tinyspeck/services-examples/master/nagios.pl 我有一个频道工作,但我需要向不同的频道发送通知。就我而言:警告已转到“it_warning”,严重警报必须转到“it_critical”。我已经创建了 2 组如下所示的松弛通知命令,但我始终只在一个通道中收到警报(警告)。就像 slack 不能在 2 个命令之间有所不同,尽管在“slack”联系人的 service_notification_options 部分中有 w,r 而在“slack_critical”中有 c,r。

没有收到错误,单独测试通道工作正常。 你能帮助我或指出正确的方向吗?

define contact 
   contact_name                     slack
   alias                            Slack
   service_notification_period      24x7
   host_notification_period         24x7
   service_notification_options     w,r
   host_notification_options        d,r
   service_notification_commands    notify-service-by-slack
   host_notification_commands       notify-host-by-slack
   

define contact 
   contact_name                     slack_critical
   alias                            Slack_critical
   service_notification_period      24x7
   host_notification_period         24x7
   service_notification_options     c,r
   host_notification_options        d,r
   service_notification_commands    notify-service-critical-by-slack
   host_notification_commands       notify-host-critical-by-slack
   

define contactgroup
    contactgroup_name       admins
    alias                   Nagios Administrators
    members                 slack,nagiosadmin,slack_critical
    


define command 
   command_name     notify-service-by-slack
   command_line     /usr/local/bin/slack_nagios.pl -field slack_channel=#it-warnings -field HOSTALIAS="$HOSTNAME$" -field SERVICEDESC="$SERVICEDESC$" -field SERVICESTATE="$SERVICESTATE$$
   

define command 
   command_name     notify-host-by-slack
   command_line     /usr/local/bin/slack_nagios.pl -field slack_channel=#it-warnings -field HOSTALIAS="$HOSTNAME$" -field HOSTSTATE="$HOSTSTATE$" -field HOSTOUTPUT="$HOSTOUTPUT$" -field$
   

    define command 
   command_name     notify-service-critical-by-slack
   command_line     /usr/local/bin/slack_nagios.pl -field slack_channel=#it-critical -field HOSTALIAS="$HOSTNAME$" -field SERVICEDESC="$SERVICEDESC$" -field SERVICESTATE="$SERVICESTATE$$
   

define command 
   command_name     notify-host-critical-by-slack
   command_line     /usr/local/bin/slack_nagios.pl -field slack_channel=#it-critical -field HOSTALIAS="$HOSTNAME$" -field HOSTSTATE="$HOSTSTATE$" -field HOSTOUTPUT="$HOSTOUTPUT$" -field$
   

【问题讨论】:

“它不起作用”不是可接受的问题描述 谢谢。我已经用更多数据编辑了帖子。 您应该从阅读 nagios.log 开始,并在您希望通知发出时查看它的内容。它会告诉你正在使用哪个命令。如果您只在#it-warnings 中收到消息,那可能是因为“松弛”联系人或底层命令是唯一使用的。 您好,我已经发布了解决方案。有感觉就来看看吧。谢谢 【参考方案1】:

我已经找到了解决方案。这里是配置警告警报以发送到特定通道并将严重警报发送到另一个通道的步骤。

您必须创建 2 个单独的文件,其中包含联系人、组和命令,如下所示,更改频道、service_notification_options、service_notification_commands、host_notification_commands 不要忘记将contact_groups(将为2)添加到您定义服务的文件中。如果可以的话,请给我点赞。谢谢!

define contact 
  contact_name                             slack
  alias                                    Slack
  service_notification_period              24x7
  host_notification_period                 24x7
  service_notification_options             w,u,r
  host_notification_options                d,r
  service_notification_commands            notify-service-by-slack
  host_notification_commands               notify-host-by-slack 
  

define contactgroup
    contactgroup_name       admins
    alias                   Nagios Administrators
    members                 nagiosadmin,slack
    


define command 
  command_name     notify-service-by-slack
  command_line     /usr/local/bin/slack_nagios.pl -field slack_channel=#it-alerts-test -field HOSTALIAS="$HOSTNAME$" -field HOSTSTATE="$HOSTSTATE$" -field HOSTOUTPUT="$HOSTOUTPUT$" -field NOTIFICATIONTYPE="$NOTIFICATIONTYPE$"
  

define command 
  command_name     notify-host-by-slack
  command_line     /usr/local/bin/slack_nagios.pl -field slack_channel=#it-alerts-test -field HOSTALIAS="$HOSTNAME$" -field HOSTSTATE="$HOSTSTATE$" -field HOSTOUTPUT="$HOSTOUTPUT$" -field NOTIFICATIONTYPE="$NOTIFICATIONTYPE$" 
  


define service 
name                            generic-service  
retain_status_information       1                   
retain_nonstatus_information    1              
is_volatile                     0                      
check_period                    24x7                 
max_check_attempts              3                      
check_interval                  10                      
retry_interval                  2   
contact_groups                  admins,admins_critical  
notification_interval           60                     
notification_period             24x7

【讨论】:

以上是关于Nagios 松弛通道集成的主要内容,如果未能解决你的问题,请参考以下文章

python 在松弛通道中清除消息

如何自动将组成员添加到适合某个 REGEX 的松弛通道

使用 Zapier 集成向 Slack 频道消息添加按钮

如何从普罗米修斯警报中标记松弛通道中的用户

sh 如果进程不再运行,则通知松弛通道/用户 - 以:./ slack_notify.sh <在proc中正在查看的内容开始

Prometheus alertmanager 向多个 slack 通道发送通知