nchekwa / icinga2-pnp4n_notifications

Icinga2 Notifications Script

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

icinga2-pnp4n_notifications

Icinga2 Notifications Script

Where file should be installed:

bash# ls -al /etc/icinga2/scripts/
drwxr-xr-x 2 www-data icingaweb2  4096 lis 20 15:18 lang
-rwxr-xr-x 1 www-data icingaweb2 30901 lis 20 20:04 pnp4n_send_host_mail.pl
-rwxr-xr-x 1 www-data icingaweb2 31266 lis 20 20:08 pnp4n_send_service_mail.pl
drwxr-xr-x 2 www-data icingaweb2  4096 lis 20 19:41 settings
bash#

How to define NotificationCommand:

bash# cat  /etc/icinga2/conf.d/notifications.conf
/** ------------------------------------------------------------------------ **/
/**
 * PNP4N Notification
 * Only applied if host/service objects have the custom attribute `sla` set to `24x7`.
 **/
/** ------------------------------------------------------------------------ **/

    object NotificationCommand "notify-host-en" {
            import "plugin-notification-command"
    
            command = [ SysconfDir + "/icinga2/scripts/pnp4n_send_host_mail.pl" ]
            arguments = {"-l" = "en" }
            env = {
                    NOTIFICATIONTYPE        = "$notification.type$"
                    NOTIFICATIONAUTHOR      = "$notification.author$"
                    NOTIFICATIONCOMMENT     = "$host.notes$"
                    HOSTNAME                = "$host.name$"
                    HOSTDISPLAYNAME         = "$host.display_name$"
                    HOSTGROUPNAME           = "$host.groups$"
                    HOSTADDRESS             = "$host.address$"
                    HOSTSTATE               = "$host.state$"
                    HOSTOUTPUT              = "$host.output$"
                    LONGDATETIME            = "$icinga.long_date_time$"
                    CONTACTEMAIL            = "$user.email$"
                    CONTACTGROUPMEMBERS     = ""
                    }
    }

    object NotificationCommand "notify-service-en" {
            import "plugin-notification-command"
    
            command = [ SysconfDir + "/icinga2/scripts/pnp4n_send_service_mail.pl"]
            arguments = {"-l" = "en" }
            env =   {
                    NOTIFICATIONTYPE        = "$notification.type$"
                    NOTIFICATIONAUTHOR      = "$notification.author$"
                    NOTIFICATIONCOMMENT     = "$service.notes$"
                    HOSTNAME                = "$host.name$"
                    HOSTDISPLAYNAME         = "$host.display_name$"
                    HOSTGROUPNAME           = "$host.groups$"
                    HOSTADDRESS             = "$host.address$"
                    SERVICEDESC             = "$service.name$"
                    SERVICESTATE            = "$service.state$"
                    SERVICEGROUPNAME        = ""
                    SERVICEOUTPUT           = "$service.output$"
                    LONGDATETIME            = "$icinga.long_date_time$"
                    CONTACTEMAIL            = "$user.email$"
                    CONTACTGROUPMEMBERS     = ""
                    }
    }

After add this settings - when host or service will have sla="24x7 and will belong to group "Icinga Admins" autmaticly will recived emails:

    bash# cat /etc/icinga2/conf.d/users.conf
    /** ------------------------------------------------------------------------ **/
    /** --- Icinga Admins ------------------------------------------------------ **/
    /** ------------------------------------------------------------------------ **/
    object UserGroup "Icinga Admins" {
            display_name = "Icinga 2 Admin Group"
            }
    
    object HostGroup "Icinga Admins" {
            display_name = "UPC Poland Icinga Admins"
            }
    
    apply Notification "Icinga Admins - Host Notification" to Host {
            command = "notify-host-en"
            user_groups = [ "Icinga Admins" ]
            assign where host.vars.sla == "24x7" && "Icinga Admins" in host.groups
            }
    
    apply Notification "Icinga Admins - Service Notification" to Service {
            command = "notify-service-en"
            user_groups = [ "Icinga Admins" ]
            assign where host.vars.sla == "24x7" && "Icinga Admins" in host.groups
            }
    
    --- end ---
    bash#

Exemple host configuration:

    bash# cat /etc/icinga2/hosts/myhost.conf
    object Host "myhost" {
            import "generic-host"
            address                 = "1.1.1.1"
            vars.hardware           = "HP"
            vars.os                 = "Linux"
            vars.snmp_community     = "myROcommunity"
            vars.sla                = "24x7"
    
            /* Define http vhost attributes for service apply rules in `services.conf`. */
            vars.http_vhosts["myhost.domain.com HTTP"] = {
                    http_address    = "myhost.domain.com"
                    http_uri        = "/"
                    http_port       = 80
                    }
    
            vars.http_vhosts["myhost.domain.com HTTPS"] = {
                    http_address    = "imyhost.domain.com"
                    http_uri        = "/"
                    http_port       = 443
                    http_ssl        = "true"
                    }
    
            groups = [ "Icinga Admins" ]
            notes = "Location: Beverly Hills, 90210"
            }

About

Icinga2 Notifications Script

License:GNU General Public License v2.0


Languages

Language:Perl 90.7%Language:Perl 6 9.3%