diff options
Diffstat (limited to 'plugins/check_ntp_peer.c')
-rw-r--r-- | plugins/check_ntp_peer.c | 58 |
1 files changed, 43 insertions, 15 deletions
diff --git a/plugins/check_ntp_peer.c b/plugins/check_ntp_peer.c index 8dc19788..44424af5 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,22 @@ 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 | oresult = result; | ||
601 | |||
602 | if(do_truechimers) { | ||
603 | tresult = get_status(num_truechimers, truechimer_thresholds); | ||
604 | result = max_state_alt(result, tresult); | ||
605 | } | ||
600 | 606 | ||
601 | if(do_truechimers) | 607 | if(do_stratum) { |
602 | result = max_state_alt(result, get_status(num_truechimers, truechimer_thresholds)); | 608 | sresult = get_status(stratum, stratum_thresholds); |
603 | 609 | result = max_state_alt(result, sresult); | |
604 | if(do_stratum) | 610 | } |
605 | result = max_state_alt(result, get_status(stratum, stratum_thresholds)); | ||
606 | 611 | ||
607 | if(do_jitter) | 612 | if(do_jitter) { |
608 | result = max_state_alt(result, get_status(jitter, jitter_thresholds)); | 613 | jresult = get_status(jitter, jitter_thresholds); |
614 | result = max_state_alt(result, jresult); | ||
615 | } | ||
609 | 616 | ||
610 | switch (result) { | 617 | switch (result) { |
611 | case STATE_CRITICAL : | 618 | case STATE_CRITICAL : |
@@ -629,20 +636,43 @@ int main(int argc, char *argv[]){ | |||
629 | if(offset_result == STATE_UNKNOWN){ | 636 | if(offset_result == STATE_UNKNOWN){ |
630 | xasprintf(&result_line, "%s %s", result_line, _("Offset unknown")); | 637 | xasprintf(&result_line, "%s %s", result_line, _("Offset unknown")); |
631 | xasprintf(&perfdata_line, ""); | 638 | xasprintf(&perfdata_line, ""); |
639 | } else if (oresult == STATE_WARNING) { | ||
640 | xasprintf(&result_line, "%s %s %.10g secs (WARNING)", result_line, _("Offset"), offset); | ||
641 | } else if (oresult == STATE_CRITICAL) { | ||
642 | xasprintf(&result_line, "%s %s %.10g secs (CRITICAL)", result_line, _("Offset"), offset); | ||
632 | } else { | 643 | } else { |
633 | xasprintf(&result_line, "%s %s %.10g secs", result_line, _("Offset"), offset); | 644 | xasprintf(&result_line, "%s %s %.10g secs", result_line, _("Offset"), offset); |
634 | xasprintf(&perfdata_line, "%s", perfd_offset(offset)); | 645 | } |
635 | } | 646 | xasprintf(&perfdata_line, "%s", perfd_offset(offset)); |
647 | |||
636 | if (do_jitter) { | 648 | if (do_jitter) { |
637 | xasprintf(&result_line, "%s, jitter=%f", result_line, jitter); | 649 | if (jresult == STATE_WARNING) { |
650 | xasprintf(&result_line, "%s, jitter=%f (WARNING)", result_line, jitter); | ||
651 | } else if (jresult == STATE_CRITICAL) { | ||
652 | xasprintf(&result_line, "%s, jitter=%f (CRITICAL)", result_line, jitter); | ||
653 | } else { | ||
654 | xasprintf(&result_line, "%s, jitter=%f", result_line, jitter); | ||
655 | } | ||
638 | xasprintf(&perfdata_line, "%s %s", perfdata_line, perfd_jitter(jitter)); | 656 | xasprintf(&perfdata_line, "%s %s", perfdata_line, perfd_jitter(jitter)); |
639 | } | 657 | } |
640 | if (do_stratum) { | 658 | if (do_stratum) { |
641 | xasprintf(&result_line, "%s, stratum=%i", result_line, stratum); | 659 | if (sresult == STATE_WARNING) { |
660 | xasprintf(&result_line, "%s, stratum=%i (WARNING)", result_line, stratum); | ||
661 | } else if (sresult == STATE_CRITICAL) { | ||
662 | xasprintf(&result_line, "%s, stratum=%i (CRITICAL)", result_line, stratum); | ||
663 | } else { | ||
664 | xasprintf(&result_line, "%s, stratum=%i", result_line, stratum); | ||
665 | } | ||
642 | xasprintf(&perfdata_line, "%s %s", perfdata_line, perfd_stratum(stratum)); | 666 | xasprintf(&perfdata_line, "%s %s", perfdata_line, perfd_stratum(stratum)); |
643 | } | 667 | } |
644 | if (do_truechimers) { | 668 | if (do_truechimers) { |
645 | xasprintf(&result_line, "%s, truechimers=%i", result_line, num_truechimers); | 669 | if (tresult == STATE_WARNING) { |
670 | xasprintf(&result_line, "%s, truechimers=%i (WARNING)", result_line, num_truechimers); | ||
671 | } else if (tresult == STATE_CRITICAL) { | ||
672 | xasprintf(&result_line, "%s, truechimers=%i (CRITICAL)", result_line, num_truechimers); | ||
673 | } else { | ||
674 | xasprintf(&result_line, "%s, truechimers=%i", result_line, num_truechimers); | ||
675 | } | ||
646 | xasprintf(&perfdata_line, "%s %s", perfdata_line, perfd_truechimers(num_truechimers)); | 676 | xasprintf(&perfdata_line, "%s %s", perfdata_line, perfd_truechimers(num_truechimers)); |
647 | } | 677 | } |
648 | printf("%s|%s\n", result_line, perfdata_line); | 678 | printf("%s|%s\n", result_line, perfdata_line); |
@@ -651,8 +681,6 @@ int main(int argc, char *argv[]){ | |||
651 | return result; | 681 | return result; |
652 | } | 682 | } |
653 | 683 | ||
654 | |||
655 | |||
656 | void print_help(void){ | 684 | void print_help(void){ |
657 | print_revision(progname, NP_VERSION); | 685 | print_revision(progname, NP_VERSION); |
658 | 686 | ||