13
13
INFO_NAME=" check_drupal"
14
14
INFO_AUTHOR=" Patrick Plocke <patrick@plocke.de>"
15
15
INFO_GPGKEY=" 0x28BF179F"
16
- INFO_DATE=" 2015-12-09 "
16
+ INFO_DATE=" 2015-12-19 "
17
17
INFO_LICENSE=" MIT"
18
- INFO_VERSION=" 0.2 "
18
+ INFO_VERSION=" 0.3 "
19
19
20
20
# Get the path
21
21
export PATH=" $PATH :/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
@@ -455,7 +455,7 @@ print_help() {
455
455
# Show help and details
456
456
printf " Nagios plugin that will check drupal sites for errors.\n"
457
457
printf " Errors include the following: available security updates,\n"
458
- printf " missed database updates and drupal status errors.\n"
458
+ printf " missed database migrations and drupal status errors.\n"
459
459
printf " For each check you can specify the nagios severity (error or warning).\n\n"
460
460
461
461
printf " -d <drupal root> The full path to the drupal document root (usually\n"
@@ -486,7 +486,7 @@ print_help() {
486
486
printf " Warning: -w w\n"
487
487
printf " Error: -w e\n\n"
488
488
489
- printf " -m <w|e> [optional] Check for drupal missed database updates \n"
489
+ printf " -m <w|e> [optional] Check for drupal missed database migrations \n"
490
490
printf " and return nagios error or warning. (They can occur\n"
491
491
printf " when you update core or modules and forget the db).\n"
492
492
printf " Warning: -m w\n"
@@ -559,11 +559,11 @@ MSG_CORE_WARNING=""
559
559
MSG_DB_UPDATE=" "
560
560
561
561
# Info for normal Status message if there is an error/warning
562
- HAS_SECURITY_UPDATE_ERROR= " "
563
- HAS_SYSTEM_UPDATE_ERROR= " "
564
- HAS_CORE_ERR_ERROR= " "
565
- HAS_CORE_WARN_ERROR= " "
566
- HAS_DB_UPDATE_ERROR= " "
562
+ CNT_SECURITY_UPDATE_ERROR= " 0 "
563
+ CNT_SYSTEM_UPDATE_ERROR= " 0 "
564
+ CNT_CORE_ERR_ERROR= " 0 "
565
+ CNT_CORE_WARN_ERROR= " 0 "
566
+ CNT_DB_UPDATE_ERROR= " 0 "
567
567
568
568
# Count warnings and errors for performance data
569
569
CNT_ALL=0
@@ -706,6 +706,9 @@ if [ -n "$CHECK_S" ]; then
706
706
707
707
# Merge exit codes
708
708
if [ " $TMP_EXIT " != " 0" ]; then
709
+ # Count lines as number of issues
710
+ CNT_SECURITY_UPDATE_ERROR=" $( echo " ${MSG_SECURITY_UPDATE} " | wc -l | xargs) "
711
+
709
712
if [ " $SEVERITY " = " $EXIT_ERR " ]; then
710
713
CNT_ERROR=$(( CNT_ERROR+ 1 ))
711
714
MSG_SECURITY_UPDATE=" $( prepend_line " ${MSG_SECURITY_UPDATE} " " [CRITICAL] " ) "
@@ -717,7 +720,6 @@ if [ -n "$CHECK_S" ]; then
717
720
MSG_SECURITY_UPDATE=" ==== SECURITY UPDATES ====\n${MSG_SECURITY_UPDATE} "
718
721
NAGIOS_EXIT=" $( merge_exit_codes " $NAGIOS_EXIT " " 1" ) "
719
722
fi
720
- HAS_SECURITY_UPDATE_ERROR=" true"
721
723
else
722
724
CNT_OK=$(( CNT_OK+ 1 ))
723
725
MSG_SECURITY_UPDATE=" ==== SECURITY UPDATES ====\n[OK] No Security updates required"
@@ -739,6 +741,9 @@ if [ -n "$CHECK_U" ]; then
739
741
740
742
# Merge exit codes
741
743
if [ " $TMP_EXIT " != " 0" ]; then
744
+ # Count lines as number of issues
745
+ CNT_SYSTEM_UPDATE_ERROR=" $( echo " ${MSG_SYSTEM_UPDATE} " | wc -l | xargs) "
746
+
742
747
if [ " $SEVERITY " = " $EXIT_ERR " ]; then
743
748
CNT_ERROR=$(( CNT_ERROR+ 1 ))
744
749
MSG_SYSTEM_UPDATE=" $( prepend_line " ${MSG_SYSTEM_UPDATE} " " [CRITICAL] " ) "
@@ -750,7 +755,6 @@ if [ -n "$CHECK_U" ]; then
750
755
MSG_SYSTEM_UPDATE=" ==== SYSTEM UPDATES ====\n${MSG_SYSTEM_UPDATE} "
751
756
NAGIOS_EXIT=" $( merge_exit_codes " $NAGIOS_EXIT " " 1" ) "
752
757
fi
753
- HAS_SYSTEM_UPDATE_ERROR=" true"
754
758
else
755
759
CNT_OK=$(( CNT_OK+ 1 ))
756
760
MSG_SYSTEM_UPDATE=" ==== SYSTEM UPDATES ====\n[OK]\nNo Updates required"
@@ -772,6 +776,9 @@ if [ -n "$CHECK_E" ]; then
772
776
773
777
# Merge exit codes
774
778
if [ " $TMP_EXIT " != " 0" ]; then
779
+ # Count lines as number of issues
780
+ CNT_CORE_ERR_ERROR=" $( echo " ${MSG_CORE_ERROR} " | wc -l | xargs) "
781
+
775
782
if [ " $SEVERITY " = " $EXIT_ERR " ]; then
776
783
CNT_ERROR=$(( CNT_ERROR+ 1 ))
777
784
MSG_CORE_ERROR=" $( prepend_line " ${MSG_CORE_ERROR} " " [CRITICAL] " ) "
@@ -783,7 +790,6 @@ if [ -n "$CHECK_E" ]; then
783
790
MSG_CORE_ERROR=" ==== CORE ERRORS ====\n${MSG_CORE_ERROR} "
784
791
NAGIOS_EXIT=" $( merge_exit_codes " $NAGIOS_EXIT " " 1" ) "
785
792
fi
786
- HAS_CORE_ERR_ERROR=" true"
787
793
else
788
794
CNT_OK=$(( CNT_OK+ 1 ))
789
795
MSG_CORE_ERROR=" ==== CORE ERRORS ====\n[OK] No core errors"
@@ -805,6 +811,9 @@ if [ -n "$CHECK_W" ]; then
805
811
806
812
# Merge exit codes
807
813
if [ " $TMP_EXIT " != " 0" ]; then
814
+ # Count lines as number of issues
815
+ CNT_CORE_WARN_ERROR=" $( echo " ${MSG_CORE_WARNING} " | wc -l | xargs) "
816
+
808
817
if [ " $SEVERITY " = " $EXIT_ERR " ]; then
809
818
CNT_ERROR=$(( CNT_ERROR+ 1 ))
810
819
MSG_CORE_WARNING=" $( prepend_line " ${MSG_CORE_WARNING} " " [CRITICAL] " ) "
@@ -816,7 +825,6 @@ if [ -n "$CHECK_W" ]; then
816
825
MSG_CORE_WARNING=" ==== CORE WARNINGS ====\n${MSG_CORE_WARNING} "
817
826
NAGIOS_EXIT=" $( merge_exit_codes " $NAGIOS_EXIT " " 1" ) "
818
827
fi
819
- HAS_CORE_WARN_ERROR=" true"
820
828
else
821
829
CNT_OK=$(( CNT_OK+ 1 ))
822
830
MSG_CORE_WARNING=" ==== CORE WARNINGS ====\n[OK] No core warnings"
@@ -838,6 +846,9 @@ if [ -n "$CHECK_M" ]; then
838
846
839
847
# Merge exit codes
840
848
if [ " $TMP_EXIT " != " 0" ]; then
849
+ # Count lines as number of issues
850
+ CNT_DB_UPDATE_ERROR=" $( echo " ${MSG_DB_UPDATE} " | wc -l | xargs) "
851
+
841
852
if [ " $SEVERITY " = " $EXIT_ERR " ]; then
842
853
CNT_ERROR=$(( CNT_ERROR+ 1 ))
843
854
MSG_DB_UPDATE=" $( prepend_line " ${MSG_DB_UPDATE} " " [CRITICAL] " ) "
@@ -849,10 +860,9 @@ if [ -n "$CHECK_M" ]; then
849
860
MSG_DB_UPDATE=" ==== DB UPDATES ====\n${MSG_DB_UPDATE} "
850
861
NAGIOS_EXIT=" $( merge_exit_codes " $NAGIOS_EXIT " " 1" ) "
851
862
fi
852
- HAS_DB_UPDATE_ERROR=" true"
853
863
else
854
864
CNT_OK=$(( CNT_OK+ 1 ))
855
- MSG_DB_UPDATE=" ==== DB UPDATES ====\n[OK] No database updates required"
865
+ MSG_DB_UPDATE=" ==== DB UPDATES ====\n[OK] No database migrations required"
856
866
NAGIOS_EXIT=" $( merge_exit_codes " $NAGIOS_EXIT " " 0" ) "
857
867
fi
858
868
CNT_ALL=$(( CNT_ALL+ 1 ))
866
876
867
877
# ### Build status text
868
878
INFO=" "
869
- if [ " $HAS_SECURITY_UPDATE_ERROR " != " " ]; then
870
- INFO=" $( merge_text " ${INFO} " " Security update(s)" " , " ) "
879
+ if [ " $CNT_SECURITY_UPDATE_ERROR " != " 0" ]; then
880
+ if [ " $CNT_SECURITY_UPDATE_ERROR " = " 1" ]; then
881
+ INFO=" $( merge_text " ${INFO} " " 1 Security update" " , " ) "
882
+ else
883
+ INFO=" $( merge_text " ${INFO} " " ${CNT_SECURITY_UPDATE_ERROR} Security updates" " , " ) "
884
+ fi
871
885
fi
872
- if [ " $HAS_SYSTEM_UPDATE_ERROR " != " " ]; then
873
- INFO=" $( merge_text " ${INFO} " " Update(s)" " , " ) "
886
+ if [ " $CNT_SYSTEM_UPDATE_ERROR " != " 0" ]; then
887
+ if [ " $CNT_SYSTEM_UPDATE_ERROR " = " 1" ]; then
888
+ INFO=" $( merge_text " ${INFO} " " 1 Update" " , " ) "
889
+ else
890
+ INFO=" $( merge_text " ${INFO} " " ${CNT_SYSTEM_UPDATE_ERROR} Updates" " , " ) "
891
+ fi
874
892
fi
875
- if [ " $HAS_CORE_ERR_ERROR " != " " ]; then
876
- INFO=" $( merge_text " ${INFO} " " Core error(s)" " , " ) "
893
+ if [ " $CNT_CORE_ERR_ERROR " != " 0" ]; then
894
+ if [ " $CNT_CORE_ERR_ERROR " = " 1" ]; then
895
+ INFO=" $( merge_text " ${INFO} " " 1 Core error" " , " ) "
896
+ else
897
+ INFO=" $( merge_text " ${INFO} " " ${CNT_CORE_ERR_ERROR} Core errors" " , " ) "
898
+ fi
877
899
fi
878
- if [ " $HAS_CORE_WARN_ERROR " != " " ]; then
879
- INFO=" $( merge_text " ${INFO} " " Core warning(s)" " , " ) "
900
+ if [ " $CNT_CORE_WARN_ERROR " != " 0" ]; then
901
+ if [ " $CNT_CORE_WARN_ERROR " = " 1" ]; then
902
+ INFO=" $( merge_text " ${INFO} " " 1 Core warning" " , " ) "
903
+ else
904
+ INFO=" $( merge_text " ${INFO} " " ${CNT_CORE_WARN_ERROR} Core warnings" " , " ) "
905
+ fi
880
906
fi
881
- if [ " $HAS_DB_UPDATE_ERROR " != " " ]; then
882
- INFO=" $( merge_text " ${INFO} " " DB update(s)" " , " ) "
907
+ if [ " $CNT_DB_UPDATE_ERROR " != " 0" ]; then
908
+ if [ " $CNT_DB_UPDATE_ERROR " = " 1" ]; then
909
+ INFO=" $( merge_text " ${INFO} " " 1 DB migration" " , " ) "
910
+ else
911
+ INFO=" $( merge_text " ${INFO} " " ${CNT_DB_UPDATE_ERROR} DB migrations" " , " ) "
912
+ fi
883
913
fi
884
914
885
-
886
- # ### Performance Data
887
- # @see http://docs.icinga.org/latest/en/perfdata.html
888
- # 'label'=value[UOM];[warn];[crit];[min];[max]
889
-
915
+ # ### Short output (std status)
890
916
OUTPUT=" "
891
917
if [ " $NAGIOS_EXIT " = " $EXIT_OK " ]; then
892
- OUTPUT=" $( printf " %s | %s\n " " [OK] ${DRUPAL_NAME} is healthy " " 'OK'= ${CNT_OK} ;;;0; ${CNT_ALL} 'Errors'= ${CNT_ERROR} ;1;1;0; ${CNT_ALL} 'Warnings'= ${CNT_WARNING} ;1;;0; ${CNT_ALL} 'Unknown'=0;;;0; ${CNT_ALL }" ) "
918
+ OUTPUT=" $( printf " [OK] %s is healty " " ${DRUPAL_NAME }" ) "
893
919
elif [ " $NAGIOS_EXIT " = " $EXIT_WARN " ]; then
894
- OUTPUT=" $( printf " %s: %s | %s\n " " [WARN] ${DRUPAL_NAME} has warnings " " ${INFO} " " 'OK'= ${CNT_OK} ;;;0; ${CNT_ALL} 'Errors'= ${CNT_ERROR} ;1;1;0; ${CNT_ALL} 'Warnings'= ${CNT_WARNING} ;1;;0; ${CNT_ALL} 'Unknown'=0;;;0; ${CNT_ALL }" ) "
920
+ OUTPUT=" $( printf " [WARNING] %s has warnings: %s " " ${DRUPAL_NAME} " " ${INFO} " ) "
895
921
elif [ " $NAGIOS_EXIT " = " $EXIT_ERR " ]; then
896
- OUTPUT=" $( printf " %s: %s | %s\n " " [ERROR] ${DRUPAL_NAME} has errors " " ${INFO} " " 'OK'= ${CNT_OK} ;;;0; ${CNT_ALL} 'Errors'= ${CNT_ERROR} ;1;1;0; ${CNT_ALL} 'Warnings'= ${CNT_WARNING} ;1;;0; ${CNT_ALL} 'Unknown'=0;;;0; ${CNT_ALL }" ) "
922
+ OUTPUT=" $( printf " [CRITICAL] %s has errors: %s " " ${DRUPAL_NAME} " " ${INFO} " ) "
897
923
else
898
- OUTPUT=" $( printf " %s: %s | %s\n " " [UNKNOWN] ${DRUPAL_NAME} is at unknown state - check extended info. " " ${INFO} " " OK'=0;;;0; ${CNT_ALL} 'Errors'= ${CNT_ERROR} ;1;1;0; ${CNT_ALL} 'Warnings'= ${CNT_WARNING} ;1;;0; ${CNT_ALL} 'Unknown'=1;;;0; ${CNT_ALL }" ) "
924
+ OUTPUT=" $( printf " [UNKNOWN] %s is at unknown state - check extended info" " ${DRUPAL_NAME } " ) "
899
925
fi
900
926
927
+
928
+ # ### Performance Data
929
+ # @see http://docs.icinga.org/latest/en/perfdata.html
930
+ # 'label'=value[UOM];[warn];[crit];[min];[max]
931
+ PERF=" "
932
+ PERF=" $( printf " %s'Security Updates'=%d;;;; " " ${PERF} " " ${CNT_SECURITY_UPDATE_ERROR} " ) "
933
+ PERF=" $( printf " %s'Updates'=%d;;;; " " ${PERF} " " ${CNT_SYSTEM_UPDATE_ERROR} " ) "
934
+ PERF=" $( printf " %s'Core Errors'=%d;;;; " " ${PERF} " " ${CNT_CORE_ERR_ERROR} " ) "
935
+ PERF=" $( printf " %s'Core Warnings'=%d;;;; " " ${PERF} " " ${CNT_CORE_WARN_ERROR} " ) "
936
+ PERF=" $( printf " %s'Database Migrations'=%d;;;; " " ${PERF} " " ${CNT_DB_UPDATE_ERROR} " ) "
937
+
938
+ PERF=" $( printf " %s'OK'=%d;;;0;%d " " ${PERF} " " ${CNT_OK} " " ${CNT_ALL} " ) "
939
+ PERF=" $( printf " %s'Errors'=%d;1;1;0;%d " " ${PERF} " " ${CNT_ERROR} " " ${CNT_ALL} " ) "
940
+ PERF=" $( printf " %s'Warnings'=%d;1;;0;%d " " ${PERF} " " ${CNT_WARNING} " " ${CNT_ALL} " ) "
941
+ PERF=" $( printf " %s'Unknown'=0;;;0;%d " " ${PERF} " " ${CNT_ALL} " ) "
942
+
943
+
901
944
# ### Extended status data
902
945
if [ " $MSG_SECURITY_UPDATE " != " " ]; then E_OUTPUT=" $( merge_text " ${E_OUTPUT} " " ${MSG_SECURITY_UPDATE} " " \n" ) " ; fi
903
946
if [ " $MSG_SYSTEM_UPDATE " != " " ]; then E_OUTPUT=" $( merge_text " ${E_OUTPUT} " " ${MSG_SYSTEM_UPDATE} " " \n" ) " ; fi
904
947
if [ " $MSG_CORE_ERROR " != " " ]; then E_OUTPUT=" $( merge_text " ${E_OUTPUT} " " ${MSG_CORE_ERROR} " " \n" ) " ; fi
905
948
if [ " $MSG_CORE_WARNING " != " " ]; then E_OUTPUT=" $( merge_text " ${E_OUTPUT} " " ${MSG_CORE_WARNING} " " \n" ) " ; fi
906
949
if [ " $MSG_DB_UPDATE " != " " ]; then E_OUTPUT=" $( merge_text " ${E_OUTPUT} " " ${MSG_DB_UPDATE} " " \n" ) " ; fi
907
950
951
+
908
952
# ### Log to file?
909
953
if [ -n " $LOGGING " ]; then
910
- echo " ${OUTPUT} " > " $LOGGING "
911
- echo " ${E_OUTPUT} " >> " $LOGGING "
912
- echo " ${NAGIOS_EXIT} " >> " $LOGGING "
954
+ echo " ${OUTPUT} | ${PERF} " > " $LOGGING "
955
+ echo " ${E_OUTPUT} " >> " $LOGGING "
956
+ echo " ${NAGIOS_EXIT} " >> " $LOGGING "
913
957
exit 0
914
958
else
915
- echo " ${OUTPUT} "
959
+ echo " ${OUTPUT} | ${PERF} "
916
960
echo " ${E_OUTPUT} "
917
961
exit " $NAGIOS_EXIT "
918
962
fi
0 commit comments