From: Martin C. W. <wal...@be...> - 2003-06-29 21:58:32
|
I am trying to process performance data to generate rrd's which I can then use with APAN, Cacti and some other stuff. I am in a distributed monitoring environment. Remote nagios boxen execute service checks against their various local machines and send the results back to the central host via nsca over stunnel. central box cannot check remote hosts and services. it is passive only. Now I want to generate rrd's which have to live on the central host (not each individual machine). I do not want to execute each check more than once (ie NOT once for nagios and once for performance data) and I do not want to repetitively copy rrd's from the remote boxen to the central host. that means that the data used to create the rrd's comes from the service check output. it doesn't look like there is any benefit to using nagios process_perf_data as that only gives me a line of text data on the sensor box which I still have to parse and send to the central box for processing into rrdtool. It looks like I can get everything I need from nagios.log entries on the central box. that includes the timestamp, host, service, results output. so, what I plan on doing is writing a daemon (perl probably) that reads input lines from nagios.log and matches them against a configuration file to see if they are of interest (obviously I'm not graphing every service check). if the result is to be graphed I then pull out the interesting data and do an rrdupdate with it. its the pulling out of interesting data that has me stumped. I was planning on a configuration file that had entries of the form SENSOR_NAME;HOST_NAME;SERVICE_NAME;DSN1:expr1;[DSN2:expr2;...DSNn:exprn;] my daemon would match host_name and service_name entries in the nagios.log file and update the rrdfile in /usr/local/rra/$SENSOR_NAME/$HOST_NAME/$SERVICE_NAME.rrd using -template and the DSN names defined in the configuration file. The expression associated with each DSN in the configuration file is the string manipulation code to apply to the output string in the nagios.log to pluck out the data that goes into the rrd file. So, my questions, before I (attempt to) write all this: 1. is this the way to go or am I missing something? 2. if it is the way to go, has someone already written it? 3. if not, can anyone give me some pointers on what to use and how to write the expr bits? I am planning on using perl since it is supposed to have good string manipulation and has rrdtool bindings. Learning Perl will be part of this effort since I havn't done much more than print "Hello World\n" with it. Is Perl the best choice for this? |