diff options
-rw-r--r-- | plugins/check_ntp_peer.c | 49 |
1 files changed, 37 insertions, 12 deletions
diff --git a/plugins/check_ntp_peer.c b/plugins/check_ntp_peer.c index 8dc19788..d3ae5999 100644 --- a/plugins/check_ntp_peer.c +++ b/plugins/check_ntp_peer.c | |||
@@ -560,7 +560,7 @@ char *perfd_truechimers (int num_truechimers) | |||
560 | } | 560 | } |
561 | 561 | ||
562 | int main(int argc, char *argv[]){ | 562 | int main(int argc, char *argv[]){ |
563 | int result, offset_result, stratum, num_truechimers; | 563 | int result, offset_result, stratum, num_truechimers, oresult, jresult, sresult, tresult; |
564 | double offset=0, jitter=0; | 564 | double offset=0, jitter=0; |
565 | char *result_line, *perfdata_line; | 565 | char *result_line, *perfdata_line; |
566 | 566 | ||
@@ -597,15 +597,19 @@ int main(int argc, char *argv[]){ | |||
597 | result = STATE_UNKNOWN; | 597 | result = STATE_UNKNOWN; |
598 | result = max_state_alt(result, get_status(fabs(offset), offset_thresholds)); | 598 | result = max_state_alt(result, get_status(fabs(offset), offset_thresholds)); |
599 | } | 599 | } |
600 | 600 | oresult = result; | |
601 | |||
601 | if(do_truechimers) | 602 | if(do_truechimers) |
602 | result = max_state_alt(result, get_status(num_truechimers, truechimer_thresholds)); | 603 | tresult = get_status(num_truechimers, truechimer_thresholds); |
604 | result = max_state_alt(result, tresult); | ||
603 | 605 | ||
604 | if(do_stratum) | 606 | if(do_stratum) |
605 | result = max_state_alt(result, get_status(stratum, stratum_thresholds)); | 607 | sresult = get_status(stratum, stratum_thresholds); |
608 | result = max_state_alt(result, sresult); | ||
606 | 609 | ||
607 | if(do_jitter) | 610 | if(do_jitter) |
608 | result = max_state_alt(result, get_status(jitter, jitter_thresholds)); | 611 | jresult = get_status(jitter, jitter_thresholds); |
612 | result = max_state_alt(result, jresult); | ||
609 | 613 | ||
610 | switch (result) { | 614 | switch (result) { |
611 | case STATE_CRITICAL : | 615 | case STATE_CRITICAL : |
@@ -629,20 +633,43 @@ int main(int argc, char *argv[]){ | |||
629 | if(offset_result == STATE_UNKNOWN){ | 633 | if(offset_result == STATE_UNKNOWN){ |
630 | xasprintf(&result_line, "%s %s", result_line, _("Offset unknown")); | 634 | xasprintf(&result_line, "%s %s", result_line, _("Offset unknown")); |
631 | xasprintf(&perfdata_line, ""); | 635 | xasprintf(&perfdata_line, ""); |
636 | } else if (oresult == STATE_WARNING) { | ||
637 | xasprintf(&result_line, "%s %s %.10g secs (WARNING)", result_line, _("Offset"), offset); | ||
638 | } else if (oresult == STATE_CRITICAL) { | ||
639 | xasprintf(&result_line, "%s %s %.10g secs (CRITICAL)", result_line, _("Offset"), offset); | ||
632 | } else { | 640 | } else { |
633 | xasprintf(&result_line, "%s %s %.10g secs", result_line, _("Offset"), offset); | 641 | xasprintf(&result_line, "%s %s %.10g secs", result_line, _("Offset"), offset); |
634 | xasprintf(&perfdata_line, "%s", perfd_offset(offset)); | 642 | } |
635 | } | 643 | xasprintf(&perfdata_line, "%s", perfd_offset(offset)); |
644 | |||
636 | if (do_jitter) { | 645 | if (do_jitter) { |
637 | xasprintf(&result_line, "%s, jitter=%f", result_line, jitter); | 646 | if (jresult == STATE_WARNING) { |
647 | xasprintf(&result_line, "%s, jitter=%f (WARNING)", result_line, jitter); | ||
648 | } else if (jresult == STATE_CRITICAL) { | ||
649 | xasprintf(&result_line, "%s, jitter=%f (CRITICAL)", result_line, jitter); | ||
650 | } else { | ||
651 | xasprintf(&result_line, "%s, jitter=%f", result_line, jitter); | ||
652 | } | ||
638 | xasprintf(&perfdata_line, "%s %s", perfdata_line, perfd_jitter(jitter)); | 653 | xasprintf(&perfdata_line, "%s %s", perfdata_line, perfd_jitter(jitter)); |
639 | } | 654 | } |
640 | if (do_stratum) { | 655 | if (do_stratum) { |
641 | xasprintf(&result_line, "%s, stratum=%i", result_line, stratum); | 656 | if (sresult == STATE_WARNING) { |
657 | xasprintf(&result_line, "%s, stratum=%i (WARNING)", result_line, stratum); | ||
658 | } else if (sresult == STATE_CRITICAL) { | ||
659 | xasprintf(&result_line, "%s, stratum=%i (CRITICAL)", result_line, stratum); | ||
660 | } else { | ||
661 | xasprintf(&result_line, "%s, stratum=%i", result_line, stratum); | ||
662 | } | ||
642 | xasprintf(&perfdata_line, "%s %s", perfdata_line, perfd_stratum(stratum)); | 663 | xasprintf(&perfdata_line, "%s %s", perfdata_line, perfd_stratum(stratum)); |
643 | } | 664 | } |
644 | if (do_truechimers) { | 665 | if (do_truechimers) { |
645 | xasprintf(&result_line, "%s, truechimers=%i", result_line, num_truechimers); | 666 | if (tresult == STATE_WARNING) { |
667 | xasprintf(&result_line, "%s, truechimers=%i (WARNING)", result_line, num_truechimers); | ||
668 | } else if (tresult == STATE_CRITICAL) { | ||
669 | xasprintf(&result_line, "%s, truechimers=%i (CRITICAL)", result_line, num_truechimers); | ||
670 | } else { | ||
671 | xasprintf(&result_line, "%s, truechimers=%i", result_line, num_truechimers); | ||
672 | } | ||
646 | xasprintf(&perfdata_line, "%s %s", perfdata_line, perfd_truechimers(num_truechimers)); | 673 | xasprintf(&perfdata_line, "%s %s", perfdata_line, perfd_truechimers(num_truechimers)); |
647 | } | 674 | } |
648 | printf("%s|%s\n", result_line, perfdata_line); | 675 | printf("%s|%s\n", result_line, perfdata_line); |
@@ -651,8 +678,6 @@ int main(int argc, char *argv[]){ | |||
651 | return result; | 678 | return result; |
652 | } | 679 | } |
653 | 680 | ||
654 | |||
655 | |||
656 | void print_help(void){ | 681 | void print_help(void){ |
657 | print_revision(progname, NP_VERSION); | 682 | print_revision(progname, NP_VERSION); |
658 | 683 | ||