From c21c3b0befeb46a51b6bf3758ffa30813bea0ff0 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 9 Mar 2024 14:19:22 +0100 Subject: Adding upstream version 1.44.3. Signed-off-by: Daniel Baumann --- collectors/charts.d.plugin/nut/Makefile.inc | 13 -- collectors/charts.d.plugin/nut/README.md | 1 - .../nut/integrations/network_ups_tools_nut.md | 207 ----------------- collectors/charts.d.plugin/nut/metadata.yaml | 222 ------------------- collectors/charts.d.plugin/nut/nut.chart.sh | 244 --------------------- collectors/charts.d.plugin/nut/nut.conf | 33 --- 6 files changed, 720 deletions(-) delete mode 100644 collectors/charts.d.plugin/nut/Makefile.inc delete mode 120000 collectors/charts.d.plugin/nut/README.md delete mode 100644 collectors/charts.d.plugin/nut/integrations/network_ups_tools_nut.md delete mode 100644 collectors/charts.d.plugin/nut/metadata.yaml delete mode 100644 collectors/charts.d.plugin/nut/nut.chart.sh delete mode 100644 collectors/charts.d.plugin/nut/nut.conf (limited to 'collectors/charts.d.plugin/nut') diff --git a/collectors/charts.d.plugin/nut/Makefile.inc b/collectors/charts.d.plugin/nut/Makefile.inc deleted file mode 100644 index 4fb47145d..000000000 --- a/collectors/charts.d.plugin/nut/Makefile.inc +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later - -# THIS IS NOT A COMPLETE Makefile -# IT IS INCLUDED BY ITS PARENT'S Makefile.am -# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT - -# install these files -dist_charts_DATA += nut/nut.chart.sh -dist_chartsconfig_DATA += nut/nut.conf - -# do not install these files, but include them in the distribution -dist_noinst_DATA += nut/README.md nut/Makefile.inc - diff --git a/collectors/charts.d.plugin/nut/README.md b/collectors/charts.d.plugin/nut/README.md deleted file mode 120000 index abfefd6f7..000000000 --- a/collectors/charts.d.plugin/nut/README.md +++ /dev/null @@ -1 +0,0 @@ -integrations/network_ups_tools_nut.md \ No newline at end of file diff --git a/collectors/charts.d.plugin/nut/integrations/network_ups_tools_nut.md b/collectors/charts.d.plugin/nut/integrations/network_ups_tools_nut.md deleted file mode 100644 index 74be607a1..000000000 --- a/collectors/charts.d.plugin/nut/integrations/network_ups_tools_nut.md +++ /dev/null @@ -1,207 +0,0 @@ - - -# Network UPS Tools (NUT) - - - - - -Plugin: charts.d.plugin -Module: nut - - - -## Overview - -Examine UPS/PDU metrics with Netdata for insights into power device performance. Improve your power device performance with comprehensive dashboards and anomaly detection. - -This collector uses the `nut` (Network UPS Tools) to query statistics for multiple UPS devices. - -This collector is supported on all platforms. - -This collector supports collecting metrics from multiple instances of this integration, including remote instances. - - -### Default Behavior - -#### Auto-Detection - -This integration doesn't support auto-detection. - -#### Limits - -The default configuration for this integration does not impose any limits on data collection. - -#### Performance Impact - -The default configuration for this integration is not expected to impose a significant performance impact on the system. - - -## Metrics - -Metrics grouped by *scope*. - -The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels. - - - -### Per ups - -Metrics related to UPS. Each UPS provides its own set of the following metrics. - -This scope has no labels. - -Metrics: - -| Metric | Dimensions | Unit | -|:------|:----------|:----| -| nut.charge | charge | percentage | -| nut.runtime | runtime | seconds | -| nut.battery.voltage | voltage, high, low, nominal | Volts | -| nut.input.voltage | voltage, fault, nominal | Volts | -| nut.input.current | nominal | Ampere | -| nut.input.frequency | frequency, nominal | Hz | -| nut.output.voltage | voltage | Volts | -| nut.load | load | percentage | -| nut.load_usage | load_usage | Watts | -| nut.temperature | temp | temperature | -| nut.clients | clients | clients | - - - -## Alerts - - -The following alerts are available: - -| Alert name | On metric | Description | -|:------------|:----------|:------------| -| [ nut_ups_charge ](https://github.com/netdata/netdata/blob/master/health/health.d/nut.conf) | nut.charge | average UPS charge over the last minute | -| [ nut_10min_ups_load ](https://github.com/netdata/netdata/blob/master/health/health.d/nut.conf) | nut.load | average UPS load over the last 10 minutes | -| [ nut_last_collected_secs ](https://github.com/netdata/netdata/blob/master/health/health.d/nut.conf) | nut.load | number of seconds since the last successful data collection | - - -## Setup - -### Prerequisites - -#### Install charts.d plugin - -If [using our official native DEB/RPM packages](https://github.com/netdata/netdata/blob/master/packaging/installer/UPDATE.md#determine-which-installation-method-you-used), make sure `netdata-plugin-chartsd` is installed. - - -#### Required software - -Make sure the Network UPS Tools (`nut`) is installed and can detect your UPS devices. - - -### Configuration - -#### File - -The configuration file name for this integration is `charts.d/nut.conf`. - - -You can edit the configuration file using the `edit-config` script from the -Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory). - -```bash -cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata -sudo ./edit-config charts.d/nut.conf -``` -#### Options - -The config file is sourced by the charts.d plugin. It's a standard bash file. - -The following collapsed table contains all the options that can be configured for the nut collector. - - -
Config options - -| Name | Description | Default | Required | -|:----|:-----------|:-------|:--------:| -| nut_ups | A space separated list of UPS names. If empty, the list returned by `upsc -l` will be used. | | False | -| nut_names | Each line represents an alias for one UPS. If empty, the FQDN will be used. | | False | -| nut_timeout | How long to wait for nut to respond. | 2 | False | -| nut_clients_chart | Set this to 1 to enable another chart showing the number of UPS clients connected to `upsd`. | 1 | False | -| nut_update_every | The data collection frequency. If unset, will inherit the netdata update frequency. | 2 | False | -| nut_priority | The charts priority on the dashboard | 90000 | False | -| nut_retries | The number of retries to do in case of failure before disabling the collector. | 10 | False | - -
- -#### Examples - -##### Provide names to UPS devices - -Map aliases to UPS devices - -
Config - -```yaml -# a space separated list of UPS names -# if empty, the list returned by 'upsc -l' will be used -#nut_ups= - -# each line represents an alias for one UPS -# if empty, the FQDN will be used -nut_names["XXXXXX"]="UPS-office" -nut_names["YYYYYY"]="UPS-rack" - -# how much time in seconds, to wait for nut to respond -#nut_timeout=2 - -# set this to 1, to enable another chart showing the number -# of UPS clients connected to upsd -#nut_clients_chart=1 - -# the data collection frequency -# if unset, will inherit the netdata update frequency -#nut_update_every=2 - -# the charts priority on the dashboard -#nut_priority=90000 - -# the number of retries to do in case of failure -# before disabling the module -#nut_retries=10 - -``` -
- - - -## Troubleshooting - -### Debug Mode - -To troubleshoot issues with the `nut` collector, run the `charts.d.plugin` with the debug option enabled. The output -should give you clues as to why the collector isn't working. - -- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on - your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`. - - ```bash - cd /usr/libexec/netdata/plugins.d/ - ``` - -- Switch to the `netdata` user. - - ```bash - sudo -u netdata -s - ``` - -- Run the `charts.d.plugin` to debug the collector: - - ```bash - ./charts.d.plugin debug 1 nut - ``` - - diff --git a/collectors/charts.d.plugin/nut/metadata.yaml b/collectors/charts.d.plugin/nut/metadata.yaml deleted file mode 100644 index ed3ffebf7..000000000 --- a/collectors/charts.d.plugin/nut/metadata.yaml +++ /dev/null @@ -1,222 +0,0 @@ -plugin_name: charts.d.plugin -modules: - - meta: - plugin_name: charts.d.plugin - module_name: nut - monitored_instance: - name: Network UPS Tools (NUT) - link: '' - categories: - - data-collection.ups - icon_filename: 'plug-circle-bolt.svg' - related_resources: - integrations: - list: [] - info_provided_to_referring_integrations: - description: '' - keywords: - - nut - - network ups tools - - ups - - pdu - most_popular: false - overview: - data_collection: - metrics_description: 'Examine UPS/PDU metrics with Netdata for insights into power device performance. Improve your power device performance with comprehensive dashboards and anomaly detection.' - method_description: 'This collector uses the `nut` (Network UPS Tools) to query statistics for multiple UPS devices.' - supported_platforms: - include: [] - exclude: [] - multi_instance: true - additional_permissions: - description: '' - default_behavior: - auto_detection: - description: '' - limits: - description: '' - performance_impact: - description: '' - setup: - prerequisites: - list: - - title: "Install charts.d plugin" - description: | - If [using our official native DEB/RPM packages](https://github.com/netdata/netdata/blob/master/packaging/installer/UPDATE.md#determine-which-installation-method-you-used), make sure `netdata-plugin-chartsd` is installed. - - title: "Required software" - description: "Make sure the Network UPS Tools (`nut`) is installed and can detect your UPS devices." - configuration: - file: - name: charts.d/nut.conf - options: - description: | - The config file is sourced by the charts.d plugin. It's a standard bash file. - - The following collapsed table contains all the options that can be configured for the nut collector. - folding: - title: "Config options" - enabled: true - list: - - name: nut_ups - description: A space separated list of UPS names. If empty, the list returned by `upsc -l` will be used. - default_value: "" - required: false - - name: nut_names - description: Each line represents an alias for one UPS. If empty, the FQDN will be used. - default_value: "" - required: false - - name: nut_timeout - description: How long to wait for nut to respond. - default_value: 2 - required: false - - name: nut_clients_chart - description: Set this to 1 to enable another chart showing the number of UPS clients connected to `upsd`. - default_value: 1 - required: false - - name: nut_update_every - description: The data collection frequency. If unset, will inherit the netdata update frequency. - default_value: 2 - required: false - - name: nut_priority - description: The charts priority on the dashboard - default_value: 90000 - required: false - - name: nut_retries - description: The number of retries to do in case of failure before disabling the collector. - default_value: 10 - required: false - examples: - folding: - enabled: true - title: "Config" - list: - - name: Provide names to UPS devices - description: Map aliases to UPS devices - config: | - # a space separated list of UPS names - # if empty, the list returned by 'upsc -l' will be used - #nut_ups= - - # each line represents an alias for one UPS - # if empty, the FQDN will be used - nut_names["XXXXXX"]="UPS-office" - nut_names["YYYYYY"]="UPS-rack" - - # how much time in seconds, to wait for nut to respond - #nut_timeout=2 - - # set this to 1, to enable another chart showing the number - # of UPS clients connected to upsd - #nut_clients_chart=1 - - # the data collection frequency - # if unset, will inherit the netdata update frequency - #nut_update_every=2 - - # the charts priority on the dashboard - #nut_priority=90000 - - # the number of retries to do in case of failure - # before disabling the module - #nut_retries=10 - troubleshooting: - problems: - list: [] - alerts: - - name: nut_ups_charge - link: https://github.com/netdata/netdata/blob/master/health/health.d/nut.conf - metric: nut.charge - info: average UPS charge over the last minute - os: "*" - - name: nut_10min_ups_load - link: https://github.com/netdata/netdata/blob/master/health/health.d/nut.conf - metric: nut.load - info: average UPS load over the last 10 minutes - os: "*" - - name: nut_last_collected_secs - link: https://github.com/netdata/netdata/blob/master/health/health.d/nut.conf - metric: nut.load - info: number of seconds since the last successful data collection - metrics: - folding: - title: Metrics - enabled: false - description: "" - availability: [] - scopes: - - name: ups - description: "Metrics related to UPS. Each UPS provides its own set of the following metrics." - labels: [] - metrics: - - name: nut.charge - description: UPS Charge - unit: "percentage" - chart_type: area - dimensions: - - name: charge - - name: nut.runtime - description: UPS Runtime - unit: "seconds" - chart_type: line - dimensions: - - name: runtime - - name: nut.battery.voltage - description: UPS Battery Voltage - unit: "Volts" - chart_type: line - dimensions: - - name: voltage - - name: high - - name: low - - name: nominal - - name: nut.input.voltage - description: UPS Input Voltage - unit: "Volts" - chart_type: line - dimensions: - - name: voltage - - name: fault - - name: nominal - - name: nut.input.current - description: UPS Input Current - unit: "Ampere" - chart_type: line - dimensions: - - name: nominal - - name: nut.input.frequency - description: UPS Input Frequency - unit: "Hz" - chart_type: line - dimensions: - - name: frequency - - name: nominal - - name: nut.output.voltage - description: UPS Output Voltage - unit: "Volts" - chart_type: line - dimensions: - - name: voltage - - name: nut.load - description: UPS Load - unit: "percentage" - chart_type: area - dimensions: - - name: load - - name: nut.load_usage - description: UPS Load Usage - unit: "Watts" - chart_type: area - dimensions: - - name: load_usage - - name: nut.temperature - description: UPS Temperature - unit: "temperature" - chart_type: line - dimensions: - - name: temp - - name: nut.clients - description: UPS Connected Clients - unit: "clients" - chart_type: area - dimensions: - - name: clients diff --git a/collectors/charts.d.plugin/nut/nut.chart.sh b/collectors/charts.d.plugin/nut/nut.chart.sh deleted file mode 100644 index 7c32b6dde..000000000 --- a/collectors/charts.d.plugin/nut/nut.chart.sh +++ /dev/null @@ -1,244 +0,0 @@ -# shellcheck shell=bash -# no need for shebang - this file is loaded from charts.d.plugin -# SPDX-License-Identifier: GPL-3.0-or-later - -# netdata -# real-time performance and health monitoring, done right! -# (C) 2016-2017 Costa Tsaousis -# - -# a space separated list of UPS names -# if empty, the list returned by 'upsc -l' will be used -nut_ups= - -# how frequently to collect UPS data -nut_update_every=2 - -# how much time in seconds, to wait for nut to respond -nut_timeout=2 - -# set this to 1, to enable another chart showing the number -# of UPS clients connected to upsd -nut_clients_chart=0 - -# the priority of nut related to other charts -nut_priority=90000 - -declare -A nut_ids=() -declare -A nut_names=() - -nut_get_all() { - run -t $nut_timeout upsc -l -} - -nut_get() { - run -t $nut_timeout upsc "$1" - - if [ "${nut_clients_chart}" -eq "1" ]; then - printf "ups.connected_clients: " - run -t $nut_timeout upsc -c "$1" | wc -l - fi -} - -nut_check() { - - # this should return: - # - 0 to enable the chart - # - 1 to disable the chart - - local x - - require_cmd upsc || return 1 - - [ -z "$nut_ups" ] && nut_ups="$(nut_get_all)" - - for x in $nut_ups; do - nut_get "$x" > /dev/null - # shellcheck disable=SC2181 - if [ $? -eq 0 ]; then - if [ -n "${nut_names[${x}]}" ]; then - nut_ids[$x]="$(fixid "${nut_names[${x}]}")" - else - nut_ids[$x]="$(fixid "$x")" - fi - continue - fi - error "cannot get information for NUT UPS '$x'." - done - - if [ ${#nut_ids[@]} -eq 0 ]; then - # shellcheck disable=SC2154 - error "Cannot find UPSes - please set nut_ups='ups_name' in $confd/nut.conf" - return 1 - fi - - return 0 -} - -nut_create() { - # create the charts - local x - - for x in "${nut_ids[@]}"; do - cat << EOF -CHART nut_$x.charge '' "UPS Charge" "percentage" ups nut.charge area $((nut_priority + 2)) $nut_update_every -DIMENSION battery_charge charge absolute 1 100 - -CHART nut_$x.runtime '' "UPS Runtime" "seconds" ups nut.runtime area $((nut_priority + 3)) $nut_update_every -DIMENSION battery_runtime runtime absolute 1 100 - -CHART nut_$x.battery_voltage '' "UPS Battery Voltage" "Volts" ups nut.battery.voltage line $((nut_priority + 4)) $nut_update_every -DIMENSION battery_voltage voltage absolute 1 100 -DIMENSION battery_voltage_high high absolute 1 100 -DIMENSION battery_voltage_low low absolute 1 100 -DIMENSION battery_voltage_nominal nominal absolute 1 100 - -CHART nut_$x.input_voltage '' "UPS Input Voltage" "Volts" input nut.input.voltage line $((nut_priority + 5)) $nut_update_every -DIMENSION input_voltage voltage absolute 1 100 -DIMENSION input_voltage_fault fault absolute 1 100 -DIMENSION input_voltage_nominal nominal absolute 1 100 - -CHART nut_$x.input_current '' "UPS Input Current" "Ampere" input nut.input.current line $((nut_priority + 6)) $nut_update_every -DIMENSION input_current_nominal nominal absolute 1 100 - -CHART nut_$x.input_frequency '' "UPS Input Frequency" "Hz" input nut.input.frequency line $((nut_priority + 7)) $nut_update_every -DIMENSION input_frequency frequency absolute 1 100 -DIMENSION input_frequency_nominal nominal absolute 1 100 - -CHART nut_$x.output_voltage '' "UPS Output Voltage" "Volts" output nut.output.voltage line $((nut_priority + 8)) $nut_update_every -DIMENSION output_voltage voltage absolute 1 100 - -CHART nut_$x.load '' "UPS Load" "percentage" ups nut.load area $((nut_priority)) $nut_update_every -DIMENSION load load absolute 1 100 - -CHART nut_$x.load_usage '' "UPS Load Usage" "Watts" ups nut.load_usage area $((nut_priority + 1)) $nut_update_every -DIMENSION load_usage load_usage absolute 1 100 - -CHART nut_$x.temp '' "UPS Temperature" "temperature" ups nut.temperature line $((nut_priority + 9)) $nut_update_every -DIMENSION temp temp absolute 1 100 -EOF - - if [ "${nut_clients_chart}" = "1" ]; then - cat << EOF2 -CHART nut_$x.clients '' "UPS Connected Clients" "clients" ups nut.clients area $((nut_priority + 10)) $nut_update_every -DIMENSION clients '' absolute 1 1 -EOF2 - fi - - done - - return 0 -} - -nut_update() { - # the first argument to this function is the microseconds since last update - # pass this parameter to the BEGIN statement (see below). - - # do all the work to collect / calculate the values - # for each dimension - # remember: KEEP IT SIMPLE AND SHORT - - local i x - for i in "${!nut_ids[@]}"; do - x="${nut_ids[$i]}" - nut_get "$i" | awk " -BEGIN { - battery_charge = 0; - battery_runtime = 0; - battery_voltage = 0; - battery_voltage_high = 0; - battery_voltage_low = 0; - battery_voltage_nominal = 0; - input_voltage = 0; - input_voltage_fault = 0; - input_voltage_nominal = 0; - input_current_nominal = 0; - input_frequency = 0; - input_frequency_nominal = 0; - output_voltage = 0; - load = 0; - load_usage = 0; - nompower = 0; - temp = 0; - client = 0; - do_clients = ${nut_clients_chart}; -} -/^battery.charge: .*/ { battery_charge = \$2 * 100 }; -/^battery.runtime: .*/ { battery_runtime = \$2 * 100 }; -/^battery.voltage: .*/ { battery_voltage = \$2 * 100 }; -/^battery.voltage.high: .*/ { battery_voltage_high = \$2 * 100 }; -/^battery.voltage.low: .*/ { battery_voltage_low = \$2 * 100 }; -/^battery.voltage.nominal: .*/ { battery_voltage_nominal = \$2 * 100 }; -/^input.voltage: .*/ { input_voltage = \$2 * 100 }; -/^input.voltage.fault: .*/ { input_voltage_fault = \$2 * 100 }; -/^input.voltage.nominal: .*/ { input_voltage_nominal = \$2 * 100 }; -/^input.current.nominal: .*/ { input_current_nominal = \$2 * 100 }; -/^input.frequency: .*/ { input_frequency = \$2 * 100 }; -/^input.frequency.nominal: .*/ { input_frequency_nominal = \$2 * 100 }; -/^output.voltage: .*/ { output_voltage = \$2 * 100 }; -/^ups.load: .*/ { load = \$2 * 100 }; -/^ups.realpower.nominal: .*/ { nompower = \$2 }; -/^ups.temperature: .*/ { temp = \$2 * 100 }; -/^ups.connected_clients: .*/ { clients = \$2 }; -END { - { load_usage = nompower * load / 100 }; - - print \"BEGIN nut_$x.charge $1\"; - print \"SET battery_charge = \" battery_charge; - print \"END\" - - print \"BEGIN nut_$x.runtime $1\"; - print \"SET battery_runtime = \" battery_runtime; - print \"END\" - - print \"BEGIN nut_$x.battery_voltage $1\"; - print \"SET battery_voltage = \" battery_voltage; - print \"SET battery_voltage_high = \" battery_voltage_high; - print \"SET battery_voltage_low = \" battery_voltage_low; - print \"SET battery_voltage_nominal = \" battery_voltage_nominal; - print \"END\" - - print \"BEGIN nut_$x.input_voltage $1\"; - print \"SET input_voltage = \" input_voltage; - print \"SET input_voltage_fault = \" input_voltage_fault; - print \"SET input_voltage_nominal = \" input_voltage_nominal; - print \"END\" - - print \"BEGIN nut_$x.input_current $1\"; - print \"SET input_current_nominal = \" input_current_nominal; - print \"END\" - - print \"BEGIN nut_$x.input_frequency $1\"; - print \"SET input_frequency = \" input_frequency; - print \"SET input_frequency_nominal = \" input_frequency_nominal; - print \"END\" - - print \"BEGIN nut_$x.output_voltage $1\"; - print \"SET output_voltage = \" output_voltage; - print \"END\" - - print \"BEGIN nut_$x.load $1\"; - print \"SET load = \" load; - print \"END\" - - print \"BEGIN nut_$x.load_usage $1\"; - print \"SET load_usage = \" load_usage; - print \"END\" - - print \"BEGIN nut_$x.temp $1\"; - print \"SET temp = \" temp; - print \"END\" - - if(do_clients) { - print \"BEGIN nut_$x.clients $1\"; - print \"SET clients = \" clients; - print \"END\" - } -}" - # shellcheck disable=2181 - [ $? -ne 0 ] && unset "nut_ids[$i]" && error "failed to get values for '$i', disabling it." - done - - [ ${#nut_ids[@]} -eq 0 ] && error "no UPSes left active." && return 1 - return 0 -} diff --git a/collectors/charts.d.plugin/nut/nut.conf b/collectors/charts.d.plugin/nut/nut.conf deleted file mode 100644 index b95ad9048..000000000 --- a/collectors/charts.d.plugin/nut/nut.conf +++ /dev/null @@ -1,33 +0,0 @@ -# no need for shebang - this file is loaded from charts.d.plugin - -# netdata -# real-time performance and health monitoring, done right! -# (C) 2018 Costa Tsaousis -# GPL v3+ - -# a space separated list of UPS names -# if empty, the list returned by 'upsc -l' will be used -#nut_ups= - -# each line represents an alias for one UPS -# if empty, the FQDN will be used -#nut_names["FQDN1"]="alias" -#nut_names["FQDN2"]="alias" - -# how much time in seconds, to wait for nut to respond -#nut_timeout=2 - -# set this to 1, to enable another chart showing the number -# of UPS clients connected to upsd -#nut_clients_chart=1 - -# the data collection frequency -# if unset, will inherit the netdata update frequency -#nut_update_every=2 - -# the charts priority on the dashboard -#nut_priority=90000 - -# the number of retries to do in case of failure -# before disabling the module -#nut_retries=10 -- cgit v1.2.3