From: Dominique F. <dom...@un...> - 2010-12-30 14:15:10
|
Hi Henrik, Like other tools such as "top", we do prefer to use swap -l instead of swap -s for monitoring swap usage for all Solaris 10 servers. IOW: Thank you for this correction ! I had to do following changes for this to work: # diff -u xymond/client/solaris.c.old xymond/client/solaris.c --- xymond/client/solaris.c.old Thu Dec 30 15:03:18 2010 +++ xymond/client/solaris.c Thu Dec 30 11:58:06 2010 @@ -108,10 +108,10 @@ nl = strchr(bol, '\n'); if (nl) *nl = '\0'; tmpline = strdup(bol); /* According to the Solaris man-page for versions 8 thru 10, the "swap -l" output is always 5 columns */ - p = getcolumn(tmpline, 4); + p = getcolumn(tmpline, 3); if (p) blktotal += atol(p); strcpy(tmpline, bol); - p = getcolumn(tmpline, 5); + p = getcolumn(tmpline, 4); if (p) blkfree += atol(p); xfree(tmpline); Happy new year ! Dominique On 12/14/10 11:02 AM, st...@us... wrote: > Revision: 6610 > http://xymon.svn.sourceforge.net/xymon/?rev=6610&view=rev > Author: storner > Date: 2010-12-14 10:02:32 +0000 (Tue, 14 Dec 2010) > > Log Message: > ----------- > Solaris client: Report "swap -l" in addition to "swap -s" for swap usage. Backend prefers output from "swap -l" when determining swap utilisation. > > Modified Paths: > -------------- > branches/4.3.0/RELEASENOTES > branches/4.3.0/client/xymonclient-sunos.sh > branches/4.3.0/xymond/client/solaris.c > > Modified: branches/4.3.0/RELEASENOTES > =================================================================== > --- branches/4.3.0/RELEASENOTES 2010-12-13 11:21:38 UTC (rev 6609) > +++ branches/4.3.0/RELEASENOTES 2010-12-14 10:02:32 UTC (rev 6610) > @@ -36,8 +36,11 @@ > different data (e.g. MAX/MIN values) > * SLA calculations now include the number of outages in addition > to the down-time. > +* Solaris client now uses "swap -l" to determine swap-space > + usage, which gives very different results from the previous > + "swap -s" data. So your Solaris hosts will appear to change > + swap-utilisation when the Xymon client is upgraded. > > - > TRACKMAX feature removed > ------------------------ > For users of the TRACKMAX feature present in 4.2.2 and > > Modified: branches/4.3.0/client/xymonclient-sunos.sh > =================================================================== > --- branches/4.3.0/client/xymonclient-sunos.sh 2010-12-13 11:21:38 UTC (rev 6609) > +++ branches/4.3.0/client/xymonclient-sunos.sh 2010-12-14 10:02:32 UTC (rev 6610) > @@ -41,6 +41,8 @@ > vmstat 1 2 | tail -1 > echo "[swap]" > /usr/sbin/swap -s > +echo "[swaplist]" > +/usr/sbin/swap -l > echo "[ifconfig]" > ifconfig -a > echo "[route]" > > Modified: branches/4.3.0/xymond/client/solaris.c > =================================================================== > --- branches/4.3.0/xymond/client/solaris.c 2010-12-13 11:21:38 UTC (rev 6609) > +++ branches/4.3.0/xymond/client/solaris.c 2010-12-14 10:02:32 UTC (rev 6610) > @@ -26,6 +26,7 @@ > char *prtconfstr; > char *memorystr; > char *swapstr; > + char *swapliststr; > char *dfstr; > char *msgsstr; > char *netstatstr; > @@ -51,6 +52,7 @@ > prtconfstr = getdata("prtconf"); > memorystr = getdata("memory"); > swapstr = getdata("swap"); > + swapliststr = getdata("swaplist"); > msgsstr = getdata("msgs"); > netstatstr = getdata("netstat"); > ifstatstr = getdata("ifstat"); > @@ -72,7 +74,7 @@ > unix_ifstat_report(hostname, clienttype, os, hinfo, fromline, timestr, ifstatstr); > unix_vmstat_report(hostname, clienttype, os, hinfo, fromline, timestr, vmstatstr); > > - if (prtconfstr&& memorystr&& swapstr) { > + if (prtconfstr&& memorystr&& (swapstr || swapliststr)) { > long memphystotal, memphysfree, memswapused, memswapfree; > char *p; > > @@ -80,11 +82,55 @@ > p = strstr(prtconfstr, "\nMemory size:"); > if (p&& (sscanf(p, "\nMemory size: %ld Megabytes",&memphystotal) == 1)) ; > if (sscanf(memorystr, "%*d %*d %*d %*d %ld",&memphysfree) == 1) memphysfree /= 1024; > - p = strchr(swapstr, '='); > - if (p&& sscanf(p, "= %ldk used, %ldk available",&memswapused,&memswapfree) == 2) { > - memswapused /= 1024; > - memswapfree /= 1024; > + > + if (!swapliststr) { > + /* > + * No "swap -l" output, so use what "swap -s" reports. > + * Xymon clients prior to 2010-Dec-14 (roughly 4.3.0 release) does not report "swap -l". > + */ > + p = strchr(swapstr, '='); > + if (p&& sscanf(p, "= %ldk used, %ldk available",&memswapused,&memswapfree) == 2) { > + memswapused /= 1024; > + memswapfree /= 1024; > + } > } > + else { > + /* We prefer using "swap -l" output since it matches what other system tools report */ > + char *bol; > + long blktotal, blkfree; > + > + blktotal = blkfree = 0; > + > + bol = swapliststr; > + while (bol) { > + char *nl, *tmpline; > + > + nl = strchr(bol, '\n'); if (nl) *nl = '\0'; > + tmpline = strdup(bol); > + /* According to the Solaris man-page for versions 8 thru 10, the "swap -l" output is always 5 columns */ > + p = getcolumn(tmpline, 4); > + if (p) blktotal += atol(p); > + strcpy(tmpline, bol); > + p = getcolumn(tmpline, 5); > + if (p) blkfree += atol(p); > + xfree(tmpline); > + > + if (nl) { > + *nl = '\n'; > + bol = nl+1; > + } > + else { > + bol = NULL; > + } > + } > + > + if ((blktotal> 0)&& (blkfree> 0)) { > + /* Values from swap -l are numbers of 512-byte blocks. Convert to MB = N*512/(1024*1024) = N/2048 */ > + memswapused = (blktotal - blkfree) / 2048; > + memswapfree = blkfree / 2048; > + } > + } > + > if ((memphystotal>=0)&& (memphysfree>=0)&& (memswapused>=0)&& (memswapfree>=0)) { > unix_memory_report(hostname, clienttype, os, hinfo, fromline, timestr, > memphystotal, (memphystotal - memphysfree), -1, > > > This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. > > ------------------------------------------------------------------------------ > Lotusphere 2011 > Register now for Lotusphere 2011 and learn how > to connect the dots, take your collaborative environment > to the next level, and enter the era of Social Business. > http://p.sf.net/sfu/lotusphere-d2d > _______________________________________________ > Xymon-developer mailing list > Xym...@li... > https://lists.sourceforge.net/lists/listinfo/xymon-developer |