Configuring SMTP/Email Notifications within Nagios


#1

Hello;

I am running:

Ubuntu 8.04LTS Desktop
Nagios 3.0.3

I have installed sSMTP

I have configured the contacts.cfg file and commands.cfg file to point to /etc/ssmtp/mail

Whenever I forcefully shutdown a monitored server I do not get email alerts. Has anybody had luck with nagios/ssmtp or could suggest another alternative? I really need to get this working.

Thanks in advance,

Jordan


#2

Hello,

firstly, I’m using “/usr/bin/mail” which is working great :slight_smile:

Also, if it doesn’t work for you, it might be because you’ve got an error in your definitions; could you post your command definition, contact def, contact group def and a service/host def ?
maybe someone on the forum can help you :wink:


#3

Can someone please have a look at my config files:

command.cfg

###############################################################################

COMMANDS.CFG - SAMPLE COMMAND DEFINITIONS FOR NAGIOS 3.0.3

Last Modified: 05-31-2007

NOTES: This config file provides you with some example command definitions

that you can reference in host, service, and contact definitions.

You don’t need to keep commands in a separate file from your other

object definitions. This has been done just to make things easier to

understand.

###############################################################################

################################################################################

SAMPLE NOTIFICATION COMMANDS

These are some example notification commands. They may or may not work on

your system without modification. As an example, some systems will require

you to use “/usr/bin/mailx” instead of “/usr/bin/mail” in the commands below.

################################################################################

‘notify-host-by-email’ command definition

define command{
command_name notify-host-by-email
command_line /usr/bin/printf “%b” “***** Nagios ***\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mail -s " $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **” $CONTACTEMAIL$
}

‘notify-service-by-email’ command definition

define command{
command_name notify-service-by-email
command_line /usr/bin/printf “%b” “***** Nagios ***\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/bin/mail -s " $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **” $CONTACTEMAIL$
}

################################################################################

SAMPLE HOST CHECK COMMANDS

################################################################################

This command checks to see if a host is “alive” by pinging it

The check must result in a 100% packet loss or 5 second (5000ms) round trip

average time to produce a critical error.

Note: Five ICMP echo packets are sent (determined by the ‘-p 5’ argument)

‘check-host-alive’ command definition

define command{
command_name check-host-alive
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
}

################################################################################

SAMPLE SERVICE CHECK COMMANDS

These are some example service check commands. They may or may not work on

your system, as they must be modified for your plugins. See the HTML

documentation on the plugins for examples of how to configure command definitions.

NOTE: The following ‘check_local_…’ functions are designed to monitor

various metrics on the host that Nagios is running on (i.e. this one).

################################################################################

‘check_local_disk’ command definition

define command{
command_name check_local_disk
command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
}

‘check_local_load’ command definition

define command{
command_name check_local_load
command_line $USER1$/check_load -w $ARG1$ -c $ARG2$
}

‘check_local_procs’ command definition

define command{
command_name check_local_procs
command_line $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
}

‘check_local_users’ command definition

define command{
command_name check_local_users
command_line $USER1$/check_users -w $ARG1$ -c $ARG2$
}

‘check_local_swap’ command definition

define command{
command_name check_local_swap
command_line $USER1$/check_swap -w $ARG1$ -c $ARG2$
}

‘check_local_mrtgtraf’ command definition

define command{
command_name check_local_mrtgtraf
command_line $USER1$/check_mrtgtraf -F $ARG1$ -a $ARG2$ -w $ARG3$ -c $ARG4$ -e $ARG5$
}

################################################################################

NOTE: The following ‘check_…’ commands are used to monitor services on

both local and remote hosts.

################################################################################

‘check_ftp’ command definition

define command{
command_name check_ftp
command_line $USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$
}

‘check_hpjd’ command definition

define command{
command_name check_hpjd
command_line $USER1$/check_hpjd -H $HOSTADDRESS$ $ARG1$
}

‘check_snmp’ command definition

define command{
command_name check_snmp
command_line $USER1$/check_snmp -H $HOSTADDRESS$ $ARG1$
}

‘check_http’ command definition

define command{
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
}

‘check_ssh’ command definition

define command{
command_name check_ssh
command_line $USER1$/check_ssh $ARG1$ $HOSTADDRESS$
}

