Exportar metricas del modulo nginx-module-vts a Prometheus

Gregorio Troncoso
2 min readFeb 11, 2020

Esta guia esta basada en el articulo https://medium.com/@shevtsovav/ready-for-scraping-nginx-metrics-nginx-vts-exporter-prometheus-grafana-26c14816ae7c de Anton Shevtsov. Solo me encargue de traducirla. Todos los creditos para él.

Una vez que tengamos expuestas las métricas de nuestro nginx, tenemos que configurar un exporter para que Prometheus las consuma. Para esto vamos a usar este https://github.com/hnlq715/nginx-vts-exporter

Después de aplicar todo esto, vamos a tener el exporter corriendo como servicio de sistema y con su propio usuario.

Requisitos:

Este proyecto esta desarrollado en Go, así que para compilarlo vamos a necesitar el paquete golang instalado ademas de git.

En Centos sería:

~# yum install -y golang git

También tenemos que definir la variable de entorno GOPATH. Este va a ser el directorio donde go va a dejar el binario del proyecto. Para esto hacemos:

~# mkdir ~/.go
~# echo "GOPATH=~/.go" >> ~/.bashrc

Compilar:

Clonamos el repo. Nos metemos en el directorio donde esta todo y lo buildeamos:

~# git clone https://github.com/hnlq715/nginx-vts-exporter~# cd nginx-vts-exporter/~# go install nginx_vts_exporter.go

Una vez que terminó vamos a $GOPATH/bin y ya tenemos el binario. Vamos a copiarlo a /usr/bin y darle permisos de ejecución:

~# cp bin/nginx_vts_exporter /usr/bin
~# chmod +x /usr/bin/nginx_vts_exporter

Vamos a crear un usuario para el servicio:

~# useradd --no-create-home --shell /bin/false nginx_vts_exporter

Creamos la unidad de systemd /etc/systemd/system/nginx_vts_exporter.service para manejar el servicio con el siguiente contenido:

[Unit]
Description=Nginx vts exporter
Wants=network-online.target
After=network-online.target
[Service]
User=nginx_vts_exporter
Group=nginx_vts_exporter
ExecStart=/usr/bin/nginx_vts_exporter -nginx.scrape_uri=https://misitio.com.ar/status/format/json
Restart=always
RestartSec=3
[Install]
WantedBy=default.target

En -nginx.scrape_uri= debemos poner la url que configuramos para exponer las métricas en formato json.

Actualizamos las unidades de systemd, habilitamos el servicio al inicio del sistema y lo iniciamos:

systemctl daemon-reload
systemctl enable nginx_vts_exporter
systemctl start nginx_vts_exporter
systemctl status nginx_vts_exporter

Para probarlo podemos ejecutar:

~# curl https://misitio.com.ar/format/json

Nos tiene que devolver el json con las métricas.

Una vez hecho esto, solo hay que configurar el target en un servidor Prometheus para que consuma las métricas.

--

--