En este manual veremos como monitorizar una serie de parámetros del kernel de FreeBSD mediante Prometheus, si no hemos realizado la instalación base de Prometheus primero seguiremos la guía básica de instalación de Prometheus y Grafana.
Desde la versión 12.0 FreeBSD viene por defecto con el comando prometheus_sysctl_exporter que expone los parámetros del kernel en forma de métricas aptas para Prometheus, estas métricas se pueden exponer de dos modos.
Inetd
Habilitamos la ejecución de prometheus_sysctl_exporter mediante
Inetd
:
# Example entry for the Prometheus sysctl metrics exporter
#
prom-sysctl stream tcp nowait nobody /usr/sbin/prometheus_sysctl_exporter prometheus_sysctl_exporter -dgh
Habilitamos el servicio:
Arrancamos el servicio:
Comprobamos que esté el socket a la escucha:
root inetd 18095 6 tcp4 *:9124 *:* LISTEN
Dejamos un cmdwatch para ver como Inetd arranca el servicio al vuelo cuando recibe una petición:
Ahora realizamos una petición desde un navegador web, un curl no valdría ya que el comando que ejecuta Inetd está habilitando la compresión y veríamos una salida binaria por consola:
http://192.168.69.2:9124
Veremos la siguiente salida:
En la consola del cmdwatch veremos:
nobody 36991 0.0 0.0 13100 2532 - Rs 12:11 0:00.03 prometheus_sysctl_exporter -dgh (prometheus_sysctl_e)
TextCollector
Si no nos convence utilizar Inetd para lanzar el exporter podemos delegar en el text exporter por defecto de node_exporter, pero hay que instalar un software mas: node_exporter.
Instalamos el software necesario:
Crontabeamos la ejecución de prometheus_sysctl_exporter:
*/1 * * * * root prometheus_sysctl_exporter | sponge /var/tmp/node_exporter/sysctl_exporter.prom
node_exporter expone por defecto todas las métricas de los ficheros del directorio: /var/tmp/node_exporter/*.prom, de este modo conseguiremos el mismo resultado que com el servicio Inetd.
Si hemos optado por Inetd debemos añadir un scrape a la configuración de Prometheus, si hemos utilizado el text collector podemos omitir esta parte:
...
scrape_configs:
...
- job_name: 'prometheus_sysctl_exporter'
scrape_interval: 30s
static_configs:
- targets:
- mightymax:9124
...
Reiniciamos el servicio:
Una de las dashboards de Grafana que plotean los datos del exporter son las estadísticas de ZFS:
https://grafana.com/grafana/dashboards/12628
Tras importar la dashboard veremos gráficas como estas:
NOTA: Por alguna razón los “gauges” del Overview de la dashboard no aparecían bien hasta que los edité, cambié el tipo de gráfico y volví a ponerlos como “gauge”.