El objetivo final de compilar e instalar collectd con InfluxDB y graficar las métricas de collectd con Grafana era lograr monitorear la actividad en un servidor Web Nginx a través de gráficas y alertas en Grafana. Este artículo explica la configuración de Nginx y collectd para recopilar datos de uso del servidor Web, y la configuración de Grafana para visualizar estos datos.

Configuración de Nginx

Para que collectd pueda recopilar datos relacionados a la actividad del servidor Nginx, es necesario utilizar el módulo stub_status. Se trata de un pequeño módulo que provee información básica sobre el estado de un servidor Nginx. Este módulo no está habilitado por defecto, sino que el paquete nginx debe haber sido compilado con la opción --with-http_stub_status_module. Es posible verificar si un servidor Nginx ha sido compilado con soporte para el módulo stub_status ejecutando el siguiente comando:

root@debian:~# /usr/local/nginx/sbin/nginx -V 2>&1 | sed -e 's/--/\n--/g' | grep stub
--with-http_stub_status_module

Si el módulo está soportado, sólo es necesario habilitarlo en la configuración de Nginx:

root@debian:~# nano /usr/local/etc/nginx/nginx.conf

Agregar la siguiente configuración dentro de la sección server { correspondiente:

location /nginx_status {
    stub_status on;

    access_log off;
    allow 127.0.0.1;
    allow 192.168.79.132;
    deny all;
}

En este ejemplo se ha habilitado el acceso a la información provista por el módulo stub_status (en la locación "/nginx_status") sólo a localhost y al servidor de monitoreo corriendo collectd (dirección IP 192.168.79.132). Ajustar esta configuración adecuadamente.

root@debian:/usr/local/etc/nginx/sites-enabled# service nginx reload
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Reloading nginx configuration: OK

Luego, desde nuestro servidor de monitoreo corriendo collectd, verificar el acceso a la página de estado del servidor Nginx:

root@devuan:~# curl https://www.linuxito.com/nginx_status
Active connections: 1 
server accepts handled requests
 25 25 1008 
Reading: 0 Writing: 1 Waiting: 0

Configuración de collectd

collectd soporta la recolección de estadísticas de Nginx stubs a través del plugin "nginx".

Editar la configuración de collectd:

root@devuan:~# nano /opt/collectd/etc/collectd.conf

Habilitar el plugin "nginx" cambiando:

#LoadPlugin nginx

Por:

LoadPlugin nginx

Luego configurar el acceso al servidor Nginx:

#<Plugin nginx>
#       URL "http://localhost/status?auto"
#       User "www-user"
#       Password "secret"
#       CACert "/etc/ssl/ca.crt"
#</Plugin>

Ajustar la URL adecuadamente:

<Plugin nginx>
        URL "https://www.linuxito.com/nginx_status"
#       URL "http://localhost/status?auto"
#       User "www-user"
#       Password "secret"
#       CACert "/etc/ssl/ca.crt"
</Plugin>

Finalmente reiniciar collectd:

root@devuan:~# service collectd stop
Stopping Statistics collection daemon: collectd.
root@devuan:~# service collectd start
Starting Statistics collection daemon: collectd (collectd).

InfluxDB

Desde el cliente influx es posible verificar que collectd esté recuperando información correctamente:

root@devuan:~# influx
Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.
Connected to http://localhost:8086 version 1.0.2
InfluxDB shell version: 1.0.2
> use collectd
Using database collectd
> show measurements with measurement =~ /nginx/
name: measurements
------------------
name
nginx_value

> show series from nginx_value
key
nginx_value,host=devuan,type=connections,type_instance=accepted
nginx_value,host=devuan,type=connections,type_instance=failed
nginx_value,host=devuan,type=connections,type_instance=handled
nginx_value,host=devuan,type=nginx_connections,type_instance=active
nginx_value,host=devuan,type=nginx_connections,type_instance=reading
nginx_value,host=devuan,type=nginx_connections,type_instance=waiting
nginx_value,host=devuan,type=nginx_connections,type_instance=writing
nginx_value,host=devuan,type=nginx_requests

> select value from nginx_value where type='nginx_requests' order by time desc limit 5
name: nginx_value
-----------------
time                    value
1539274406025952000     1084
1539274396025965000     1083
1539274386026076000     1082
1539274376025745000     1081
1539274366025907000     1080

> exit
root@devuan:~#

Visualizar los datos desde Grafana

Habiendo creado un dashboard, es posible utilizar la siguiente consulta a la base InfluxDB para graficar las conexiones al servidor Nginx:

Luego de unas horas de monitoreo acumuladas, obtengo la siguiente gráfica:

Referencias


Tal vez pueda interesarte


Compartí este artículo