NSClient++ 0.0.1 RC5 updated (and new CheckFileSize plugin)

Andreas Ericsson ae at op5.se
Wed Mar 2 11:20:17 CET 2005


Michael Medin wrote:
> Hi,
> 
> First off sorry for the lateness, but I've been home sick the last week 
> and been rather unproductive.
> Anyways here is a new version that has a few new features and a few new 
> fixes.
> 
> Mainly;
> * Improved thread safety in Core
> This *might* fix the crash that someone had.
> 
> + Added exception handling and logging in PDH code
> This should give better error messages in these parts (as opposed to 
> before when they silently failed).
> 
> + New module for check size of files/directories
> Hehe, bored last week I did a quick plug in to check the size of a file, 
> group of files, directory.
> 
> * Changed build to Dynamic link
> Someone said this was better, I'm skeptical. Mainly this means (for non 
> programmers) that there are now 3 DLLs distributed along with NSClient 
> (and the files are smaller).
> 
> * Changed the default port to 12489.
> 
> * Added a simple/rough/quick check_nscp client for *nix (so now you can 
> use the EventlogChecker that has been there for a while :)
> 
> Now for the details.
> This build has an optional debug log "mode" that I would like everyone 
> that run into problems to enable.
> Edit NSC.ini and make sure this is not commented out: "debug=1". Also if 
> you run into problems feel free to send along the log (NSC.log). And as 
> usually you can run it with -test and use the console logger.
> 
> Secondly the new CheckFileSize plug-in is used along the following lines:
> CheckFileSize&<option>&<option>
> where <option> one of the following:
> MaxWarn=<size gmkb>
> MaxCrit=<size gmkb>
> MinWarn=<size gmkb>
> MinCrit=<size gmkb>
> ShowAll
> File=<path>
> File:<shortname>=<path>
> 
> <size gmkb> is a size with a possible modifier letter (such as G for 
> gigabyte, M for Megabyte, K for kilobyte etc)
> 
> This means that 
> CheckFileSize&ShowAll&MaxWarn=1024M&MaxCrit=4096M&File:WIN=c:\WINDOWS\*.*
> Will check all files under c:\windows and using the short name WIN, and 
> warn if the size is above 1024megabytes and Critical if the size is 
> above 4096megabytes.
> On my computer this returns:
> WIN: 1G (2110962363B)|WIN:2110962363:1073741824:4294967296
> 

I believe the proper perfparse output should be
WIN=22110962363b;warn;crit;min;max;
where min would always be 0 and max should be left out, unless it 
mentions the disk size.

> Known bugs:
> returned size are truncated to G for instance the above should have been 
> 1.96G not 1G.

Isn't this fixable through a typecast as such;
div = 0;
char div_chr_list[3] = "KMG";
fsize = size;
while(fsize > 1024 && div < 2) {
	fsize /= 1024;
	div++;
}
printf("WIN: %.2f%cB (%lu)|blahblah", (double)size, div_chr_list[div], 
size);

or something.

> performance data only shows max warn and crit (not minimum)
> 
> 
> Thirdly:
> The Eventlog Checker
> 
> CheckEventLog&<logfile>&<Query string>&<Query string>...
> This is rather complex, and I think next update will be a web interface 
> for the SF page where I can start documenting these but a few simple 
> ideas on how it works:
> CheckEventLog&Application&warn.require.eventType=warnig&critical.require.eventType=error&truncate=1024&descriptions&all.exclude.eventSourceRege 
> 
> xp=^(Win|Msi|NSClient\+\+|Userenv|ASP\.NET|LoadPerf|Outlook|ApplicatioE|NSClient).* 
> 
> 
> /Application
> /log file (options are System, Security and whatever you have in your 
> syslog)
> /warn.require.eventType=warnig
> /Means for an event to be considerd a warning it has to have event type 
> "warning" (options are information, error, etc)
> /critical.require.eventType=error
> /Means for an event to be considerd an error it has to have event type 
> "error.
> /truncate=1024
> /Truncate the response at 1024 chars (to prevent buffers from overflowing)
> /descriptions
> /Means we show description for events.
> /all.exclude.eventSourceRegexp=^(Win|Msi|NSClient\+\+|Userenv|ASP\.NET|LoadPerf|Outlook|ApplicatioE|NSClient).* 
> 
> /This means we exclude (from all, as in warning and error) all event 
> sources matching this regular expression.
> 
> A quick note on "warn.require.eventType" they all look 
> <type>.<action>.<key> where;
> type is: warn, error, all
> action is: require, exclude
> and key can be one of the following:
> eventType, eventSource, eventSourceRegexp, generatedBeforeDelta, 
> generatedAfterDelta, writtenBeforeDelta, writtenAfterDelta, regexp
> As I said this is rather complex and not easy, I will try to clear the 
> documentation up, and also look at similar projects to see how they do 
> things. This was just done so I could see if it was possible.
> 
> 
> Fourth:
> check_nscp is included under unix_client. This is a C client (hacked 
> version of check_nt) for unix that is more generic and should work to 
> send checks to NSClient++ (not regular NSClient), mainly I would use 
> this only to play with CheckEventLog and CheckFileSize.
> 
> Usage: check_nscp -H host [-p port] -c command -s password [-t timeout]
> 
> Options:
> -H, --hostname=HOST
>  Name of the host to check
> -p, --port=INTEGER
>  Optional port number (default: 12489)
> -s, --password <password>
>  Password needed for the request
> -c, --command <command>
>  Command to execute on remote node
> -t, --timeout=INTEGER
>  Seconds before connection attempt times out (default: 10)
> -h, --help
>  Print this help screen
> -V, --version
>  Print version information
> 
> The -c <command> is they key, here you enter the *entire* command, as 
> oposed to check_nt that has other arguments.
> So -c 
> 'CheckFileSize&ShowAll&MaxWarn=1024M&MaxCrit=4096M&File:WIN=c:\WINDOWS\*.*' 
> will do the Checksize exaple from before.
> 

Would it be terribly difficult to implement some nrpe-like functionality 
in this? I would love to be able to use one client for all the checks.

> To compile this *I* did:
> gcc -I. -I.. -I../lib -I../intl -I/include -g -O2 -MT check_nscp.o -MD 
> -MP -c -o check_nscp.o check_nscp.c;
> gcc -g -O2  -L. -L/usr/lib -o check_nscp check_nscp.o netutils.o utils.o 
> ../lib/libnagiosplug.a ../lib/libcoreutils.a -lnsl -lresolv -I/usr/include
> But that was because that was what check_nt did on my computer, so if 
> someone is good at making ./configure or make for *nix feel free to help 
> me out.
> 
> Ohh, lastly: http://sourceforge.net/projects/nscplus/ is where you will 
> find it :)
> 
> 
> Anyways now I'm off for bed...
> 
> // Michael Medin
> 
> 

-- 
Andreas Ericsson                   andreas.ericsson at op5.se
OP5 AB                             www.op5.se
Lead Developer


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
Nagios-users mailing list
Nagios-users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-users
::: Please include Nagios version, plugin version (-v) and OS when reporting any issue. 
::: Messages without supporting info will risk being sent to /dev/null





More information about the Users mailing list