[monitoring-plugins] check_ups: output ups.realpower if supported
Louis Sautier
git at monitoring-plugins.org
Sat Nov 11 12:30:12 CET 2023
Module: monitoring-plugins
Branch: master
Commit: eebb280ca32975b7bd48d6defce47fbdc8027861
Author: Louis Sautier <sautier.louis at gmail.com>
Date: Thu Nov 9 23:40:28 2023 +0100
URL: https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=eebb280
check_ups: output ups.realpower if supported
---
plugins/check_ups.c | 47 ++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 40 insertions(+), 7 deletions(-)
diff --git a/plugins/check_ups.c b/plugins/check_ups.c
index bb91c4a..2fb04ee 100644
--- a/plugins/check_ups.c
+++ b/plugins/check_ups.c
@@ -46,12 +46,13 @@ enum {
#define CHECK_NONE 0
-#define UPS_NONE 0 /* no supported options */
-#define UPS_UTILITY 1 /* supports utility line voltage */
-#define UPS_BATTPCT 2 /* supports percent battery remaining */
-#define UPS_STATUS 4 /* supports UPS status */
-#define UPS_TEMP 8 /* supports UPS temperature */
-#define UPS_LOADPCT 16 /* supports load percent */
+#define UPS_NONE 0 /* no supported options */
+#define UPS_UTILITY 1 /* supports utility line */
+#define UPS_BATTPCT 2 /* supports percent battery remaining */
+#define UPS_STATUS 4 /* supports UPS status */
+#define UPS_TEMP 8 /* supports UPS temperature */
+#define UPS_LOADPCT 16 /* supports load percent */
+#define UPS_REALPOWER 32 /* supports real power */
#define UPSSTATUS_NONE 0
#define UPSSTATUS_OFF 1
@@ -85,6 +86,7 @@ double ups_utility_voltage = 0.0;
double ups_battery_percent = 0.0;
double ups_load_percent = 0.0;
double ups_temperature = 0.0;
+double ups_realpower = 0.0;
char *ups_status;
bool temp_output_c = false;
@@ -318,6 +320,35 @@ main (int argc, char **argv)
}
}
+ /* get the ups real power if possible */
+ res=get_ups_variable ("ups.realpower", temp_buffer);
+ if ( res == NOSUCHVAR ) supported_options &= ~UPS_REALPOWER;
+ else if ( res != OK)
+ return STATE_CRITICAL;
+ else {
+ supported_options |= UPS_REALPOWER;
+ ups_realpower = atof (temp_buffer);
+ xasprintf (&message, "%sReal power=%3.1fW ", message, ups_realpower);
+
+ if (check_variable == UPS_REALPOWER) {
+ if (check_crit && ups_realpower>=critical_value) {
+ result = STATE_CRITICAL;
+ }
+ else if (check_warn && ups_realpower>=warning_value) {
+ result = max_state (result, STATE_WARNING);
+ }
+ xasprintf (&data, "%s %s", data,
+ perfdata ("realpower", (long)ups_realpower, "W",
+ check_warn, (long)(warning_value),
+ check_crit, (long)(critical_value),
+ true, 0, false, 0));
+ } else {
+ xasprintf (&data, "%s %s", data,
+ perfdata ("realpower", (long)ups_realpower, "W",
+ false, 0, false, 0, true, 0, false, 0));
+ }
+ }
+
/* if the UPS does not support any options we are looking for, report an error */
if (supported_options == UPS_NONE) {
result = STATE_CRITICAL;
@@ -549,6 +580,8 @@ process_arguments (int argc, char **argv)
check_variable = UPS_BATTPCT;
else if (!strcmp (optarg, "LOADPCT"))
check_variable = UPS_LOADPCT;
+ else if (!strcmp (optarg, "REALPOWER"))
+ check_variable = UPS_REALPOWER;
else
usage2 (_("Unrecognized UPS variable"), optarg);
break;
@@ -625,7 +658,7 @@ print_help (void)
printf (" %s\n", "-T, --temperature");
printf (" %s\n", _("Output of temperatures in Celsius"));
printf (" %s\n", "-v, --variable=STRING");
- printf (" %s %s\n", _("Valid values for STRING are"), "LINE, TEMP, BATTPCT or LOADPCT");
+ printf (" %s %s\n", _("Valid values for STRING are"), "LINE, TEMP, BATTPCT, LOADPCT or REALPOWER");
printf (UT_WARN_CRIT);
More information about the Commits
mailing list