Home / Integration plugins / Nagios SMS Integration

+

Send SMS alerts from Nagios

Nagios alerts reach the person on duty as an SMS. SMSEagle sends them over its own cellular connection, so they don’t depend on internet access or a cloud service.

Works with Nagios notification commands

You add SMSEagle as a notification command in Nagios, so alerts go out by SMS for the hosts and services you choose.

You know what stopped working

Separate notifications for servers and services mean the SMS tells you straight away where the problem is.

Works without internet

SMSEagle sends alerts through its own SIM card straight to the mobile network, so they don’t depend on internet access or a cloud SMS provider.

How it works

1

Event Trigger

Nagios detects a host or service state change, for example a server going DOWN or a monitored service turning CRITICAL.

2

Communication

Nagios sends an HTTP API request directly to SMSEagle over your local network.

3

Alert

SMSEagle delivers the alert over its own cellular connection, not through a third-party service, as an SMS to the recipient’s phone.

Set up in about 10 minutes

Thanks to HTTP API support in SMSEagle and a ready-made notification script for Nagios, you can get everything running in about five minutes. Generate an API token in SMSEagle, define the notification commands in Nagios, and you’re done.

SMSEagle sends Nagios alerts to the right person by SMS, day and night.

No per-message fees

SMSEagle sends SMS through a regular SIM card, so you only pay for your mobile plan.

Alerts keep going if one carrier fails

On devices with two SIM cards from different operators, SMSEagle switches to the second one when the first operator’s network is down.

Alerts keep working even if one device fails

Two SMSEagle devices can work as an HA cluster: if one fails, the other takes over sending.

