From 7c9f6d224d9bf66bc1c69b1baa066f98b9302999 Mon Sep 17 00:00:00 2001 From: Gabriel Filion Date: Tue, 14 Dec 2010 15:14:54 -0500 Subject: Add nagios IRC bot Koumbit is using an IRC bot that Micah provided. It is a pair of perl scripts that send Nagios notifications as messages in an IRC channel. Add a class to make installing this IRC bot easy. It also defines commands 'notify-by-irc' and 'host-notify-by-irc' that can be used with checks to send notifications via the bot. Signed-off-by: Gabriel Filion --- manifests/irc_bot.pp | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 manifests/irc_bot.pp (limited to 'manifests/irc_bot.pp') diff --git a/manifests/irc_bot.pp b/manifests/irc_bot.pp new file mode 100644 index 0000000..4092e67 --- /dev/null +++ b/manifests/irc_bot.pp @@ -0,0 +1,71 @@ +class nagios::irc_bot { + if ( ! ($nagios_nsa_server and $nagios_nsa_nickname and $nagios_nsa_channel) ) { + fail("Please provide values at least for \$nagios_nsa_server, \$nagios_nsa_nickname and \$nagios_nsa_channel") + } + + $nagios_nsa_socket = $nagios_nsa_socket ? { + '' => '/var/run/nagios3/nsa.socket', + default => $nagios_nsa_socket, + } + $nagios_nsa_pidfile = $nagios_nsa_pidfile ? { + '' => '/var/run/nagios3/nsa.pid', + default => $nagios_nsa_pidfile, + } + $nagios_nsa_port = $nagios_nsa_port ? { + '' => '6667', + default => $nagios_nsa_port, + } + $nagios_nsa_realname = $nagios_nsa_realname ? { + '' => 'Nagios', + default => $nagios_nsa_realname, + } + + if (! $nagios_nsa_password) { + $nagios_nsa_password = '' + } + + file { "/usr/local/bin/riseup-nagios-client.pl": + owner => root, group => root, mode => 0755, + source => "puppet:///modules/nagios/irc_bot/riseup-nagios-client.pl", + } + file { "/usr/local/bin/riseup-nagios-server.pl": + owner => root, group => root, mode => 0755, + source => "puppet:///modules/nagios/irc_bot/riseup-nagios-server.pl", + } + file { "/etc/init.d/nagios-nsa": + owner => root, group => root, mode => 0755, + content => template('nagios/irc_bot/nagios-nsa.sh.erb'), + require => File["/usr/local/bin/riseup-nagios-server.pl"], + } + file { "/etc/nagios_nsa.cfg": + ensure => present, + owner => nagios, group => root, mode => 0400, + content => template('nagios/irc_bot/nsa.cfg.erb'), + } + + package { "libnet-irc-perl": + ensure => present, + } + + exec { "nagios_nsa_init_script": + command => "/usr/sbin/update-rc.d nagios-nsa defaults", + unless => "/bin/ls /etc/rc3.d/ | /bin/grep nagios-nsa", + require => File["/etc/init.d/nagios-nsa"], + } + service { "nagios-nsa": + ensure => "running", + pattern => "riseup-nagios-server.pl", + hasstatus => true, + require => [File["/etc/nagios_nsa.cfg"], + Exec["nagios_nsa_init_script"], + Package["libnet-irc-perl"], + Service['nagios'] ], + } + + nagios_command { + "notify-by-irc": + command_line => '/usr/local/bin/riseup-nagios-client.pl "$HOSTNAME$ ($SERVICEDESC$) $NOTIFICATIONTYPE$ n.$SERVICEATTEMPT$ $SERVICESTATETYPE$ $SERVICEEXECUTIONTIME$s $SERVICELATENCY$s $SERVICEOUTPUT$ $SERVICEPERFDATA$"'; + "host-notify-by-irc": + command_line => '/usr/local/bin/riseup-nagios-client.pl "$HOSTNAME$ ($HOSTALIAS$) $NOTIFICATIONTYPE$ n.$HOSTATTEMPT$ $HOSTSTATETYPE$ took $HOSTEXECUTIONTIME$s $HOSTOUTPUT$ $HOSTPERFDATA$ $HOSTLATENCY$s"'; + } +} -- cgit v1.2.3 From af846ae596b65be991b1648fcb3b8da02e9aeb1d Mon Sep 17 00:00:00 2001 From: mh Date: Sun, 6 Feb 2011 23:58:46 +0100 Subject: centosify irc_bot --- manifests/irc_bot.pp | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'manifests/irc_bot.pp') diff --git a/manifests/irc_bot.pp b/manifests/irc_bot.pp index 4092e67..46cea0c 100644 --- a/manifests/irc_bot.pp +++ b/manifests/irc_bot.pp @@ -34,7 +34,7 @@ class nagios::irc_bot { } file { "/etc/init.d/nagios-nsa": owner => root, group => root, mode => 0755, - content => template('nagios/irc_bot/nagios-nsa.sh.erb'), + content => template("nagios/irc_bot/${operatingsystem}/nagios-nsa.sh.erb"), require => File["/usr/local/bin/riseup-nagios-server.pl"], } file { "/etc/nagios_nsa.cfg": @@ -47,21 +47,33 @@ class nagios::irc_bot { ensure => present, } - exec { "nagios_nsa_init_script": - command => "/usr/sbin/update-rc.d nagios-nsa defaults", - unless => "/bin/ls /etc/rc3.d/ | /bin/grep nagios-nsa", - require => File["/etc/init.d/nagios-nsa"], - } service { "nagios-nsa": ensure => "running", - pattern => "riseup-nagios-server.pl", hasstatus => true, require => [File["/etc/nagios_nsa.cfg"], - Exec["nagios_nsa_init_script"], Package["libnet-irc-perl"], Service['nagios'] ], } + case $operatingsystem { + centos: { + Package['libnet-irc-perl']{ + name => 'perl-Net-IRC', + } + Service['nagios-nsa']{ + enable => true, + } + } + debian,ubuntu: { + exec { "nagios_nsa_init_script": + command => "/usr/sbin/update-rc.d nagios-nsa defaults", + unless => "/bin/ls /etc/rc3.d/ | /bin/grep nagios-nsa", + require => File["/etc/init.d/nagios-nsa"], + before => Service['nagios-nsa'], + } + } + } + nagios_command { "notify-by-irc": command_line => '/usr/local/bin/riseup-nagios-client.pl "$HOSTNAME$ ($SERVICEDESC$) $NOTIFICATIONTYPE$ n.$SERVICEATTEMPT$ $SERVICESTATETYPE$ $SERVICEEXECUTIONTIME$s $SERVICELATENCY$s $SERVICEOUTPUT$ $SERVICEPERFDATA$"'; -- cgit v1.2.3 From 6e520987ac41ef144f236c05b8095f285251471b Mon Sep 17 00:00:00 2001 From: mh Date: Mon, 7 Feb 2011 00:36:10 +0100 Subject: fix pid/socket location for centos, open firewall if we want to connect to an irc server --- manifests/irc_bot.pp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'manifests/irc_bot.pp') diff --git a/manifests/irc_bot.pp b/manifests/irc_bot.pp index 46cea0c..760abd0 100644 --- a/manifests/irc_bot.pp +++ b/manifests/irc_bot.pp @@ -4,11 +4,17 @@ class nagios::irc_bot { } $nagios_nsa_socket = $nagios_nsa_socket ? { - '' => '/var/run/nagios3/nsa.socket', + '' => $operatingsystem ? { + centos => '/var/run/nagios-nsa/nsa.socket', + default => '/var/run/nagios3/nsa.socket' + }, default => $nagios_nsa_socket, } $nagios_nsa_pidfile = $nagios_nsa_pidfile ? { - '' => '/var/run/nagios3/nsa.pid', + '' => $operatingsystem ? { + centos => '/var/run/nagios-nsa/nsa.socket', + default => '/var/run/nagios3/nsa.pid' + }, default => $nagios_nsa_pidfile, } $nagios_nsa_port = $nagios_nsa_port ? { @@ -80,4 +86,8 @@ class nagios::irc_bot { "host-notify-by-irc": command_line => '/usr/local/bin/riseup-nagios-client.pl "$HOSTNAME$ ($HOSTALIAS$) $NOTIFICATIONTYPE$ n.$HOSTATTEMPT$ $HOSTSTATETYPE$ took $HOSTEXECUTIONTIME$s $HOSTOUTPUT$ $HOSTPERFDATA$ $HOSTLATENCY$s"'; } + + if $use_shorewall { + include shorewall::rules::out::irc + } } -- cgit v1.2.3 From 85e6650451538486bd72b1206caf898d573ba987 Mon Sep 17 00:00:00 2001 From: mh Date: Mon, 7 Feb 2011 01:00:15 +0100 Subject: fix naming --- manifests/irc_bot.pp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'manifests/irc_bot.pp') diff --git a/manifests/irc_bot.pp b/manifests/irc_bot.pp index 760abd0..961755a 100644 --- a/manifests/irc_bot.pp +++ b/manifests/irc_bot.pp @@ -12,7 +12,7 @@ class nagios::irc_bot { } $nagios_nsa_pidfile = $nagios_nsa_pidfile ? { '' => $operatingsystem ? { - centos => '/var/run/nagios-nsa/nsa.socket', + centos => '/var/run/nagios-nsa/nsa.pid', default => '/var/run/nagios3/nsa.pid' }, default => $nagios_nsa_pidfile, -- cgit v1.2.3