1 /*----------------------------------------------------------------------------*/
2 /* Xymon RRD handler module. */
3 /* */
4 /* This module handles combined z/OS and z/VSE ASID and NPARTS messages. */
5 /* */
6 /* Copyright (C) 2006-2011 Henrik Storner <henrik@hswn.dk> */
7 /* Copyright (C) 2007-2009 Rich Smrcina <rsmrcina@wi.rr.com> */
8 /* */
9 /* This program is released under the GNU General Public License (GPL), */
10 /* version 2. See the file "COPYING" for details. */
11 /* */
12 /*----------------------------------------------------------------------------*/
13
14 static char asid_rcsid[] = "$Id: do_asid.c 6585 2010-11-14 15:12:56Z storner $";
15
16 static char *asid_params[] = { "DS:util:GAUGE:600:0:100", NULL };
17 static char *asid_tpl = NULL;
18
do_asid_rrd(char * hostname,char * testname,char * classname,char * pagepaths,char * msg,time_t tstamp)19 int do_asid_rrd(char *hostname, char *testname, char *classname, char *pagepaths, char *msg, time_t tstamp)
20 {
21 char *p;
22
23 p=(strstr(msg, "Maxuser"));
24 if (p) {
25 long maxuser, maxufree, maxuused, rsvtstrt, rsvtfree, rsvtused, rsvnonr, rsvnfree, rsvnused;
26 float maxupct, rsvtpct, rsvnpct;
27 sscanf(p, "Maxuser: %ld Free: %ld Used: %ld %f", &maxuser, &maxufree, &maxuused, &maxupct);
28
29 p=(strstr(p, "RSVTSTRT"));
30 sscanf(p, "RSVTSTRT: %ld Free: %ld Used: %ld %f", &rsvtstrt, &rsvtfree, &rsvtused, &rsvtpct);
31
32 p=(strstr(p, "RSVNONR"));
33 sscanf(p, "RSVNONR: %ld Free: %ld Used: %ld %f", &rsvnonr, &rsvnfree, &rsvnused, &rsvnpct);
34
35 setupfn2("%s.%s.rrd", "maxuser", "maxuser");
36 snprintf(rrdvalues, sizeof(rrdvalues), "%d:%d", (int)tstamp, (int)maxupct);
37 create_and_update_rrd(hostname, testname, classname, pagepaths, asid_params, asid_tpl);
38
39 setupfn2("%s.%s.rrd", "maxuser", "rsvtstrt");
40 snprintf(rrdvalues, sizeof(rrdvalues), "%d:%d", (int)tstamp, (int)rsvtpct);
41 create_and_update_rrd(hostname, testname, classname, pagepaths, asid_params, asid_tpl);
42
43 setupfn2("%s.%s.rrd", "maxuser", "rsvnonr");
44 snprintf(rrdvalues, sizeof(rrdvalues), "%d:%d", (int)tstamp, (int)rsvnpct);
45 create_and_update_rrd(hostname, testname, classname, pagepaths, asid_params, asid_tpl);
46 }
47
48 p=(strstr(msg, "Nparts"));
49 if (p) {
50 char *fn = NULL;
51 long nparts, partfree, partused;
52 float partupct;
53 sscanf(p, "Nparts: %ld Free: %ld Used: %ld %f", &nparts, &partfree, &partused, &partupct);
54
55 setupfn("nparts.rrd", fn);
56 snprintf(rrdvalues, sizeof(rrdvalues), "%d:%d", (int)tstamp, (int)partupct);
57 create_and_update_rrd(hostname, testname, classname, pagepaths, asid_params, asid_tpl);
58 }
59
60 return 0;
61 }
62