Tabla de Grafana con etiquetas de textfile collector
La solución actual para monitorizar los equipos del instituto está basada en Prometheus y Grafana. Durante el tiempo que ha estado en marcha desde que substituyó al anterior sistema basado en Graphite ha rendido muy bien
Y no es que Graphite no lo hicera. Una vez que se montó el directorio con las métricas en un sistema de archivos en RAM todo pasó a funcionar como la seda sin machacar a los discos con escrituras. Pero Prometheus es una herramienta mucho más nueva que nunca ha abusado de los discos con una carga excesiva de operaciones de escritura. Eso sí, consume más RAM.
Como agente utilizamos prometheus-node-exporter
que está instalado en todos los equipos directamente desde los repositorios de Ubuntu 20.04 con la configuración por defecto y exporta todas las métricas que mostramos en diferentes dashboards.
Algunos dashboards muestran información detallada sobre un host y otros muestran información básica (uso de CPU, RAM, Disco y otras métricas como actualizaciones pendientes) para cada uno de los equipos de un conjunto (grupos clase, ordenadores ESO/BATX).
Este tipo de dashboard permite pasar revista rápidamente al estado de un conjunto de equipos y ver su evolución en el tiempo. Sin embargo, si solo se quiere comprobar el estado actual de los equipos no resulta una visualización compacta ni eficiente.
Para representar el estado actual es mejor utilizar una tabla como esta:
Lo que resulta interesante de esta tabla es que las últimas columnas no representan métricas tradicionales. Las columnas cores
, cpu
y startup
no están representando métricas como la cantidad de espacio disponible en disco o el número de actualizaciones pendientes.
El modelo de CPU o el número de núcleos va a ser invariable hasta que se reemplace el equipo y la columna startup
—que representa el tiempo que ha tardado el equipo en arrancar tal y como lo devuelve systemd-analyze
— no cambiará su valor hasta el próximo arranque.
Estas últimas columnas muestras labels
exportardas por el textfile-collector
de node-exporter
. El colector textfile
permite exportar datos a partir de ficheros de texto con la extensión .prom
que se encuentran en el directorio /var/lib/prometheus/node-exporter
. La instalación por defecto de node-exporter de Ubuntu 20.04 utiliza este directorio para los ficheros apt.prom y smartmon.prom que contienen métricas sobre las actualizaciones y los parámetros SMART.
Y allí Vasilisa deja en cada arranque el fichero misc.prom
con una métrica (de valor 1 invariable) y diferentes etiquetas para representar las tres últimas columnas.
# HELP misc_labels Labeled information as provided by /proc/cpuinfo.
# TYPE misc_labels gauge
misc_labels{cpu=" Intel(R) Core(TM) i3-4170 CPU @ 3.70GHz",cores=" 2",startup=" 34.990s "} 1
La parte de Vasilisa que actualiza misc.prom
es:
# # Métricas para Prometheus # NODE_EXPORTER_DIR='/var/lib/prometheus/node-exporter' if [ -d $NODE_EXPORTER_DIR ] then log "Preparo métricas para Prometheus" FILE='misc.prom' CPU_MODEL_NAME=`cat /proc/cpuinfo | grep "model name" | head -n 1 | cut -d':' -f2` CPU_CORES=`cat /proc/cpuinfo | grep "cpu cores" | head -n 1 | cut -d':' -f2` STARTUP_FINISHED=`systemd-analyze | head -n1 | cut -d'=' -f2` echo "# HELP misc_labels Labeled information as provided by /proc/cpuinfo." >$NODE_EXPORTER_DIR/$FILE echo "# TYPE misc_labels gauge" >>$NODE_EXPORTER_DIR/$FILE echo "misc_labels{cpu=\"$CPU_MODEL_NAME\",cores=\"$CPU_CORES\",startup=\"$STARTUP_FINISHED\"} 1" >>$NODE_EXPORTER_DIR/$FILE log "Métricas preparadas en $NODE_EXPORTER_DIR/$FILE" fi
Para representar la información en Grafana se debe seleccionar la nueva métrica misc_labels
tal y como se ve en la consulta F
Y en aplicar dos transformaciones: una Outer join y una Organize fields.
Más información: