[Nagiosplug-checkins] SF.net SVN: nagiosplug: [1840] nagiosplug/branches/dermoth_ntp_rework/ plugins

dermoth at users.sourceforge.net dermoth at users.sourceforge.net
Tue Dec 4 13:08:34 CET 2007


Revision: 1840
          http://nagiosplug.svn.sourceforge.net/nagiosplug/?rev=1840&view=rev
Author:   dermoth
Date:     2007-12-04 04:08:34 -0800 (Tue, 04 Dec 2007)

Log Message:
-----------
Add a quiet mode to avoid notification when NTP server isn't sync (check_ntp_peer and heck_ntp_time)
Fix default jitter and stratum ranges not including -1

Modified Paths:
--------------
    nagiosplug/branches/dermoth_ntp_rework/plugins/check_ntp_peer.c
    nagiosplug/branches/dermoth_ntp_rework/plugins/check_ntp_time.c

Modified: nagiosplug/branches/dermoth_ntp_rework/plugins/check_ntp_peer.c
===================================================================
--- nagiosplug/branches/dermoth_ntp_rework/plugins/check_ntp_peer.c	2007-12-04 11:18:40 UTC (rev 1839)
+++ nagiosplug/branches/dermoth_ntp_rework/plugins/check_ntp_peer.c	2007-12-04 12:08:34 UTC (rev 1840)
@@ -52,15 +52,16 @@
 
 static char *server_address=NULL;
 static int verbose=0;
+static int quiet=0;
 static short do_offset=0;
 static char *owarn="60";
 static char *ocrit="120";
 static short do_stratum=0;
-static char *swarn="16";
-static char *scrit="16";
+static char *swarn="-1:16";
+static char *scrit="-1:16";
 static short do_jitter=0;
-static char *jwarn="5000";
-static char *jcrit="10000";
+static char *jwarn="-1:5000";
+static char *jcrit="-1:10000";
 static int syncsource_found=0;
 
 int process_arguments (int, char **);
