diff options
| author | Lorenz Kästle <12514511+RincewindsHat@users.noreply.github.com> | 2025-03-17 20:21:58 +0100 |
|---|---|---|
| committer | Lorenz Kästle <12514511+RincewindsHat@users.noreply.github.com> | 2025-03-17 20:21:58 +0100 |
| commit | 7b53cbbd265ed135941bf59da77ed22b8664b6eb (patch) | |
| tree | 5e1948e583d366ed7588941b5b6e9148d0d4aecb /plugins | |
| parent | 4fb7fb05b672febfdfa69381f7f403dc872c7aa6 (diff) | |
| download | monitoring-plugins-7b53cbbd265ed135941bf59da77ed22b8664b6eb.tar.gz | |
check_disk: Little fixes and improvements
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/check_disk.c | 31 |
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); | |||
| 101 | static void print_help(void); | 101 | static void print_help(void); |
| 102 | void print_usage(void); | 102 | void print_usage(void); |
| 103 | static double calculate_percent(uintmax_t /*value*/, uintmax_t /*total*/); | 103 | static double calculate_percent(uintmax_t /*value*/, uintmax_t /*total*/); |
| 104 | static bool stat_path(struct parameter_list *p); | 104 | static bool stat_path(struct parameter_list * /*parameters*/); |
| 105 | static void get_stats(struct parameter_list *p, struct fs_usage *fsp); | 105 | static void get_stats(struct parameter_list * /*parameters*/, struct fs_usage *fsp); |
| 106 | static void get_path_stats(struct parameter_list *p, struct fs_usage *fsp); | 106 | static void get_path_stats(struct parameter_list * /*parameters*/, struct fs_usage *fsp); |
| 107 | 107 | ||
| 108 | static char *units; | 108 | static char *units; |
| 109 | static uintmax_t mult = 1024 * 1024; | 109 | static 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; |
