InfluxDB y Grafana para monitorear Proxmox y PfSense

Hoy vamos a ver como instalar un contenedor de Proxmox (o una VM) con InfluxDB y Grafana para llevar las metricas de Proxmox y de PfSense. Será un tutorial básico, asi que luego podrán ir agregándole cosas a cada Dashboard a su gusto. Empezamos creando un CT nuevo con Debian Buster. En mi caso, con 1G de RAM y 8G de HDD. Eso es suficiente. Si luego van a usar Graylog o algo más ahí, entonces el espacio puede que no baste.

Una vez instalado, actualizamos los repositorios y upgradeamos el sistema

apt update
apt dist-upgrade -y

Luego, vamos a empezar a instalar los paquetes necesarios:

apt install -y gnupg2 curl wget software-properties-common

Puede que ya tengamos alguno pero no importa.

InfluxDB

Para quien no lo conozca, influxDB es una base de datos de series de tiempo. Esto nos permite guardar varios tipos de metricas que pueden ser consultadas por herramientras como Grafana, asi que vamos a instalarlo de la siguiente forma:

wget -qO- https://repos.influxdata.com/influxdb.key | apt-key add -
echo "deb https://repos.influxdata.com/debian buster stable" |  tee /etc/apt/sources.list.d/influxdb.list
apt update
apt install -y influxdb
systemctl enable --now influxdb

Ahora vamos a editar el archivo de configuracion de Influxdb para permitir el acceso por HTTP (Para PfSense):

nano /etc/influxdb/influxdb.conf

Bajamos a la seccion HTTP y descomentamos: “enabled”, “bind-address= ‘:8086’”, y listo. Salvamos y salimos. Luego reiniciamos el servicio

systemctl restart influxdb

Ahora ya está listo el influxDB para pfsense, pero vamos a crear la base de datos. Ejecutamos:

influx

Esto nos abre el editor de consultas, como si fuera MySQL o SQLite

CREATE DATABASE "firewall";
CREATE USER "firewall_write" WITH PASSWORD ‘mipanzuzuzu’;
CREATE USER "firewall_read" WITH PASSWORD ‘mipaaaaaaaan’;
GRANT READ ON firewall TO firewall_read;
GRANT READ ON firewall TO firewall_write;
exit

Con esto, ya creamos la BD del PfSense.

Grafana

Grafana es un software libre basado en licencia de Apache 2.0, que permite la visualización y el formato de datos métricos. Permite crear cuadros de mando y gráficos a partir de múltiples fuentes. Para instalarlo, vamos a ejecutar los siguientes comandos:

curl https://packages.grafana.com/gpg.key |  apt-key add -
add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
apt update
apt-get -y install grafana
systemctl enable --now grafana-server
systemctl start grafana-server

Iniciamos el servicio y podremos acceder a la web de Grafana http://ipgrafana:3000
Usuario y Password: admin
Y te pedirá cambiar la clave.

Grafana Login

PfSense

Ahora vamos a parar aquí, y vamos al pfsense, puesto que va a ser el primer Dashboard que configuremos. Nos logueamos en el pfsense y vamos al Package Manager, donde instalaremos Telegraf.

pfSense Telegraf

Una vez instalado, vamos a Services->Telegraf y vamos a llenar los datos necesarios:

Telegraf Config

  1. Habilitar el servicio
  2. Telegraf Output: InfluxDB
  3. InfluxDB Server: http://containerip:8086
  4. InfluxDB Database: firewall
  5. InfluxDB Username: firewall_write
  6. InfluxDB Password:  ‘mipanzuzuzu’

Y dejamos el resto sin marcar y vacio. Salvamos y salimos.

Volvemos a Grafana y en la pantalla inicial vemos que nos dice Data Sources. Entramos ahi y vamos a seleccionar nuestro origen de Datos (DATA SOURCES)

El origen de datos: InfluxDB

Nombre: PfSense (Marcar como default si se quiere)

HTTP:

URL: http://localhost:8086

InfluxDB Details:

Database: firewall

User: firewall_read

Password: mipaaaaaaaan

HTTP Method: GET

Save & Test

Si todo esta bien, entonces, ahora podemos en el menu de la izquierda, seleccionar el Signo + y en lugar de crear un nuevo Dashboard, pues vamos a dar en Importar

Y vamos a seleccionar Subir Archivo JSON. El JSON a subir lo pueden obtener desde aquí. Seleccionan el origen de datos pfsense y el nombre de la interfaz WAN del pfsense.

En el Pfsense vemos el nombre de la interfaz WAN en este caso em0

Y listo. Cuando le den salvar, van a tener el Dashboard lindo y bonito como ven en la imagen.

Proxmox

Para el caso del Proxmox, el procedimiento es mucho más facil, puesto que haremos lo siguiente. Accedemos por ssh al Proxmox y Dentro:

nano  /etc/pve/status.cfg

Dentro del archivo pondremos el siguiente contenido:

influxdb: influx1
  server ipctinfluxdb
  port 8089

NOTA: Este fichero es sensible a la Indentación. Puede que tenga que forzar al proxmox a ver el cambio

