Page 1 of 1
Suppress all host notifications
Posted: Thu Mar 05, 2015 5:02 am
by ashykneecaps
Hi, I have a few servers monitored with nagios and among them I have a test server. I would like to know if there is an easy way to suppress all notifications (host and service) caused by this test server without having to double the entries in my services config file.
Perhaps something along the lines of? (which doesn't work btw)
Code: Select all
define host{
name test-box
use generic-host
contact_groups admins
host_notification_period never
services_notification_period never
}
Re: Suppress all host notifications
Posted: Thu Mar 05, 2015 10:30 am
by rhassing
Code: Select all
#Disable notifications for this service
notifications_enabled 0
Re: Suppress all host notifications
Posted: Thu Mar 05, 2015 11:14 am
by jdalrymple
You cannot modify the behavior of services assigned to a host from within the host definition. This would be the best read to understand how that all works:
http://nagios.sourceforge.net/docs/3_0/ ... tance.html
I would probably create non-prod/test host and service templates and apply them to the appropriate hosts and services:
Code: Select all
define host{
name test-host-template
register 0
use generic-host
notifications_enabled 0
}
define service{
name test-service-template
register 0
use generic-service
notifications_enabled 0
}
Code: Select all
define host{
name test-box
use test-host-template
contact_groups admins
}
define service{
name test-box-service
use test-service-template
contact_groups admins
}
This would be the proper way to go about it if you have scalability in mind.
Re: Suppress all host notifications
Posted: Thu Mar 05, 2015 11:33 am
by rhassing
Sorry, my answer was for a service. I didn't read it too well.
Re: Suppress all host notifications
Posted: Thu Mar 05, 2015 12:11 pm
by ssax
OP, let us know if jdalrymple's solution works for you.
Re: Suppress all host notifications
Posted: Fri Mar 06, 2015 2:23 am
by ashykneecaps
Sorry I failed to mention that this test server is set up in the exact same way as many other servers. My services config looks something like this for all my services
Code: Select all
define service {
hostgroup_name real-servers,test-servers
service_description Current Load
check_command check_nrpe_1arg!check_load_nrpe
use generic-service
}
where my test server belongs to the hostgroup called test-servers.
Using a separate service template for what I'm trying to achieve will have me doubling the number of services in my config (unless Im missing something)
Code: Select all
define service {
hostgroup_name real-servers
service_description Current Load
check_command check_nrpe_1arg!check_load_nrpe
use generic-service
}
Code: Select all
define service {
hostgroup_name test-servers
service_description Current Load
check_command check_nrpe_1arg!check_load_nrpe
use test-service-template
}
Is there no other way to suppress notifications on a per host basis?
Re: Suppress all host notifications
Posted: Fri Mar 06, 2015 10:14 am
by jdalrymple
What you're trying to achieve will work, but it will also be the potential cause for confusion down the road if you have a big environment. There is an implied inheritance builtin to Nagios where that a few host definition objects will be applied downstream to services. See the section in the link I sent you about "Implied Inheritance"
the reason your host definition didn't work is because there are no such directives:
Code: Select all
host_notification_period never
services_notification_period never
In order to achieve that implied inheritance you would instead just use:
Code: Select all
define host{
name test-box
use generic-host
contact_groups admins
notification_period none
}
"never" is not a builtin timeperiod, but "none" is so unless you've customized that's what you'll want. You'll also find that this will break if one of the upstream service templates you use defines a notification period - which most of the builtin defaults do.
If you want to do it in a fashion that is more logical and scales better though I'd still recommend sticking with my initial configuration outline. Properly done your "duplicate" service would be comprised of 6 lines:
Code: Select all
define service{
name nonprod-service
use prod-service
notifications_enabled 0
hostgroup_name nonprod
}
The idea being that later down the road you aren't pulling your hair out trying to identify why you're not getting notifications - in this instance it's very clear why.
Re: Suppress all host notifications
Posted: Wed Mar 11, 2015 3:57 am
by ashykneecaps
Thanks for your advice thus far @jdalrymple
Just out of curiosity, would using service dependencies not be a better solution? Reading up on them, I think I may have found a kind of hack to achieve what I need.
--> Set all services stemming from the test-servers host group to be dependent on a service from a real server, but configured to never notify regardless of the state of its own service or the service it "depends on"
Code: Select all
define servicedependency{
host_name real-server
service_description some-service
dependent_hostgroup_name test-servers
dependent_service_description *
execution_failure_criteria n
notification_failure_criteria u,w,c,o,p
}
What's your take on this?
Re: Suppress all host notifications
Posted: Wed Mar 11, 2015 10:45 am
by jdalrymple
Your logic is sound, it *should* work. Here are my observations:
1 - I'm not certain "dependant_hostgroup_name" is a valid directive for a servicedependency
2 - I'm not certain wildcards will expand in dependent_service_descriptions
3 - Doing this would be an edge case where you have 1 (or at least very few) different types of hosts since that's how you're cascading downward, if they're not similar you'll have to create this servicedependency for each different type of host that you have
4 - We're straying back towards the world of "why in the world is it behaving this way"
Unless you have a ridiculous number of services to deploy (and I don't mean service instances, but rather just types of services) the amount of added work to achieve your original goal using templates and hostgroups is truly negligible.
I will concede though that if points 1 & 2 don't prove to be showstoppers then your logic regarding using a servicedependency should create the services for you.