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 --- templates/irc_bot/nagios-nsa.sh.erb | 71 +++++++++++++++++++++++++++++++++++++ templates/irc_bot/nsa.cfg.erb | 13 +++++++ 2 files changed, 84 insertions(+) create mode 100644 templates/irc_bot/nagios-nsa.sh.erb create mode 100644 templates/irc_bot/nsa.cfg.erb (limited to 'templates/irc_bot') diff --git a/templates/irc_bot/nagios-nsa.sh.erb b/templates/irc_bot/nagios-nsa.sh.erb new file mode 100644 index 0000000..61cc063 --- /dev/null +++ b/templates/irc_bot/nagios-nsa.sh.erb @@ -0,0 +1,71 @@ +#! /bin/sh + +### BEGIN INIT INFO +# Provides: nagios-nsa +# Required-Start: $remote_fs $syslog $nagios +# Required-Stop: $remote_fs $syslog $nagios +# Default-Start: 2 3 4 5 +# Default-Stop: 1 6 0 +# Short-Description: Nagios Simple IRC Agent +### END INIT INFO + +PIDFILE=<%= nagios_nsa_pidfile %> +SOCKFILE=<%= nagios_nsa_socket %> + +. /lib/lsb/init-functions + +start() { + log_daemon_msg "Starting nagios IRC bot" "nagios-nsa" + if start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --user nagios --exec /usr/local/bin/riseup-nagios-server.pl; then + log_end_msg 0 + else + log_end_msg 1 + fi +} + +stop () { + log_daemon_msg "Stopping nagios IRC bot" "nagios-nsa" + if start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE; then + log_end_msg 0 + else + log_end_msg 1 + fi +} + +remove_socket() { + [ -e $SOCKFILE ] && rm $SOCKFILE +} + +cleanup() { + if [ -r $PIDFILE ]; then + ps -p `cat $PIDFILE` | grep -v 'PID' || { + echo "not running" + remove_socket + } + else + echo "no pid file" + remove_socket + fi +} + +case $1 +in + start) + start + ;; + stop) + stop + ;; + restart) + stop + cleanup + start + ;; + status) + status_of_proc -p $PIDFILE /usr/local/bin/riseup-nagios-server.pl && exit 0 || exit $? + ;; + *) + log_action_msg "Usage: /etc/init.d/nagios-nsa {start|stop|restart|status}" + exit 1 +esac + diff --git a/templates/irc_bot/nsa.cfg.erb b/templates/irc_bot/nsa.cfg.erb new file mode 100644 index 0000000..7cba62c --- /dev/null +++ b/templates/irc_bot/nsa.cfg.erb @@ -0,0 +1,13 @@ +%Nsa = ( + 'socket' => '<%= nagios_nsa_socket %>', + 'server' => '<%= nagios_nsa_server %>', + 'port' => '<%= nagios_nsa_port %>', + 'nickname' => '<%= nagios_nsa_nickname %>', + 'password' => '<%= nagios_nsa_password %>', + # this needs libio-socket-ssl-perl + # doesn't actually works because Net::IRC is braindead and tries to use IO::Socket::SSL->read/write instead of the builtin print, see http://search.cpan.org/dist/IO-Socket-SSL/SSL.pm + #'SSL' => 0, + 'channel' => '<%= nagios_nsa_channel %>', + 'pidfile' => '<%= nagios_nsa_pidfile %>', # set to undef to disable + 'realname' => "<%= nagios_nsa_realname %>", +); -- cgit v1.2.3 From 3de9b084b260a1625bfba803a4ff4d68f89d2260 Mon Sep 17 00:00:00 2001 From: Gabriel Filion Date: Wed, 26 Jan 2011 12:18:55 -0500 Subject: irc bot: Adjust arguments to start-stop-daemon The start method lacks a parameter that sets the daemon with the right uid: --chuid The stop method does not error out when trying to stop a daemon that does not run. Now the daemon should behave better. --- templates/irc_bot/nagios-nsa.sh.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'templates/irc_bot') diff --git a/templates/irc_bot/nagios-nsa.sh.erb b/templates/irc_bot/nagios-nsa.sh.erb index 61cc063..6e608db 100644 --- a/templates/irc_bot/nagios-nsa.sh.erb +++ b/templates/irc_bot/nagios-nsa.sh.erb @@ -16,7 +16,7 @@ SOCKFILE=<%= nagios_nsa_socket %> start() { log_daemon_msg "Starting nagios IRC bot" "nagios-nsa" - if start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --user nagios --exec /usr/local/bin/riseup-nagios-server.pl; then + if start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --user nagios --chuid nagios --exec /usr/local/bin/riseup-nagios-server.pl; then log_end_msg 0 else log_end_msg 1 @@ -25,7 +25,7 @@ start() { stop () { log_daemon_msg "Stopping nagios IRC bot" "nagios-nsa" - if start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE; then + if start-stop-daemon --stop --quiet --pidfile $PIDFILE; then log_end_msg 0 else log_end_msg 1 -- 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 --- templates/irc_bot/CentOS/nagios-nsa.sh.erb | 102 +++++++++++++++++++++++++++++ templates/irc_bot/Debian/nagios-nsa.sh.erb | 71 ++++++++++++++++++++ templates/irc_bot/nagios-nsa.sh.erb | 71 -------------------- 3 files changed, 173 insertions(+), 71 deletions(-) create mode 100644 templates/irc_bot/CentOS/nagios-nsa.sh.erb create mode 100644 templates/irc_bot/Debian/nagios-nsa.sh.erb delete mode 100644 templates/irc_bot/nagios-nsa.sh.erb (limited to 'templates/irc_bot') diff --git a/templates/irc_bot/CentOS/nagios-nsa.sh.erb b/templates/irc_bot/CentOS/nagios-nsa.sh.erb new file mode 100644 index 0000000..a6cee66 --- /dev/null +++ b/templates/irc_bot/CentOS/nagios-nsa.sh.erb @@ -0,0 +1,102 @@ +#!/bin/sh +# +# nagios-nsa - manage nagios irc bot +# +# chkconfig: - 99 01 +# description: Nagios Simple IRC Agent + +### BEGIN INIT INFO +# Provides: nagios-nsa +# Required-Start: $nagios +# Required-Stop: $nagios +# Default-Start: 2 3 4 5 +# Default-Stop: 1 6 0 +# Short-Description: Nagios Simple IRC Agent +### END INIT INFO + +# Source function library. +. /etc/rc.d/init.d/functions + +exec="/usr/local/bin/riseup-nagios-server.pl" +prog="nsa" +PIDFILE=<%= nagios_nsa_pidfile %> +SOCKFILE=<%= nagios_nsa_socket %> + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog + +lockfile=/var/lock/subsys/$prog + +start() { + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + echo -n $"Starting $prog: " + daemon --pidfile $PIDFILE --user nagios /usr/local/bin/riseup-nagios-server.pl + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc -p $PIDFILE $prog + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + # run checks to determine if the service is running or use generic status + status -p $PIDFILE $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? diff --git a/templates/irc_bot/Debian/nagios-nsa.sh.erb b/templates/irc_bot/Debian/nagios-nsa.sh.erb new file mode 100644 index 0000000..6e608db --- /dev/null +++ b/templates/irc_bot/Debian/nagios-nsa.sh.erb @@ -0,0 +1,71 @@ +#! /bin/sh + +### BEGIN INIT INFO +# Provides: nagios-nsa +# Required-Start: $remote_fs $syslog $nagios +# Required-Stop: $remote_fs $syslog $nagios +# Default-Start: 2 3 4 5 +# Default-Stop: 1 6 0 +# Short-Description: Nagios Simple IRC Agent +### END INIT INFO + +PIDFILE=<%= nagios_nsa_pidfile %> +SOCKFILE=<%= nagios_nsa_socket %> + +. /lib/lsb/init-functions + +start() { + log_daemon_msg "Starting nagios IRC bot" "nagios-nsa" + if start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --user nagios --chuid nagios --exec /usr/local/bin/riseup-nagios-server.pl; then + log_end_msg 0 + else + log_end_msg 1 + fi +} + +stop () { + log_daemon_msg "Stopping nagios IRC bot" "nagios-nsa" + if start-stop-daemon --stop --quiet --pidfile $PIDFILE; then + log_end_msg 0 + else + log_end_msg 1 + fi +} + +remove_socket() { + [ -e $SOCKFILE ] && rm $SOCKFILE +} + +cleanup() { + if [ -r $PIDFILE ]; then + ps -p `cat $PIDFILE` | grep -v 'PID' || { + echo "not running" + remove_socket + } + else + echo "no pid file" + remove_socket + fi +} + +case $1 +in + start) + start + ;; + stop) + stop + ;; + restart) + stop + cleanup + start + ;; + status) + status_of_proc -p $PIDFILE /usr/local/bin/riseup-nagios-server.pl && exit 0 || exit $? + ;; + *) + log_action_msg "Usage: /etc/init.d/nagios-nsa {start|stop|restart|status}" + exit 1 +esac + diff --git a/templates/irc_bot/nagios-nsa.sh.erb b/templates/irc_bot/nagios-nsa.sh.erb deleted file mode 100644 index 6e608db..0000000 --- a/templates/irc_bot/nagios-nsa.sh.erb +++ /dev/null @@ -1,71 +0,0 @@ -#! /bin/sh - -### BEGIN INIT INFO -# Provides: nagios-nsa -# Required-Start: $remote_fs $syslog $nagios -# Required-Stop: $remote_fs $syslog $nagios -# Default-Start: 2 3 4 5 -# Default-Stop: 1 6 0 -# Short-Description: Nagios Simple IRC Agent -### END INIT INFO - -PIDFILE=<%= nagios_nsa_pidfile %> -SOCKFILE=<%= nagios_nsa_socket %> - -. /lib/lsb/init-functions - -start() { - log_daemon_msg "Starting nagios IRC bot" "nagios-nsa" - if start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --user nagios --chuid nagios --exec /usr/local/bin/riseup-nagios-server.pl; then - log_end_msg 0 - else - log_end_msg 1 - fi -} - -stop () { - log_daemon_msg "Stopping nagios IRC bot" "nagios-nsa" - if start-stop-daemon --stop --quiet --pidfile $PIDFILE; then - log_end_msg 0 - else - log_end_msg 1 - fi -} - -remove_socket() { - [ -e $SOCKFILE ] && rm $SOCKFILE -} - -cleanup() { - if [ -r $PIDFILE ]; then - ps -p `cat $PIDFILE` | grep -v 'PID' || { - echo "not running" - remove_socket - } - else - echo "no pid file" - remove_socket - fi -} - -case $1 -in - start) - start - ;; - stop) - stop - ;; - restart) - stop - cleanup - start - ;; - status) - status_of_proc -p $PIDFILE /usr/local/bin/riseup-nagios-server.pl && exit 0 || exit $? - ;; - *) - log_action_msg "Usage: /etc/init.d/nagios-nsa {start|stop|restart|status}" - exit 1 -esac - -- 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 --- templates/irc_bot/CentOS/nagios-nsa.sh.erb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'templates/irc_bot') diff --git a/templates/irc_bot/CentOS/nagios-nsa.sh.erb b/templates/irc_bot/CentOS/nagios-nsa.sh.erb index a6cee66..1561afd 100644 --- a/templates/irc_bot/CentOS/nagios-nsa.sh.erb +++ b/templates/irc_bot/CentOS/nagios-nsa.sh.erb @@ -25,6 +25,8 @@ SOCKFILE=<%= nagios_nsa_socket %> [ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog lockfile=/var/lock/subsys/$prog +mkdir -p /var/run/nagios-nsa 2>/dev/null +chown nagios /var/run/nagios-nsa start() { [ -x $exec ] || exit 5 -- cgit v1.2.3