diff options
| author | Lorenz Kästle <12514511+RincewindsHat@users.noreply.github.com> | 2026-04-06 11:55:27 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-06 11:55:27 +0200 |
| commit | c57381d789fb246602966fccfcb80131a7fb0461 (patch) | |
| tree | 2087b6db4410047c93cd2e2a4fb84d2486238d36 /plugins/check_disk.c | |
| parent | a71ce153082565e5728424749475593dc0623492 (diff) | |
| download | monitoring-plugins-c57381d789fb246602966fccfcb80131a7fb0461.tar.gz | |
Revert check_disk performance data back to used space (#2243)
* Implement simple output shortcut for ranges
If ranges start with zero (e.g. 0:10), the zero and the colon
can be left out.
This patch implements this by default, since some systems (icinga2)
do not fully implement the whole range format and this reduces errors
in the common case of just an upper border.
* switch check_disk perfdata back to used space
Diffstat (limited to 'plugins/check_disk.c')
| -rw-r--r-- | plugins/check_disk.c | 58 |
1 files changed, 46 insertions, 12 deletions
diff --git a/plugins/check_disk.c b/plugins/check_disk.c index 0d941f25..73fe815e 100644 --- a/plugins/check_disk.c +++ b/plugins/check_disk.c | |||
| @@ -933,31 +933,43 @@ void set_all_thresholds(parameter_list_elem *path, char *warn_freespace_units, | |||
| 933 | 933 | ||
| 934 | if (warn_freespace_units) { | 934 | if (warn_freespace_units) { |
| 935 | tmp = mp_parse_range_string(warn_freespace_units); | 935 | tmp = mp_parse_range_string(warn_freespace_units); |
| 936 | tmp.range.start = mp_create_pd_value(0); | ||
| 937 | tmp.range.start_infinity = false; | ||
| 936 | path->freespace_units = mp_thresholds_set_warn(path->freespace_units, tmp.range); | 938 | path->freespace_units = mp_thresholds_set_warn(path->freespace_units, tmp.range); |
| 937 | } | 939 | } |
| 938 | 940 | ||
| 939 | if (crit_freespace_units) { | 941 | if (crit_freespace_units) { |
| 940 | tmp = mp_parse_range_string(crit_freespace_units); | 942 | tmp = mp_parse_range_string(crit_freespace_units); |
| 943 | tmp.range.start = mp_create_pd_value(0); | ||
| 944 | tmp.range.start_infinity = false; | ||
| 941 | path->freespace_units = mp_thresholds_set_crit(path->freespace_units, tmp.range); | 945 | path->freespace_units = mp_thresholds_set_crit(path->freespace_units, tmp.range); |
| 942 | } | 946 | } |
| 943 | 947 | ||
| 944 | if (warn_freespace_percent) { | 948 | if (warn_freespace_percent) { |
| 945 | tmp = mp_parse_range_string(warn_freespace_percent); | 949 | tmp = mp_parse_range_string(warn_freespace_percent); |
| 950 | tmp.range.start = mp_create_pd_value(0); | ||
| 951 | tmp.range.start_infinity = false; | ||
| 946 | path->freespace_percent = mp_thresholds_set_warn(path->freespace_percent, tmp.range); | 952 | path->freespace_percent = mp_thresholds_set_warn(path->freespace_percent, tmp.range); |
| 947 | } | 953 | } |
| 948 | 954 | ||
| 949 | if (crit_freespace_percent) { | 955 | if (crit_freespace_percent) { |
| 950 | tmp = mp_parse_range_string(crit_freespace_percent); | 956 | tmp = mp_parse_range_string(crit_freespace_percent); |
| 957 | tmp.range.start = mp_create_pd_value(0); | ||
| 958 | tmp.range.start_infinity = false; | ||
| 951 | path->freespace_percent = mp_thresholds_set_crit(path->freespace_percent, tmp.range); | 959 | path->freespace_percent = mp_thresholds_set_crit(path->freespace_percent, tmp.range); |
| 952 | } | 960 | } |
| 953 | 961 | ||
| 954 | if (warn_freeinodes_percent) { | 962 | if (warn_freeinodes_percent) { |
| 955 | tmp = mp_parse_range_string(warn_freeinodes_percent); | 963 | tmp = mp_parse_range_string(warn_freeinodes_percent); |
| 964 | tmp.range.start = mp_create_pd_value(0); | ||
| 965 | tmp.range.start_infinity = false; | ||
| 956 | path->freeinodes_percent = mp_thresholds_set_warn(path->freeinodes_percent, tmp.range); | 966 | path->freeinodes_percent = mp_thresholds_set_warn(path->freeinodes_percent, tmp.range); |
| 957 | } | 967 | } |
| 958 | 968 | ||
| 959 | if (crit_freeinodes_percent) { | 969 | if (crit_freeinodes_percent) { |
| 960 | tmp = mp_parse_range_string(crit_freeinodes_percent); | 970 | tmp = mp_parse_range_string(crit_freeinodes_percent); |
| 971 | tmp.range.start = mp_create_pd_value(0); | ||
| 972 | tmp.range.start_infinity = false; | ||
| 961 | path->freeinodes_percent = mp_thresholds_set_crit(path->freeinodes_percent, tmp.range); | 973 | path->freeinodes_percent = mp_thresholds_set_crit(path->freeinodes_percent, tmp.range); |
| 962 | } | 974 | } |
| 963 | } | 975 | } |
| @@ -1182,14 +1194,22 @@ mp_subcheck evaluate_filesystem(measurement_unit measurement_unit, bool display_ | |||
| 1182 | humanize_byte_value((unsigned long long)measurement_unit.total_bytes, false)); | 1194 | humanize_byte_value((unsigned long long)measurement_unit.total_bytes, false)); |
| 1183 | } | 1195 | } |
| 1184 | 1196 | ||
| 1185 | mp_perfdata used_space = perfdata_init(); | 1197 | // Free space just internally for computation |
| 1186 | used_space.label = measurement_unit.name; | 1198 | mp_perfdata free_space_pd = perfdata_init(); |
| 1187 | used_space.value = mp_create_pd_value(measurement_unit.free_bytes); | 1199 | free_space_pd.label = measurement_unit.name; |
| 1188 | used_space = mp_set_pd_max_value(used_space, mp_create_pd_value(measurement_unit.total_bytes)); | 1200 | free_space_pd.value = mp_create_pd_value(measurement_unit.free_bytes); |
| 1189 | used_space = mp_set_pd_min_value(used_space, mp_create_pd_value(0)); | 1201 | free_space_pd = |
| 1190 | used_space.uom = "B"; | 1202 | mp_pd_set_thresholds(free_space_pd, measurement_unit.freespace_bytes_thresholds); |
| 1191 | used_space = mp_pd_set_thresholds(used_space, measurement_unit.freespace_bytes_thresholds); | 1203 | freespace_bytes_sc = mp_set_subcheck_state(freespace_bytes_sc, mp_get_pd_status(free_space_pd)); |
| 1192 | freespace_bytes_sc = mp_set_subcheck_state(freespace_bytes_sc, mp_get_pd_status(used_space)); | 1204 | |
| 1205 | // Used space for display | ||
| 1206 | mp_perfdata used_space_pd = perfdata_init(); | ||
| 1207 | used_space_pd.label = measurement_unit.name; | ||
| 1208 | used_space_pd.value = mp_create_pd_value(measurement_unit.used_bytes); | ||
| 1209 | used_space_pd = | ||
| 1210 | mp_set_pd_max_value(used_space_pd, mp_create_pd_value(measurement_unit.total_bytes)); | ||
| 1211 | used_space_pd = mp_set_pd_min_value(used_space_pd, mp_create_pd_value(0)); | ||
| 1212 | used_space_pd.uom = "B"; | ||
| 1193 | 1213 | ||
| 1194 | // special case for absolute space thresholds here: | 1214 | // special case for absolute space thresholds here: |
| 1195 | // if absolute values are not set, compute the thresholds from percentage thresholds | 1215 | // if absolute values are not set, compute the thresholds from percentage thresholds |
| @@ -1209,7 +1229,8 @@ mp_subcheck evaluate_filesystem(measurement_unit measurement_unit, bool display_ | |||
| 1209 | } | 1229 | } |
| 1210 | measurement_unit.freespace_bytes_thresholds = | 1230 | measurement_unit.freespace_bytes_thresholds = |
| 1211 | mp_thresholds_set_crit(measurement_unit.freespace_bytes_thresholds, tmp_range); | 1231 | mp_thresholds_set_crit(measurement_unit.freespace_bytes_thresholds, tmp_range); |
| 1212 | used_space = mp_pd_set_thresholds(used_space, measurement_unit.freespace_bytes_thresholds); | 1232 | free_space_pd = |
| 1233 | mp_pd_set_thresholds(free_space_pd, measurement_unit.freespace_bytes_thresholds); | ||
| 1213 | } | 1234 | } |
| 1214 | 1235 | ||
| 1215 | if (!temp_thlds.warning_is_set && | 1236 | if (!temp_thlds.warning_is_set && |
| @@ -1225,10 +1246,22 @@ mp_subcheck evaluate_filesystem(measurement_unit measurement_unit, bool display_ | |||
| 1225 | } | 1246 | } |
| 1226 | measurement_unit.freespace_bytes_thresholds = | 1247 | measurement_unit.freespace_bytes_thresholds = |
| 1227 | mp_thresholds_set_warn(measurement_unit.freespace_bytes_thresholds, tmp_range); | 1248 | mp_thresholds_set_warn(measurement_unit.freespace_bytes_thresholds, tmp_range); |
| 1228 | used_space = mp_pd_set_thresholds(used_space, measurement_unit.freespace_bytes_thresholds); | 1249 | free_space_pd = |
| 1250 | mp_pd_set_thresholds(free_space_pd, measurement_unit.freespace_bytes_thresholds); | ||
| 1229 | } | 1251 | } |
| 1230 | 1252 | ||
| 1231 | mp_add_perfdata_to_subcheck(&freespace_bytes_sc, used_space); | 1253 | mp_thresholds thr_used_space = measurement_unit.freespace_bytes_thresholds; |
| 1254 | if (thr_used_space.critical_is_set) { | ||
| 1255 | thr_used_space.critical.alert_on_inside_range = | ||
| 1256 | !thr_used_space.critical.alert_on_inside_range; | ||
| 1257 | } | ||
| 1258 | if (thr_used_space.warning_is_set) { | ||
| 1259 | thr_used_space.warning.alert_on_inside_range = | ||
| 1260 | !thr_used_space.warning.alert_on_inside_range; | ||
| 1261 | } | ||
| 1262 | used_space_pd = mp_pd_set_thresholds(used_space_pd, thr_used_space); | ||
| 1263 | |||
| 1264 | mp_add_perfdata_to_subcheck(&freespace_bytes_sc, used_space_pd); | ||
| 1232 | mp_add_subcheck_to_subcheck(&result, freespace_bytes_sc); | 1265 | mp_add_subcheck_to_subcheck(&result, freespace_bytes_sc); |
| 1233 | 1266 | ||
| 1234 | // ========================== | 1267 | // ========================== |
| @@ -1264,7 +1297,8 @@ mp_subcheck evaluate_filesystem(measurement_unit measurement_unit, bool display_ | |||
| 1264 | 1297 | ||
| 1265 | mp_perfdata inode_percentage_pd = perfdata_init(); | 1298 | mp_perfdata inode_percentage_pd = perfdata_init(); |
| 1266 | inode_percentage_pd = mp_set_pd_value(inode_percentage_pd, free_inode_percentage); | 1299 | inode_percentage_pd = mp_set_pd_value(inode_percentage_pd, free_inode_percentage); |
| 1267 | inode_percentage_pd = mp_pd_set_thresholds(inode_percentage_pd, measurement_unit.freeinodes_percent_thresholds); | 1300 | inode_percentage_pd = mp_pd_set_thresholds(inode_percentage_pd, |
| 1301 | measurement_unit.freeinodes_percent_thresholds); | ||
| 1268 | 1302 | ||
| 1269 | if (verbose > 0) { | 1303 | if (verbose > 0) { |
| 1270 | printf("free inode percentage computed: %g\n", free_inode_percentage); | 1304 | printf("free inode percentage computed: %g\n", free_inode_percentage); |
