From 8a9ec38fbb780d17241a52c5dd4853cccb800e45 Mon Sep 17 00:00:00 2001 From: Karl DeBisschop Date: Fri, 22 Aug 2003 06:55:07 +0000 Subject: - add perf data for time git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@691 f882894a-f735-0410-b71e-b25c423dba1c --- plugins/check_dig.c | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) (limited to 'plugins/check_dig.c') diff --git a/plugins/check_dig.c b/plugins/check_dig.c index dc4f89ae..c70ad97c 100644 --- a/plugins/check_dig.c +++ b/plugins/check_dig.c @@ -48,6 +48,8 @@ main (int argc, char **argv) char input_buffer[MAX_INPUT_BUFFER]; char *command_line; char *output; + long microsec; + double elapsed_time; int result = STATE_UNKNOWN; output = strdup (""); @@ -68,10 +70,11 @@ main (int argc, char **argv) PATH_TO_DIG, dns_server, server_port, query_address); alarm (timeout_interval); - time (&start_time); + gettimeofday (&tv, NULL); if (verbose) printf ("%s\n", command_line); + /* run the command */ child_process = spopen (command_line); if (child_process == NULL) { @@ -130,20 +133,34 @@ main (int argc, char **argv) asprintf (&output, _("dig returned error status")); } - (void) time (&end_time); + microsec = deltime (tv); + elapsed_time = (double)microsec / 1.0e6; if (output == NULL || strlen (output) == 0) asprintf (&output, _(" Probably a non-existent host/domain")); - if (result == STATE_OK) - printf (_("DNS OK - %d seconds response time (%s)\n"), - (int) (end_time - start_time), output); - else if (result == STATE_WARNING) - printf (_("DNS WARNING - %s\n"), output); + if (elapsed_time > critical_interval) + die (STATE_CRITICAL, + _("DNS OK - %d seconds response time (%s)|time=%ldus\n"), + elapsed_time, output, microsec); + else if (result == STATE_CRITICAL) - printf (_("DNS CRITICAL - %s\n"), output); + printf (_("DNS CRITICAL - %s|time=%ldus\n"), output); + + else if (elapsed_time > warning_interval) + die (STATE_WARNING, + _("DNS OK - %d seconds response time (%s)|time=%ldus\n"), + elapsed_time, output, microsec); + + else if (result == STATE_WARNING) + printf (_("DNS WARNING - %s|time=%ldus\n"), output); + + else if (result == STATE_OK) + printf (_("DNS OK - %d seconds response time (%s)|time=%ldus\n"), + elapsed_time, output, microsec); + else - printf (_("DNS problem - %s\n"), output); + printf (_("DNS problem - %s|time=%ldus\n"), output); return result; } -- cgit v1.2.3