‘check_dhcp’ command definition

define command{
command_name check_dhcp
command_line $USER1$/check_dhcp $ARG1$
}

‘check_ping’ command definition

define command{
command_name check_ping
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}

‘check_pop’ command definition

define command{
command_name check_pop
command_line $USER1$/check_pop -H $HOSTADDRESS$ $ARG1$
}

‘check_imap’ command definition

define command{
command_name check_imap
command_line $USER1$/check_imap -H $HOSTADDRESS$ $ARG1$
}

‘check_smtp’ command definition

define command{
command_name check_smtp
command_line $USER1$/check_smtp -H $HOSTADDRESS$ $ARG1$
}

‘check_tcp’ command definition

define command{
command_name check_tcp
command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$
}

‘check_udp’ command definition

define command{
command_name check_udp
command_line $USER1$/check_udp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$
}

‘check_nt’ command definition

define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s nortel5z -v $ARG1$ $ARG2$
}

################################################################################

SAMPLE PERFORMANCE DATA COMMANDS

These are sample performance data commands that can be used to send performance

data output to two text files (one for hosts, another for services). If you

plan on simply writing performance data out to a file, consider using the

host_perfdata_file and service_perfdata_file options in the main config file.

################################################################################

‘process-host-perfdata’ command definition

define command{
command_name process-host-perfdata
command_line /usr/bin/printf “%b” “$LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$HOSTSTATETYPE$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$\n” >> /usr/local/nagios/var/host-perfdata.out
}

‘process-service-perfdata’ command definition

define command{
command_name process-service-perfdata
command_line /usr/bin/printf “%b” “$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\n” >> /usr/local/nagios/var/service-perfdata.out
}

CONTACT.CFG:

###############################################################################

CONTACTS.CFG - SAMPLE CONTACT/CONTACTGROUP DEFINITIONS

Last Modified: 05-31-2007

NOTES: This config file provides you with some example contact and contact

group definitions that you can reference in host and service

definitions.

You don’t need to keep these definitions in a separate file from your

other object definitions. This has been done just to make things

easier to understand.

###############################################################################

###############################################################################
###############################################################################

CONTACTS

###############################################################################
###############################################################################

Just one contact defined by default - the Nagios admin (that’s you)

This contact definition inherits a lot of default values from the ‘generic-contact’

template which is defined elsewhere.

define contact{
contact_name nagiosadmin ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias Jordan S ; Full name of user

    email                           [my@emailaddress.com](mailto:my@emailaddress.com)	; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
    }

###############################################################################
###############################################################################

CONTACT GROUPS

###############################################################################
###############################################################################

We only have one contact in this simple configuration file, so there is

no need to create more than one contact group.

define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin
}

Thanks in advance,

Jordan


#4

At first glance, everything looks normal.
Just a quick question though:

does it work when you try this:

/usr/bin/printf “%b” “***** Nagios ***\n\nNotification Type: NOTIFICATIONTYPE\nHost: HOSTNAME\nState: HOSTSTATE\nAddress: HOSTADDRESS\nInfo: HOSTOUTPUT\n\nDate/Time: LONGDATETIME\n" | /usr/bin/mail -s " NOTIFICATIONTYPE Host Alert: HOSTNAME is HOSTSTATE **” your_email_address


#5

I actually just changed it from /usr/bin/mail and it worked out.

By chance would you know how to change threshholds for like (ie- hard drive space) and outages

Thanks,

Jordan


#6

you just have to edit the values in your cfg files:
ex:
define service{
use System
host_name my_host
service_description check_disk
check_command check_nrpe!check_disk!15%!8%
}


#7

Silly question;

Where would I find this? In what config file?

Please note that this is a windows server and I noticed a command similar in windows.cfg - will that string of code work for a windows machine?

Thanks in advance,

Jordan


#8

=> nagios.sourceforge.net/docs/2_0/toc.html

have a look at:
Configuration overview
Main configuration file options
Object configuration file options

it should answer your questions :slight_smile:


#9

i’m having issue with email notifications also. i can send an email manually. i tried advise above and it worked but if i use $CONTACTEMAIL$ it wont send out an email. please help. TIA