I think the answer to your question is not definitive, but will reveal itself over time as you develop a deeper understanding of how Nagios works. Services are generally tied directly to the host they run on, but as you are discovering, that is just a convention. A convention that works and provides some shortcuts, mind you, but a convention, nonetheless.
Also know that that you can define any check as the host check. It does not need to be ping. Perhaps check_http is better for your use.
define host{
use generic-host,host-pnp ; Name of host template to use
host_name www.microsoft.com
alias www.microsoft.com
address www.microsoft.com
check_command check_http
.
.
.
}
Given what you've said, I would create a dummy service with a bunch of you third party services tied to it for now and adjust it as you see fit.
To address your 3rd question, if you go the route of a host per service, you could use a host or service group to group them for display.
I know it's an old post, but I just ran across this question while I was looking for something else. I'm not much of a nagios expert, but I do love it.
Any check that you place in a hostgroup will apply to any host in that hostgroup (which you knew already). If you create the same check in the host cfg, then it'll override the hostgroup check.
Anyhow, the way I do this is to:
1. Set up a hostgroup cfg file with the checks in it.
Here's my basic C: drive space check.
define service{
use generic-service
hostgroup_name windows-servers
service_description C: Drive Space
notification_period workhours
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}
2. However, one server runs with much less free space than the norm. So in it's host cfg, I have:
define service{
use generic-service
host_name ServerName
service_description C: Drive Space
check_command check_nt!USEDDISKSPACE!-l c -w 95 -c 99
notification_period workhours
}
Now the service check is going to alert you for 80% and 90% for all hosts in the hostgroup, except for the host that you added the check with the change values in it.
Arranging it this way allows me to only add custom services, and service checks that aren't the norm in the host definition.
I'm not sure if this is common use or not, but this article blew my mind when it came to setting up the config files. I was already tired of editing these humongous text files, and this just made it so easy.
Anyway, I hope that helps.
Best Answer
If a contacts/contact_group is not defined by the service (or any of the parent objects) then the hosts contact information will be used.
So the simple answer is to simply make sure that the contacts/contacts_group variables are NOT defined for that service.
http://nagios.sourceforge.net/docs/3_0/objectinheritance.html#implied_inheritance