My oncall rotation defines time periods based a persons geo graphic location. But our escalations need to go out to the entire team regardless of when they occur. Currently the only way I've found to configure this in nagios is to create two contacts for each person
One that is a specific timeperiod the other that is 24x7 then use the 24x7 contact in the escalations. I'd like to be able to only maintain 1 contact per person.
define contact {
contact_name bobjones
service_notification_period ops-shift4-oncall
host_notification_period ops-shift4-oncall
host_notification_options d,u,r
service_notification_commands service-notify
host_notification_commands host-notify
email [email protected]
pager bjones
}
define contact {
contact_name bobjones_24x7
service_notification_period 24x7
host_notification_period 24x7
host_notification_options d,u,r
service_notification_commands service-notify
host_notification_commands host-notify
email [email protected]
pager bjones
}
You can use escalation_period to define when an escalation goes out. So you can do something like
etc.
Then make sure that the contact groups contain the appropriate people. That sends the first notification to the appropriate group depending on the time period. So you create a dummy group "no one" or something similar and put that in the service declaration, so that it doesn't actually send to anyone at all.
Have you checked out http://nagios.sourceforge.net/docs/1_0/escalations.html?
I think you can just add the one user to multiple contact groups to do what you want.
It might not be appropriate for your situation, but I got around having multiple contacts for the same person in Nagios by using distro groups. Instead of setting up an individual, I setup up groups in exchange. The Nagios contacts never change, but the distro groups fluctuate all the time.