/
Guardamos estados del SAI/UPS a InfluxDB v1 y lo mostramos en dashboard Grafana
Search
Try Notion
Guardamos estados del SAI/UPS a InfluxDB v1 y lo mostramos en dashboard Grafana
Fecha publicación
2021/12/23
#
29
Dificultad
Intermedio
3 more properties
Introducción
El cometido de este servicio es recoger los datos de monitorización del UPS.
Se usa NUT como fuente de los datos.
Una vez tenemos estos datos los inyectamos en InfluxDB v1.
Seguidamente se pueden monitorizar los datos en Grafana.
⚠️
IMPORTANTE: no existe contendor de Docker oficial
Crear nuestra imagen para Docker desde zero
mkdir /var/tmp/influx-nut cd /var/tmp/influx-nut git clone https://github.com/lf-/influx_nut.git
Bash
otra opción es descargar el contenido en formato GIT des de la página del proyecto en github y descomprimir el contenido en el directorio indicado /var/tmp/influx-nut
En caso de que el proyecto ya no exista, podemos descarrar el código fuente desde este paquete:
y luego lo descromprimimos en: /var/tmp/influx-nut
Em este punto deberíamos tener un directorio llamado influx_nut dentro de /var/tmp/influx-nut
Creamos fichero /var/tmp/influx-nut/Dockerfile
FROM python:3.7
ADD influx_nut.json /etc/influx_nut.json
ADD influx_nut /influx_nut
WORKDIR /influx_nut
RUN python setup.py install
CMD influx_nut --config /etc/influx_nut.json
view raw Dockerfile hosted with ❤ by GitHub
Creamos el fichero /var/tmp/influx-nut/influx_nut.json
{
"nut_host": "localhost",
"nut_ups": "salicru",
"nut_vars": {
"ups.load": {"type": "int", "measurement_name": "ups_load"},
"input.voltage": {"type": "float", "measurement_name": "ups_voltage"},
"battery.charge": {"type": "int", "measurement_name": "ups_charge"}
},
"influx_host": "http://localhost:8086",
"influx_creds": ["THE_INFLUXDB_USER", "THE_INFLUXDB_PASSWORD"],
"influx_db": "telegraf",
"influx_tags": {
"ups": "NAME_OF_YOUR_UPS"
}
}
view raw influx_nut.json hosted with ❤ by GitHub
Creamos la imagen para docker con:
cd /var/tmp/influx-nut docker build . -t influxdb/nut
Bash
Directorios
mkdir -p /docker-data/influx-nut/
Shell
/docker-data/influx-nut/influx_nut.json
⚠️
Recordar que hay que modificar las credenciales y el nombre de la BBDD de InfluxDB cuando el contenedor haya sido desplegado.
{
"nut_host": "host",
"nut_ups": "salicru",
"nut_vars": {
"ups.load": {"type": "int", "measurement_name": "ups_load"},
"input.voltage": {"type": "float", "measurement_name": "ups_voltage"},
"battery.charge": {"type": "int", "measurement_name": "ups_charge"}
},
"influx_host": "http://influx1:8086",
"influx_creds": ["telegraf_w", "%AfqgnSb5Ye?p!qd"],
"influx_db": "telegraf",
"influx_tags": {
"ups": "salicru"
}
}
view raw influx_nut.json hosted with ❤ by GitHub
/docker-data/influx-nut/docker-compose.yml
version: '3.3'
services:
nut:
container_name: influx-nut
restart: unless-stopped
image: influxdb/nut
environment:
- TZ=Europe/Madrid
volumes:
- './influx_nut.json:/etc/influx_nut.json:ro'
- '/etc/localtime:/etc/localtime:ro'
networks:
- i40sys
extra_hosts:
host: 172.19.221.221
networks:
i40sys:
external:
name: i40sys
/etc/netplan/50-cloud-init.yaml
network:
version: 2
ethernets:
lo:
dhcp4: false
optional: false
addresses:
- 127.0.0.1/8
- 172.19.221.221/24
...
/etc/nut/upsd.conf
/etc/netplan# cat /etc/nut/upsd.conf
MAXAGE 15
STATEPATH /var/run/nut
LISTEN 127.0.0.1 3493
LISTEN 172.19.221.221 3493
MAXCONN 1024
view raw upsd.conf hosted with ❤ by GitHub