summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorLorenz Kästle <12514511+RincewindsHat@users.noreply.github.com>2025-03-17 20:21:58 +0100
committerLorenz Kästle <12514511+RincewindsHat@users.noreply.github.com>2025-03-17 20:21:58 +0100
commit7b53cbbd265ed135941bf59da77ed22b8664b6eb (patch)
tree5e1948e583d366ed7588941b5b6e9148d0d4aecb /plugins
parent4fb7fb05b672febfdfa69381f7f403dc872c7aa6 (diff)
downloadmonitoring-plugins-7b53cbbd265ed135941bf59da77ed22b8664b6eb.tar.gz
check_disk: Little fixes and improvements
Diffstat (limited to 'plugins')
-rw-r--r--plugins/check_disk.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/plugins/check_disk.c b/plugins/check_disk.c
index e16c453d..a333a8b5 100644
--- a/plugins/check_disk.c
+++ b/plugins/check_disk.c
@@ -101,9 +101,9 @@ static void set_all_thresholds(struct parameter_list *path);
101static void print_help(void); 101static void print_help(void);
102void print_usage(void); 102void print_usage(void);
103static double calculate_percent(uintmax_t /*value*/, uintmax_t /*total*/); 103static double calculate_percent(uintmax_t /*value*/, uintmax_t /*total*/);
104static bool stat_path(struct parameter_list *p); 104static bool stat_path(struct parameter_list * /*parameters*/);
105static void get_stats(struct parameter_list *p, struct fs_usage *fsp); 105static void get_stats(struct parameter_list * /*parameters*/, struct fs_usage *fsp);
106static void get_path_stats(struct parameter_list *p, struct fs_usage *fsp); 106static void get_path_stats(struct parameter_list * /*parameters*/, struct fs_usage *fsp);
107 107
108static char *units; 108static char *units;
109static uintmax_t mult = 1024 * 1024; 109static uintmax_t mult = 1024 * 1024;
@@ -624,7 +624,7 @@ int process_arguments(int argc, char **argv) {
624 case 'P': 624 case 'P':
625 display_inodes_perfdata = true; 625 display_inodes_perfdata = true;
626 break; 626 break;
627 case 'p': /* select path */ 627 case 'p': /* select path */ {
628 if (!(warn_freespace_units || crit_freespace_units || warn_freespace_percent || crit_freespace_percent || 628 if (!(warn_freespace_units || crit_freespace_units || warn_freespace_percent || crit_freespace_percent ||
629 warn_usedspace_units || crit_usedspace_units || warn_usedspace_percent || crit_usedspace_percent || 629 warn_usedspace_units || crit_usedspace_units || warn_usedspace_percent || crit_usedspace_percent ||
630 warn_usedinodes_percent || crit_usedinodes_percent || warn_freeinodes_percent || crit_freeinodes_percent)) { 630 warn_usedinodes_percent || crit_usedinodes_percent || warn_freeinodes_percent || crit_freeinodes_percent)) {
@@ -656,7 +656,7 @@ int process_arguments(int argc, char **argv) {
656 np_set_best_match(se, mount_list, exact_match); 656 np_set_best_match(se, mount_list, exact_match);
657 657
658 path_selected = true; 658 path_selected = true;
659 break; 659 } break;
660 case 'x': /* exclude path or partition */ 660 case 'x': /* exclude path or partition */
661 np_add_name(&dp_exclude_list, optarg); 661 np_add_name(&dp_exclude_list, optarg);
662 break; 662 break;
@@ -778,6 +778,7 @@ int process_arguments(int argc, char **argv) {
778 } 778 }
779 779
780 /* add parameter if not found. overwrite thresholds if path has already been added */ 780 /* add parameter if not found. overwrite thresholds if path has already been added */
781 struct parameter_list *se = NULL;
781 if (!(se = np_find_parameter(path_select_list, me->me_mountdir))) { 782 if (!(se = np_find_parameter(path_select_list, me->me_mountdir))) {
782 se = np_add_parameter(&path_select_list, me->me_mountdir); 783 se = np_add_parameter(&path_select_list, me->me_mountdir);
783 } 784 }
@@ -804,7 +805,7 @@ int process_arguments(int argc, char **argv) {
804 case 'M': /* display mountpoint */ 805 case 'M': /* display mountpoint */
805 display_mntp = true; 806 display_mntp = true;
806 break; 807 break;
807 case 'C': 808 case 'C': {
808 /* add all mount entries to path_select list if no partitions have been explicitly defined using -p */ 809 /* add all mount entries to path_select list if no partitions have been explicitly defined using -p */
809 if (!path_selected) { 810 if (!path_selected) {
810 struct parameter_list *path; 811 struct parameter_list *path;
@@ -832,7 +833,7 @@ int process_arguments(int argc, char **argv) {
832 833
833 path_selected = false; 834 path_selected = false;
834 group = NULL; 835 group = NULL;
835 break; 836 } break;
836 case 'V': /* version */ 837 case 'V': /* version */
837 print_revision(progname, NP_VERSION); 838 print_revision(progname, NP_VERSION);
838 exit(STATE_UNKNOWN); 839 exit(STATE_UNKNOWN);
@@ -843,18 +844,31 @@ int process_arguments(int argc, char **argv) {
843 usage(_("Unknown argument")); 844 usage(_("Unknown argument"));
844 } 845 }
845 } 846 }
847 if (verbose > 0) {
848 printf("ping\n");
849 }
846 850
847 /* Support for "check_disk warn crit [fs]" with thresholds at used% level */ 851 /* Support for "check_disk warn crit [fs]" with thresholds at used% level */
848 int index = optind; 852 int index = optind;
853
849 if (warn_usedspace_percent == NULL && argc > index && is_intnonneg(argv[index])) { 854 if (warn_usedspace_percent == NULL && argc > index && is_intnonneg(argv[index])) {
855 if (verbose > 0) {
856 printf("Got an positional warn threshold: %s\n", argv[index]);
857 }
850 warn_usedspace_percent = argv[index++]; 858 warn_usedspace_percent = argv[index++];
851 } 859 }
852 860
853 if (crit_usedspace_percent == NULL && argc > index && is_intnonneg(argv[index])) { 861 if (crit_usedspace_percent == NULL && argc > index && is_intnonneg(argv[index])) {
862 if (verbose > 0) {
863 printf("Got an positional crit threshold: %s\n", argv[index]);
864 }
854 crit_usedspace_percent = argv[index++]; 865 crit_usedspace_percent = argv[index++];
855 } 866 }
856 867
857 if (argc > index) { 868 if (argc > index) {
869 if (verbose > 0) {
870 printf("Got an positional filesystem: %s\n", argv[index]);
871 }
858 struct parameter_list *se = np_add_parameter(&path_select_list, strdup(argv[index++])); 872 struct parameter_list *se = np_add_parameter(&path_select_list, strdup(argv[index++]));
859 path_selected = true; 873 path_selected = true;
860 set_all_thresholds(se); 874 set_all_thresholds(se);
@@ -1081,7 +1095,8 @@ void get_stats(struct parameter_list *parameters, struct fs_usage *fsp) {
1081 parameters->best_match->me_mountdir = parameters->best_match->me_devname = parameters->group; 1095 parameters->best_match->me_mountdir = parameters->best_match->me_devname = parameters->group;
1082 } 1096 }
1083 /* finally calculate percentages for either plain FS or summed up group */ 1097 /* finally calculate percentages for either plain FS or summed up group */
1084 parameters->dused_pct = calculate_percent(parameters->used, parameters->used + parameters->available); /* used + available can never be > uintmax */ 1098 parameters->dused_pct =
1099 calculate_percent(parameters->used, parameters->used + parameters->available); /* used + available can never be > uintmax */
1085 parameters->dfree_pct = 100.0 - parameters->dused_pct; 1100 parameters->dfree_pct = 100.0 - parameters->dused_pct;
1086 parameters->dused_inodes_percent = calculate_percent(parameters->inodes_total - parameters->inodes_free, parameters->inodes_total); 1101 parameters->dused_inodes_percent = calculate_percent(parameters->inodes_total - parameters->inodes_free, parameters->inodes_total);
1087 parameters->dfree_inodes_percent = 100 - parameters->dused_inodes_percent; 1102 parameters->dfree_inodes_percent = 100 - parameters->dused_inodes_percent;