Esta pagina se ve mejor con JavaScript habilitado

Monitorización parámetros kernel FreeBSD mediante Prometheus

 ·  🎃 kr0m

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 :

vi /etc/inetd.conf

# 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:

sysrc inetd_enable=YES

Arrancamos el servicio:

service inetd start

Comprobamos que esté el socket a la escucha:

sockstat -46 -l -s|grep 9124

root     inetd      18095 6  tcp4   *:9124                *:*                                LISTEN

Dejamos un cmdwatch para ver como Inetd arranca el servicio al vuelo cuando recibe una petición:

cmdwatch "ps axuwww|grep prometheus_sysctl_exporter|grep -v grep"

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:

pkg install moreutils node_exporter

Crontabeamos la ejecución de prometheus_sysctl_exporter:

crontab -e

*/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:

vi /usr/local/etc/prometheus.yml

...
scrape_configs:
...
  - job_name: 'prometheus_sysctl_exporter'
    scrape_interval: 30s
    static_configs:
      - targets:     
        - mightymax:9124
...

Reiniciamos el servicio:

service prometheus restart


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”.

Si te ha gustado el artículo puedes invitarme a un RedBull aquí