0
0
Fork 0
mirror of https://github.com/netdata/netdata.git synced 2025-04-13 01:08:11 +00:00

remove charts.d/nut ()

This commit is contained in:
Ilya Mashchenko 2023-10-18 10:01:58 +03:00 committed by GitHub
parent 18ebff22c4
commit 2bc3c2544a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 0 additions and 773 deletions

View file

@ -45,6 +45,5 @@ include ap/Makefile.inc
include apcupsd/Makefile.inc
include example/Makefile.inc
include libreswan/Makefile.inc
include nut/Makefile.inc
include opensips/Makefile.inc
include sensors/Makefile.inc

View file

@ -36,7 +36,6 @@
# ap=yes
# apcupsd=yes
# libreswan=yes
# nut=yes
# opensips=yes
# -----------------------------------------------------------------------------

View file

@ -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

View file

@ -1 +0,0 @@
integrations/network_ups_tools_nut.md

View file

@ -1,207 +0,0 @@
<!--startmeta
custom_edit_url: "https://github.com/netdata/netdata/edit/master/collectors/charts.d.plugin/nut/README.md"
meta_yaml: "https://github.com/netdata/netdata/edit/master/collectors/charts.d.plugin/nut/metadata.yaml"
sidebar_label: "Network UPS Tools (NUT)"
learn_status: "Published"
learn_rel_path: "Data Collection/UPS"
message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE"
endmeta-->
# Network UPS Tools (NUT)
<img src="https://netdata.cloud/img/plug-circle-bolt.svg" width="150"/>
Plugin: charts.d.plugin
Module: nut
<img src="https://img.shields.io/badge/maintained%20by-Netdata-%2300ab44" />
## 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.
<details><summary>Config options</summary>
| 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 |
</details>
#### Examples
##### Provide names to UPS devices
Map aliases to UPS devices
<details><summary>Config</summary>
```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
```
</details>
## 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
```

View file

@ -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

View file

@ -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 <costa@tsaousis.gr>
#
# 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
}

View file

@ -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 <costa@tsaousis.gr>
# 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

View file

@ -68,7 +68,6 @@ dist_healthconfig_DATA = \
health.d/net.conf \
health.d/netfilter.conf \
health.d/nvme.conf \
health.d/nut.conf \
health.d/pihole.conf \
health.d/plugin.conf \
health.d/ping.conf \

View file

@ -1,50 +0,0 @@
# you can disable an alarm notification by setting the 'to' line to: silent
template: nut_10min_ups_load
on: nut.load
class: Utilization
type: Power Supply
component: UPS
os: *
hosts: *
lookup: average -10m unaligned of load
units: %
every: 1m
warn: $this > (($status >= $WARNING) ? (70) : (80))
crit: $this > (($status == $CRITICAL) ? (85) : (95))
delay: down 10m multiplier 1.5 max 1h
summary: UPS load
info: UPS average load over the last 10 minutes
to: sitemgr
template: nut_ups_charge
on: nut.charge
class: Errors
type: Power Supply
component: UPS
os: *
hosts: *
lookup: average -60s unaligned of battery_charge
units: %
every: 60s
warn: $this < 75
crit: $this < 40
delay: down 10m multiplier 1.5 max 1h
summary: UPS battery charge
info: UPS average battery charge over the last minute
to: sitemgr
template: nut_last_collected_secs
on: nut.load
class: Latency
type: Power Supply
component: UPS device
calc: $now - $last_collected_t
every: 10s
units: seconds ago
warn: $this > (($status >= $WARNING) ? ($update_every) : ( 5 * $update_every))
crit: $this > (($status == $CRITICAL) ? ($update_every) : (60 * $update_every))
delay: down 5m multiplier 1.5 max 1h
summary: NUT last collected
info: Number of seconds since the last successful data collection
to: sitemgr