Use Asterisk for Nagios Notifications


This is a description about how to connect Nagios to Asterisk.
So you can receive automatic phone calls if Nagios reports some failure. Here is an example about you may hear:
Cepstral TTS Demo

There is also another script on-line that lets your Nagios box call thru the Asterisk Manager protocol (that way you can have your Nagios installation on a separate box). See for more information.


  • Operating system: Red Hat, CentOS, Fedora or Ubuntu

Tested scenario

  • Ubuntu 8.04

  • Nagios 3.0.1

  • Cepstral Swift 4.2.1

  • Asterisk 1.4.17

Nagios configuration



define contact{
        contact_name                    nagiosadmin
        use                             generic-contact
        alias                           Nagios Admin
        service_notification_commands   notify-service-by-phone
        host_notification_commands      notify-host-by-phone
        address2                        SIP/1000

Notification command

vim /usr/local/nagios/etc/objects/commands.cfg


define command{
        command_name notify-host-by-phone
        command_line $USER1$/ $CONTACTADDRESS2$ "Nagios Host Alarm. Notification Type: $NOTIFICATIONTYPE$. Host: $HOSTNAME$. State: $HOSTSTATE$. Address: $HOSTADDRESS$ Info: $HOSTOUTPUT$ Time: $LONGDATETIME$" _host_$HOSTEVENTID$


define command{
        command_name notify-service-by-phone
        command_line $USER1$/ $CONTACTADDRESS2$ "Nagios Service Alarm. Notification Type: $NOTIFICATIONTYPE$. Service: $SERVICEDESC$. Host: $HOSTALIAS$. Address: $HOSTADDRESS$. State: $SERVICESTATE$. Time: $LONGDATETIME$. Additional Info: $SERVICEOUTPUT$" _service_$SERVICEEVENTID$


Asterisk configuration



exten => s,1,Answer
exten => s,2,NoOp(alarmid: ${alarmid})
exten => s,3,Playback(/var/spool/alarm/alarm${alarmid})
exten => s,4,Hangup

Connection script

see also Asterisk auto-dial out


cd /var/spool/alarm
echo $alarmtext > alarm$alarmid.txt
/opt/swift/bin/swift -n Allison-8KHz -f alarm$alarmid.txt -o alarm$alarmid.tmp.wav
/usr/bin/sox alarm$alarmid.tmp.wav -r 8000 alarm$alarmid.ul
/bin/mv -f alarm$alarmid.ul alarm$alarmid.ulaw
/bin/rm alarm$alarmid.tmp.wav
echo "Channel: $1
MaxRetries: 2
RetryTime: 60
WaitTime: 30
Context: alarm
Extension: s 
Priority: 1
Set: alarmid=$alarmid" > alarm$ 

/bin/chmod 777 alarm$ 
/bin/mv alarm$ /var/spool/asterisk/outgoing

Setup procedure

prerequisites: Nagios, Asterisk and Cepstral installed

as root:

apt-get install sox
apt-get install libsox-fmt-all
mkdir /var/spool/alarm
chown nagios.asterisk /var/spool/alarm/

usermod -G nagcmd,asterisk nagios
vim /usr/local/nagios/libexec/   # (copy and paste above script)
chown nagios.nagios /usr/local/nagios/libexec/ 
chmod 750 /usr/local/nagios/libexec/
vim /usr/local/nagios/etc/objects/contacts.cfg  # (copy and paste above config)
vim /usr/local/nagios/etc/objects/commands.cfg  # (copy and paste above config)
/etc/init.d/nagios reload
vim /etc/asterisk/extensions.conf   # (copy and paste above config)
/etc/init.d/asterisk reload

Test via command line

su nagios
/usr/local/nagios/libexec/ SIP/1000 "hello world" first_test_id

Created by: hgrimm, Last modification: Mon 06 of Oct, 2008 (17:37 UTC) by jlmaritnez
Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - Find us on Google+