PIKT Logo PIKT

Tutorial: Conducting a Test

PIKT Tip Jar
PIKT is user-supported software. 
Please show your support.
 
Home
News
Introduction
Samples
Tutorial
Reference
Software
Authors
Licensing



Forum
Marketplace
Links
SiteSearch
FAQ
Contribute
Donate
ContactUs



Google
Web pikt.org


Conducting a Test

Now it's time to push the envelope just a little bit.  Visit alarms.cfg and review the DiskFullCritical script:

	/////////////////////////////////////////////////////////////////////////////

	DiskFullCritical

	        init
	                status active
	                level critical
	                task "Report if disks are full"
	                input proc "=dfk | =behead(1)"
	                dat #cap   $-1
	                dat $mount $

	        rule
	                if #cap >= 100%
	                        output mail "Filesystem $mount is
                                             $text(100*#cap,0)% full"
	                endif

	/////////////////////////////////////////////////////////////////////////////
	
The macro =dfk is something you might have to adjust.  PIKT macros are defined in macros.cfg or one of its #include files.  You will find the =dfk definition in macros/unixcmds_macros.cfg:
	dfk             /usr/bin/df -k
	
On a Solaris system, this command will output a df display with the percent Capacity utilization figure in the second-from-the-last field as in
	/dev/dsk/c0t0d0s3     492422   10616   432564      2%   /var
	
You should substitute whatever command path is more appropriate for your OS (for example, /bin/bdf) as well as the command options that will yield the desired results (for example, omit the -k).

The =behead() macro, defined in the top-level macros.cfg, invokes the Unix sed command to chop off the first N lines of input, in this case 1.

You could just uncomment the line

                        // DiskFullCritical
	
in the Critical alerts stanza, but let's try something different.  At the end of the starter alerts.cfg file you will find the Test alert.  DiskFullCritical is already listed, and uncommented.  Try reinstalling all of the alerts but this time with the +D test option:
	/pikt/bin/piktc -iv +D test +A all +H mysystem

	processing mysystem...
	installing file(s)...
	Test.alt installed
	Debug.alt installed
	Critical.alt installed
	
Unlike before, because by +D test you in effect set the test define to TRUE, the lines between the #ifdef test ... #endifdef were not bypassed, so piktc detected and installed Debug.alt, along with the other two.

Try running the Debug alerts at the command line:

	/pikt/bin/pikt +A Test
	Filesystem /pub/comp_disk_23 is 100% full
	
On our test system, PIKT has detected a full disk!  More likely than not, on your system no disk is 100% full, and your pikt command yielded no output.  Let's force the issue.

Edit the /pikt/lib/alerts/Test.alt file, changing the threshold from 100% to some lower figure, say 25%:

                if #cap >= 25%
	
Then rerun '/pikt/bin/pikt +A Test'.  Did you get output this time?  If you didn't, perhaps it's because you need to edit a command path in macros.cfg.  Inspect the Test.log file:
	cat /pikt/var/log/Test.log
	...
	sh: line 1: /usr/bin/df: No such file or directory
	...
	
Ah, that's the problem!  If so, fix the df command path in Test.alt (also in macros.cfg) and rerun the Test alert.

You could have changed the threshold in the alarms.cfg file, then reinstalled the Test alert, but sometimes it's easier to change the target .alt file directly.  If you make a worthwhile change in your .alt file, be sure to reflect that change in the source .cfg file, otherwise you will clobber your change/fix the next time you reinstall.

When you are finished testing the DiskFullCritical script, delete the Test script and any of its auxiliary files with:

	/pikt/bin/piktc -tv +D test +A Test +H mysystem

	processing mysystem...
	disabling alert(s)...
	Test disabled
	deleting file(s)...
	Test.alt deleted
	deleting file(s)...
	Test.hst deleted
	deleting file(s)...
	Test.log deleted
	
If you changed the threshold in the alarms.cfg file, remember to change it back to 100% now.  Uncomment the line in the Critical alarms list
                        DiskFullCritical
	
Then reinstall all alerts with
	/pikt/bin/piktc -iv +A all +H mysystem

	processing mysystem...
	installing file(s)...
	Debug.alt installed
	Critical.alt installed
	
As before, since test defaults to FALSE in defines.cfg and you have not overridden that with a +D test at the command line, the Test alert in alerts.cfg enclosed within the #ifdef test ... #endifdef is ignored.



Home | News | Introduction | Samples | Tutorial | Reference | Software | Authors | Licensing
Forum | Marketplace | Links | SiteSearch | FAQ | Contribute | Donate | ContactUs
Top of Page

Join pikt-users, pikt-workers, and/or the PIKT Forum. 
Open Hand Please visit our sponsors.

Page best viewed at 1024x768.   Page last updated 2005-01-07.
This site is PIKT® powered.
PIKT® is a registered trademark of the University of Chicago.
Copyright © 1998-2005 Robert Osterlund.  All rights reserved.