SMSEagle configuration

    1. Create a new user for this script in the SMSEagle web interface: menu System > Users.
    2. Create an API key for that user in Settings > Global settings > API, page API v1:
      • a) click Create API key, fill in Key name and select that user as Owner
      • b) set the APIv1 permissions listed below, then click Create key

  • The access token is shown only once, right after saving. This API token will be referenced below as SMSEAGLEAPITOKEN. Replace SMSEAGLEAPITOKEN in script below with your value.

    In the key form, add the permissions for APIv1 methods you want to use:
      • Send SMS => sms
      • Ring call => ring
      • Text-to-speech call => tts
      • Advanced text-to-speech call => tts_adv

    Nagios configuration

    1. Create the SMS notification commands. (Commonly found in commands.cfg)
    2. Replace SMSEAGLEURL with URL Address of your SMSEagle device (for example: https://192.168.50.150)
    3. Replace SMSEAGLEAPITOKEN with your API token for your SMSEagle (for example: NZg2yNmWYb5Q7I3Y3Ifnk5E)
      (Optional parameter for calls, default: 10) Add -duration parameter with call duration value (in seconds, e.g. -duration 15)
      (Required for TTS Advanced) Replace SMSEAGLEVOICE with voice model ID (found in SMSEagle menu, Calls > TTS Voice models)

    Define below commands:

    define command {
            command_name notify-by-sms 
            command_line $USER1$/notify_eagle_sms.pl -s SMSEAGLEURL -a SMSEAGLEAPITOKEN -dstaddr $CONTACTPAGER$ -t "$NOTIFICATIONTYPE$ $SERVICESTATE$ $SERVICEDESC$ Host($HOSTNAME$) Info($SERVICEOUTPUT$) Date($SHORTDATETIME$)" 
    } 
    
    define command { 
            command_name host-notify-by-sms 
            command_line $USER1$/notify_eagle_sms.pl -s SMSEAGLEURL -a SMSEAGLEAPITOKEN -dstaddr $CONTACTPAGER$ -t "$NOTIFICATIONTYPE$ $HOSTSTATE$ Host($HOSTALIAS$) Info($HOSTOUTPUT$) Time($SHORTDATETIME$)" 
    }
    
    define command { 
            command_name notify-by-ring-call 
            command_line $USER1$/notify_eagle_sms.pl -s SMSEAGLEURL -a SMSEAGLEAPITOKEN -c ring -dstaddr $CONTACTPAGER$ -t "$NOTIFICATIONTYPE$ $SERVICESTATE$ $SERVICEDESC$ Host($HOSTNAME$) Info($HOSTOUTPUT$) Time($SHORTDATETIME$)" 
    }
    
    define command { 
            command_name host-notify-by-ring-call 
            command_line $USER1$/notify_eagle_sms.pl -s SMSEAGLEURL -a SMSEAGLEAPITOKEN -c ring -dstaddr $CONTACTPAGER$ -t "$NOTIFICATIONTYPE$ $HOSTSTATE$ Host($HOSTALIAS$) Info($HOSTOUTPUT$) Time($SHORTDATETIME$)" 
    }
    
    define command { 
            command_name notify-by-tts-call 
            command_line $USER1$/notify_eagle_sms.pl -s SMSEAGLEURL -a SMSEAGLEAPITOKEN -c tts -dstaddr $CONTACTPAGER$ -t "$NOTIFICATIONTYPE$ $SERVICESTATE$ $SERVICEDESC$ Host($HOSTALIAS$) Info($HOSTOUTPUT$) Time($SHORTDATETIME$)" 
    }
    
    define command { 
            command_name host-notify-by-tts-call 
            command_line $USER1$/notify_eagle_sms.pl -s SMSEAGLEURL -a SMSEAGLEAPITOKEN -c tts -dstaddr $CONTACTPAGER$ -t "$NOTIFICATIONTYPE$ $HOSTSTATE$ Host($HOSTALIAS$) Info($HOSTOUTPUT$) Time($SHORTDATETIME$)" 
    }
    
    define command { 
            command_name notify-by-tts-adv-call
            command_line $USER1$/notify_eagle_sms.pl -s SMSEAGLEURL -a SMSEAGLEAPITOKEN -c tts_adv -dstaddr $CONTACTPAGER$ -voiceid SMSEAGLEVOICE -t "$NOTIFICATIONTYPE$ $SERVICESTATE$ $SERVICEDESC$ Host($HOSTALIAS$) Info($HOSTOUTPUT$) Time($SHORTDATETIME$)" 
    }
    
    define command { 
            command_name host-notify-by-tts-adv-call
            command_line $USER1$/notify_eagle_sms.pl -s SMSEAGLEURL -a SMSEAGLEAPITOKEN -c tts_adv -dstaddr $CONTACTPAGER$ -voiceid SMSEAGLEVOICE -t "$NOTIFICATIONTYPE$ $HOSTSTATE$ Host($HOSTALIAS$) Info($HOSTOUTPUT$) Time($SHORTDATETIME$)" 
    }
    
     
    1. In your nagios contacts (Commonly found on contacts.cfg) add the contact.
      Field “pager” should contain a mobile number for sms alerts in full international format e.g. 48xxxxxxxxx

    define contact { contact_name engineer alias Support Engineer service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,u,r service_notification_commands notify-by-email,notify-by-sms host_notification_commands host-notify-by-email,host-notify-by-sms email engineer@somedomain.com pager 48xxxxxxxx }

    If you would like to use a newline character in your text message use the following string for a newline: "$'\n'". For example:

    $USER1$/notify_eagle_sms.pl -s SMSEAGLEURL -a SMSEAGLEAPITOKEN -d $CONTACTPAGER$ -t "$NOTIFICATIONTYPE$"$'\n'"$HOSTSTATE$"$'\n'"Host($HOSTALIAS$)"$'\n'"Info($HOSTOUTPUT$)"$'\n'"Time($SHORTDATETIME$)"

    Notice for Nagios XI users: If you encounter perl error, please add the path to the perl executable at the start of the command in Nagios.

    If you encounter the following error during the script run: “Message sending error: LWP will support https URLs if the LWP::Protocol::https module is installed.“, make sure you have liblwp-protocol-https-perl package installed in your system.

    Explore SMSEagle Demo device

    SMSEagle is a hardware & software solution that guarantees a swift delivery of your messages to designated recipients, whether it’s for notifications, alerts, or important updates.

    After registering to a demo you get a remote access to our physical device NXS-9750.

    • 14-days free trial
    • Access to over 20 functionalities

    What is hardware
    SMS Gateway?

    Learn more about
    SMSEagle features