systemctl restart pvestatd

Guardamos y salimos. Y no, no hemos terminado, pero al menos en el proxmox si. Pues como dice la Wiki de PVE, con solo eso, pues estamos diciendole al Proxmox que envie los datos de estado a esa IP por ese puerto (UDP).

Ahora vamos a nuestro contenedor una vez mas y editamos de nuevo el archivo de influxdb

nano /etc/influxdb/influxdb.conf

Buscamos el apartado UPD que se encuentra asi [[udp]]:

  • Y lo habilitamos descomentando el enabled y cambiandolo a true,
  • descomentamos tambien el bind-address y lo dejamos como esta por el puerto 8089.
  • database “proxmox”,
  • batch-size y lo cambiamos a 1000
  • descomentamos tambien el batch-timeout y lo dejamos tal cual.

Quedando algo como esto:

[[udp]]
  enabled = true
  bind-address = ":8089"
  database = "proxmox"
  batch-size = 1000
  batch-timeout = "1s"

Guardamos y salimos.

Entramos al sistema

influx

Y creamos la base de datos:

create database proxmox;
exit

Y volvemos a reiniciar el servicio

systemctl restart influxdb

En Grafana, vamos a Opciones (El engranaje que esta en el menu de la izquierda) y seleccionamos Origen de Datos para agregar uno nuevo que igual será de tipo InfluxDB
Le ponemos nombre “Proxmox” y tanto la URL como el Puerto es el mismo

Y en la parte de los detalles, pues solo pondremos la BD que es “proxmox” como definimos en el apartado de UDP del servidor

Y vamos de nuevo a importar un JSON como mismo hicimos antes para el Dashboard del PfSense, pero en este caso para Proxmox, el cual podremos descargar de aquí.

Vean que esta vez la fuente de los datos abajo es Proxmox y no PfSense. Una vez importado, veremos lo siguiente:

Donde vemos que tenemos un error de que nos falta un plugin. Este plugin, lo que nos da es la hora que tiene el proxmox, y si bien podemos quitarlo, es un buen momento para enseñar como poner un plugin de forma manual.

Grafana esta disponible para Cuba a la hora de instalar. Pero para descargar no. Por tanto ni los dashboard ni los plugins podremos bajarlos sin VPN. En mi caso, yo lo baje desde mi PC usando una VPN y se lo puse al servidor. Y es lo que les voy a explicar ahora. Recuerden que se explica todo el proceso, pero los archivos van a estar disponibles al finalizar el tutorial en un archivo comprimido. Usando una VPN de su eleccion, bajamos el archivo:

Clock-Panel

El cual es un archivo zip que contiene el plugin. Este archivo lo vamos a ubicar en nuestro servidor en la carpeta /var/lib/grafana/plugins

Usando el comando unzip lo descomprimimos o bien usando el MC entramos en el comprimido y con F5 copiamos el contenido del comprimido fuera en la carpeta

El resultado es el mismo

Ahora salimos del MC y renombramos la carpeta quitando todo lo que esta despues del nombre “grafana-clock-panel”

mv grafana-clock-panel-48a718a/ grafana-clock-panel

Y reiniciamos el servicio de Grafana

/etc/init.d/grafana-server restart

Ahora actualizamos la pagina y veremos como ya aceptó el plugin y nos muestra los datos correctamente:

Ahora les dejo unas imagenes de como se ven los dashboard de forma integra, pusto que aqui solo les muestro el inicio

Proxmox:

PfSense

Sino pudo descargar los dashboard por problemas de conexión o estar cerrado para su país, puede descargar los archivos de configuración desde aquí

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 4.9 / 5. Recuento de votos: 22

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

6 comentarios

  1. Google Chrome 105.0.0.0 Google Chrome 105.0.0.0 Mac OS X  10.15.7 Mac OS X 10.15.7
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36

    Les felicito , gracias por el buen contenido ,

  2. Google Chrome 89.0.4389.90 Google Chrome 89.0.4389.90 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36

    Funcionando perfectamente, gracias!

  3. Google Chrome 85.0.4183.127 Google Chrome 85.0.4183.127 Android 10 Android 10
    Mozilla/5.0 (Linux; Android 10; SM-A505FN) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 Mobile Safari/537.36

    Saludos, cómo haría para monitorear más de un servidor Proxmox?

  4. Google Chrome 83.0.4103.97 Google Chrome 83.0.4103.97 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36

    como pudiera llevarlo al escenario de squid o zimbra o mta relay??


  5. Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
    Firefox 81.0 Firefox 81.0 Ubuntu x64 Ubuntu x64
    Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:81.0) Gecko/20100101 Firefox/81.0

    Conseguido!!!!

    Buen artículo. Gracias

    • Google Chrome 85.0.4183.83 Google Chrome 85.0.4183.83 GNU/Linux x64 GNU/Linux x64
      Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36

      Amigo, Como hizo la parte de Pfsense?

Responder a J.A. Cancelar la respuesta

Tu dirección de correo electrónico no será publicada.


*