[hobbit] New Features #2

Henrik Stoerner henrik at hswn.dk
Tue Apr 19 14:36:45 CEST 2005


On Tue, Apr 19, 2005 at 10:44:36AM +0100, Marsh, Ian wrote:

>   What I'd like to be able to do is to pre-empt the alert by having
> access to the ack code earlier, as soon as the status changes to red,
> and have the code displayed on the individual test page. The way I
> envisage this happening is that the ack code is generated when the test
> turns red rather than when an alert is sent out. This code can then be
> included on the tests status page where we have easy access to it. The
> text could be displayed in a similar fashion to the text currently added
> when an alert is acknowledged.

Try the attached patch - should work against 4.0.2. Apply with

   cd hobbit-4.0.2
   patch -p0 </tmp/hobbit-4.0.2-cookies.patch
   make
   stop hobbit
   make install (as root)
   start hobbit

This makes the cookie appear on the detailed status page if it has not
yet been acknowledged. By default I've disabled this - you must add
the option "--publish-cookies" to the hobbitsvc.cgi command in
~/server/cgi-bin/bb-hostsvc.sh to enable this.

I haven't yet made up my mind if this is a good idea or not. Another
solution I've thought about is to make an acknowledge webpage similar
to the enable/disable webpage, where you can choose which tests to
acknowledge. And publishing the cookies on the status-page becomes
more difficult with the planned changes to the alerting where
escalations are handled.


Regards,
Henrik
-------------- next part --------------
--- lib/htmllog.c	2005/04/16 17:01:36	1.24
+++ lib/htmllog.c	2005/04/19 12:12:26
@@ -86,7 +86,7 @@
 		       int color, char *sender, char *flags, 
 		       time_t logtime, char *timesincechange, 
 		       char *firstline, char *restofmsg, 
-		       time_t acktime, char *ackmsg, 
+		       time_t acktime, char *ackmsg, int ackcookie,
 		       time_t disabletime, char *dismsg,
 		       int is_history, int wantserviceid, int htmlfmt, int hobbitd,
 		       char *multigraphs,
@@ -219,7 +219,10 @@
 
 		MEMUNDEFINE(ackuntil);
 	}
-		
+	else if (ackcookie > 0) {
+		fprintf(output, "<font %s>Acknowledgment cookie: %d</font><br>\n", ackfont, ackcookie);
+	}
+
 	fprintf(output, "</font></td></tr>\n");
 	fprintf(output, "</table>\n");
 
--- lib/htmllog.h	2005/03/22 09:16:49	1.8
+++ lib/htmllog.h	2005/04/19 12:08:51
@@ -21,7 +21,7 @@
 		       int color, char *sender, char *flags, 
 		       time_t logtime, char *timesincechange, 
 		       char *firstline, char *restofmsg, 
-		       time_t acktime, char *ackmsg, 
+		       time_t acktime, char *ackmsg, int ackcookie,
 		       time_t disabletime, char *dismsg,
 		       int is_history, int wantserviceid, int htmlfmt, int hobbitd,
 		       char *multigraphs,
--- hobbitd/hobbitd_filestore.c	2005/03/25 21:13:41	1.40
+++ hobbitd/hobbitd_filestore.c	2005/04/19 12:12:49
@@ -120,7 +120,7 @@
 			color, sender, flags,
 			logtime, timestr,
 			firstline, restofmsg, 
-			acktime, ackmsg,
+			acktime, ackmsg, -1,
 			disabletime, dismsg,
 			0, 1, 0, 1, multigraphs, output);
 
--- hobbitd/hobbitsvc.c	2005/04/17 19:34:17	1.37
+++ hobbitd/hobbitsvc.c	2005/04/19 12:18:49
@@ -31,6 +31,7 @@
 static enum { SRC_HOBBITD, SRC_HISTLOGS, SRC_MEM } source = SRC_HOBBITD;
 static int wantserviceid = 1;
 static char *multigraphs = ",disk,inode,qtree,";
+static int publishcookies = 0;
 
 /* CGI params */
 static char *hostname = NULL;
@@ -118,6 +119,7 @@
 	time_t logtime = 0, acktime = 0, disabletime = 0;
 	char *log = NULL, *firstline = NULL, *sender = NULL, *flags = NULL;	/* These are free'd */
 	char *restofmsg = NULL, *ackmsg = NULL, *dismsg = NULL;			/* These are just used */
+	int ackcookie = -1;
 
 	if (parse_query() != 0) return 1;
 
@@ -192,6 +194,8 @@
 		if (items[8] && strlen(items[8])) disabletime = atoi(items[8]);
 		sender = strdup(items[9]);
 
+		if (items[10] && strlen(items[10])) ackcookie = atoi(items[10]);
+
 		if (items[11] && strlen(items[11])) ackmsg = items[11];
 		if (ackmsg) nldecode(ackmsg);
 
@@ -295,7 +299,7 @@
 		          logtime, timesincechange, 
 		          (firstline ? firstline : ""), 
 			  (restofmsg ? restofmsg : ""), 
-			  acktime, ackmsg, 
+			  acktime, ackmsg, (publishcookies ? ackcookie : -1),
 			  disabletime, dismsg,
 		          (source == SRC_HISTLOGS), 
 			  wantserviceid, 
@@ -346,6 +350,9 @@
 			char *p = strchr(argv[argi], '=');
 			loadenv(p+1);
 		}
+		else if (strcmp(argv[argi], "--publish-cookies") == 0) {
+			publishcookies = 1;
+		}
 		else if (strcmp(argv[argi], "--no-svcid") == 0) {
 			wantserviceid = 0;
 		}


More information about the Xymon mailing list