Nagios reading results from a file?



At my company, we are concerned with the potential performance issues with having several monitors and several plugins polling our database at possibly frequent intervals. If I can gather all the necessary information myself, does a plugin exist that can read all the data necessary off of, say, a file? This way we don


Are you trying to have a host dump its status info into a file and just send that over to Nagios?

I’m also interested in what kind of performance issues you’re concerned with. Is it the possibility of a large amount of overhead that concerns you?
Edited Wed Dec 14 2005, 04:47PM ]


basically we want to avoid polling our database frequently to check for status of all the services. so we woudl like to retrieve our service statuses through a different means, then have nagios read a file (or whatever) for the results and then continue with normal action thereafter. main point being we avoid


If you want to avoid Nagios polling the status of remote services/hosts, you might consider installing a daemon that runs locally and will send nagios its stats, the point being that Nagios will be receiving passive checks on these services. I bevlieve that the NSCA plugin is that kind of daemon, but I could be wrong.


The obvious answer would seem to be to change the frequency that the plugin runs at - once an hour (or day), say, instead of once every 3 minutes. (If you weren’t aware, you can override the default frequency for a specific check.)

Also, if you have any sort of scripting ability (I run it on Linux, so for me, that’s dirt easy), you can write your own plugin, which can do pretty much anything you dream up. The format of what to reply to Nagios when it calls you is very simple, and pretty well documented. You don’t have have to have a large complicated program in order to write a plugin.


All of the above are great suggestions. This is what I have setup.
NSCA daemon on nagios server. Nsca script on each of 6 Oracle database servers running Solaris. On each remote server, there is a small nagios setup that runs checks. These checks are the check_oracle plugins that query the db for many different things, tablespace free, etc. Each check outputs it’s data using the nsca script, which connects to the nsca daemon on nagios server, that data then is written to the external command file, and then processed by the nagios server.

What the above does to help you, is this. There is no active connection from nagios server to db server. All db checks are done locally withing the check_oracle plugin which are extreemely fast and don’t hold up anyone. DB are designed to handle thousands of queries per second, so I doubt that you are placing any kind of load on the server. I’ve monitored the load imposed by my kind of setup, and it can’t even be measured. Nagios has never locked up, never did anything bad to the server, and is performing flawlessly. Checks are done every 5 minutes and have given us warning of many impending troubles of tablespace being filled up. We graph each check on nagios server with nagiostat.

But to answer your question directly, yes. Just make sure your script outputs to the external command file with the proper syntax.

Edited Fri Dec 16 2005, 05:24PM ]