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.
Crear nuestra imagen para Docker desde zero
- Clonar pryecto: https://github.com/lf-/influx_nut
mkdir /var/tmp/influx-nut cd /var/tmp/influx-nut git clone https://github.com/lf-/influx_nut.gitotra 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-nutEn 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-nutEm 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 - 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" } } - Creamos la imagen para docker con:
cd /var/tmp/influx-nut docker build . -t influxdb/nut
Directorios
mkdir -p /docker-data/influx-nut//docker-data/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"
}
}/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