@@ -358,7 +359,7 @@
 			if(value == NULL || value==nptr) {
 				if(verbose) printf("error: unable to read server offset response.\n");
 			} else {
-				if(verbose) printf("%g\n", *offset);
+				if(verbose) printf("%.10g\n", tmp_offset);
 				if(*offset_result == STATE_UNKNOWN || fabs(tmp_offset) < fabs(*offset)) {
 					*offset = tmp_offset;
 					*offset_result = STATE_OK;
@@ -379,11 +380,11 @@
 				if(value != NULL)
 					*jitter = strtod(value, &nptr);
 				/* If value is null or no conversion was performed */
-				if(value == NULL || value==nptr){
+				if(value == NULL || value==nptr) {
 					if(verbose) printf("error: unable to read server jitter/dispersion response.\n");
 					*jitter = -1;
-				} else {
-					if(verbose) printf("%g\n", *jitter);
+				} else if(verbose) {
+					printf("%.10g\n", *jitter);
 				}
 			}
 
@@ -397,7 +398,7 @@
 				/* Convert the value if we have one */
 				if(value != NULL)
 					*stratum = strtol(value, &nptr, 10);
-				if(value == NULL || value==nptr){
+				if(value == NULL || value==nptr) {
 					if(verbose) printf("error: unable to read server stratum response.\n");
 					*stratum = -1;
 				} else {
@@ -422,6 +423,7 @@
 		{"verbose", no_argument, 0, 'v'},
 		{"use-ipv4", no_argument, 0, '4'},
 		{"use-ipv6", no_argument, 0, '6'},
+		{"quiet", no_argument, 0, 'q'},
 		{"warning", required_argument, 0, 'w'},
 		{"critical", required_argument, 0, 'c'},
 		{"swarn", required_argument, 0, 'W'},
@@ -438,7 +440,7 @@
 		usage ("\n");
 
 	while (1) {
-		c = getopt_long (argc, argv, "Vhv46w:c:W:C:j:k:t:H:", longopts, &option);
+		c = getopt_long (argc, argv, "Vhv46qw:c:W:C:j:k:t:H:", longopts, &option);
 		if (c == -1 || c == EOF || c == 1)
 			break;
 
@@ -454,6 +456,9 @@
 		case 'v':
 			verbose++;
 			break;
+		case 'q':
+			quiet = 1;
+			break;
 		case 'w':
 			do_offset=1;
 			owarn = optarg;
@@ -520,7 +525,7 @@
 
 char *perfd_jitter (double jitter)
 {
-	return fperfdata ("jitter", jitter, "s",
+	return fperfdata ("jitter", jitter, "",
 		do_jitter, jitter_thresholds->warning->end,
 		do_jitter, jitter_thresholds->critical->end,
 		TRUE, 0, FALSE, 0);
@@ -554,10 +559,16 @@
 
   /* This returns either OK or WARNING (See comment preceeding ntp_request) */
 	result = ntp_request(server_address, &offset, &offset_result, &jitter, &stratum);
-	if(offset_result == STATE_UNKNOWN)
-		result = STATE_CRITICAL;
 
-	result = max_state_alt(result, get_status(fabs(offset), offset_thresholds));
+	if(offset_result == STATE_UNKNOWN) {
+    /* if there's no sync peer (this overrides ntp_request output): */
+		result = (quiet == 1 ? STATE_UNKNOWN : STATE_CRITICAL);
+	} else {
+		/* Be quiet if there's no candidates either */
+		if (quiet == 1 && result == STATE_WARNING)
+			result = STATE_UNKNOWN;
+		result = max_state_alt(result, get_status(fabs(offset), offset_thresholds));
+	}
 
 	if(do_stratum)
 		result = max_state_alt(result, get_status(stratum, stratum_thresholds));
@@ -618,6 +629,8 @@
 	print_usage();
 	printf (_(UT_HELP_VRSN));
 	printf (_(UT_HOST_PORT), 'p', "123");
+	printf (" %s\n", "-q, --quiet");
+	printf ("    %s\n", _("Returns UNKNOWN instead of CRITICAL or WARNING if server isn't synchronized"));
 	printf (" %s\n", "-w, --warning=THRESHOLD");
 	printf ("    %s\n", _("Offset to result in warning status (seconds)"));
 	printf (" %s\n", "-c, --critical=THRESHOLD");

Modified: nagiosplug/branches/dermoth_ntp_rework/plugins/check_ntp_time.c
===================================================================
--- nagiosplug/branches/dermoth_ntp_rework/plugins/check_ntp_time.c	2007-12-04 11:18:40 UTC (rev 1839)
+++ nagiosplug/branches/dermoth_ntp_rework/plugins/check_ntp_time.c	2007-12-04 12:08:34 UTC (rev 1840)
@@ -51,6 +51,7 @@
 
 static char *server_address=NULL;
 static int verbose=0;
+static int quiet=0;
 static char *owarn="60";
 static char *ocrit="120";
 
@@ -450,6 +451,7 @@
 		{"verbose", no_argument, 0, 'v'},
 		{"use-ipv4", no_argument, 0, '4'},
 		{"use-ipv6", no_argument, 0, '6'},
+		{"quiet", no_argument, 0, 'q'},
 		{"warning", required_argument, 0, 'w'},
 		{"critical", required_argument, 0, 'c'},
 		{"timeout", required_argument, 0, 't'},
@@ -462,7 +464,7 @@
 		usage ("\n");
 
 	while (1) {
-		c = getopt_long (argc, argv, "Vhv46w:c:t:H:", longopts, &option);
+		c = getopt_long (argc, argv, "Vhv46qw:c:t:H:", longopts, &option);
 		if (c == -1 || c == EOF || c == 1)
 			break;
 
@@ -478,6 +480,9 @@
 		case 'v':
 			verbose++;
 			break;
+		case 'q':
+			quiet = 1;
+			break;
 		case 'w':
 			owarn = optarg;
 			break;
@@ -544,7 +549,7 @@
 
 	offset = offset_request(server_address, &offset_result);
 	if (offset_result == STATE_UNKNOWN) {
-		result = STATE_CRITICAL;
+		result = (quiet == 1 ? STATE_UNKNOWN : STATE_CRITICAL);
 	} else {
 		result = get_status(fabs(offset), offset_thresholds);
 	}
@@ -589,6 +594,8 @@
 	print_usage();
 	printf (_(UT_HELP_VRSN));
 	printf (_(UT_HOST_PORT), 'p', "123");
+	printf (" %s\n", "-q, --quiet");
+	printf ("    %s\n", _("Returns UNKNOWN instead of CRITICAL if offset cannot be found"));
 	printf (" %s\n", "-w, --warning=THRESHOLD");
 	printf ("    %s\n", _("Offset to result in warning status (seconds)"));
 	printf (" %s\n", "-c, --critical=THRESHOLD");


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Commits mailing list