Monitor services only for some hosts

I have a some Linux-based set-top boxes (Enigma2 based). I’m monitoring some aspects of it via service checks (e.g. disk status, etc.). All of this works fine, however given the nature of those hosts I do not really care whether they are powered on, so I don’t want to be notified about any changes to the host states. However I want to run the service checks whenever the hosts are up and running and want to be notified about any issues with the services. When the hosts are down, nothing should be tested / done, but I also don’t want to receive any notifications.

What is the best (i.e. most elegant) way to configure this, so it can be specified on a per-host basis while most of the other hosts will still be fully monitored?

icinga should define a few dependencies between host checks and service checks by default, take a look at them

Icinga was not built for hosts that are sometimes up and sometimes not. Whenever an object is down, that’s a problem in Icingas view. You could circumvent this with some dependencies and commands via API but it will always be some improvised solution.

The easiest way to achieve what you want seems to be a tool (or startup/shutdown scripts on the hosts) that sets and deletes downtimes for the specifiv hosts. I’ve never done this before so I can’t tell you how well this might work out.

2 Likes

Yeah, actually I was thinking about some EventCommand that will automatically acknowledge the problem for those hosts, but not sure if there way any easier / better / elegant way.

Thank you for your input.

I’m not really sure how this would solve my problem? What exactly do you have in mind? I can see the dependencies and objects of course, but actually I do not want some of the notifications assigned to the hosts.

you could use dependencies to disable all host checks when the host goes down. This “could” work but I’m not entirely sure about it. A better way would be to set downtimes when they go shutdown.

If you dont want notifications of this hosts and their services, just set enable_notifications to false.
Also you could change the host/service objects to be passive and send the check results, from a cron scritpt) via API to Icinga.

Regards,
Carsten

I’m not quite sure if this is actually what I’m loooking for. I want to get notifications, but only for services and only if the host is up. In case the host is down, I don’t want to get any notifications.

You could try the following:

  1. disable notifications to your host objects
  2. create dependency for according service objects e.g.:
apply Dependency "disable-service-notification" to Service {
   parent_host_name = host.name
   disable_notifications = true

   assign where host.name
}

(adapt the assign part if you don’t want it for every service object)

This is the icinga2 default, if I understand you correctly
If a host is down there are no notification beeing sent for its services (implicit dependency).
The servcies will still be checked, and if the host is up again you will get notifications for them

1 Like

Yes, that’s true. But I also don’t want to get any notifications when the host is down and ideally also want the problem to be acknowledged and/or not even considered to be a problem in the first place, since I don’t care whether the machine(s) are up or not. But I do care about their services whenever the machine(s) are up.

Then go with a shutdown / boot script on your host that sets or deletes a downtime on this specific host.