mirror of
https://github.com/netdata/netdata.git
synced 2025-04-22 20:42:33 +00:00
remove charts.d/nut (#16230)
This commit is contained in:
parent
18ebff22c4
commit
2bc3c2544a
10 changed files with 0 additions and 773 deletions
|
@ -45,6 +45,5 @@ include ap/Makefile.inc
|
||||||
include apcupsd/Makefile.inc
|
include apcupsd/Makefile.inc
|
||||||
include example/Makefile.inc
|
include example/Makefile.inc
|
||||||
include libreswan/Makefile.inc
|
include libreswan/Makefile.inc
|
||||||
include nut/Makefile.inc
|
|
||||||
include opensips/Makefile.inc
|
include opensips/Makefile.inc
|
||||||
include sensors/Makefile.inc
|
include sensors/Makefile.inc
|
||||||
|
|
|
@ -36,7 +36,6 @@
|
||||||
# ap=yes
|
# ap=yes
|
||||||
# apcupsd=yes
|
# apcupsd=yes
|
||||||
# libreswan=yes
|
# libreswan=yes
|
||||||
# nut=yes
|
|
||||||
# opensips=yes
|
# opensips=yes
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
integrations/network_ups_tools_nut.md
|
|
|
@ -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
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
|
@ -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
|
|
||||||
}
|
|
|
@ -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
|
|
|
@ -68,7 +68,6 @@ dist_healthconfig_DATA = \
|
||||||
health.d/net.conf \
|
health.d/net.conf \
|
||||||
health.d/netfilter.conf \
|
health.d/netfilter.conf \
|
||||||
health.d/nvme.conf \
|
health.d/nvme.conf \
|
||||||
health.d/nut.conf \
|
|
||||||
health.d/pihole.conf \
|
health.d/pihole.conf \
|
||||||
health.d/plugin.conf \
|
health.d/plugin.conf \
|
||||||
health.d/ping.conf \
|
health.d/ping.conf \
|
||||||
|
|
|
@ -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
|
|
Loading…
Add table
Reference in a new issue