Configuración de NGINX
Configuración de NGINX
Para que el plugin pueda obtener las estadísticas, HAProxyNGINX debe exponer el endpoint . La habilitación se realiza editando el fichero /stats;csvstub_statusde configuración de NGINX (por defecto en haproxy.cfg/etc/ o haproxy/haproxy.cfgnginx/nginx.conf/etc/nginx/sites-available/default).
El módulo
ngx_http_stub_status_moduleno se incluye en todas las compilaciones de NGINX. Para verificar si está disponible, ejecutanginx -V 2>&1 | grep stub_status. La mayoría de las distribuciones Linux lo incluyen por defecto.
Configuración mínima (sin autenticación, sin SSL)
Añade ununa frontendlocationdedicadodedicada aal lasestado estadísticas:dentro de tu server:
frontendserver stats{
bindlisten *:840480;
statsserver_name enable_;
stats urilocation /statsnginx_status stats{
refreshstub_status 10son;
access_log off;
allow 192.168.1.50; # IP del servidor de Pandora FMS
deny all;
}
}
Con esta configuración el plugin consumirá la URL:
http://<IP_SERVIDOR>:8404/stats/nginx_status
El plugin normaliza automáticamente la URL añadiendo el sufijo;csvy el parámetronorefreshcuando faltan, por lo que basta con indicar la URL base de stats.
Configuración con autenticación básica
Para proteger el endpoint con usuario y contraseña, define una y userlistauth_basicaplica en http-request authauth_basic_user_fileella frontendlocation de stats:status:
frontendserver stats{
bindlisten *:840480;
statsserver_name enable_;
stats urilocation /statsnginx_status stats{
refreshstub_status 10son;
aclaccess_log auth_okoff;
http_auth(stats_users)auth_basic http-request"NGINX authStatus";
realmauth_basic_user_file stats/etc/nginx/.htpasswd;
if}
!auth_ok
userlist stats_users
user admin password $6$rounds=5000$<HASH_SHA512>}
Genera el hashfichero de la contraseña.htpasswd con o mkpasswdhtpasswdopenssl:
mkpasswdhtpasswd -mc sha-256/etc/nginx/.htpasswd mypasswordadmin
# o bien
openssl passwd -6apr1 mypassword > /etc/nginx/.htpasswd
En el plugin se deberá facilitar ese mismo username y password mediante --user / --password (o los campos username / password del archivo de configuración).
Configuración con SSL/TLS
Para servir las estadísticas sobre HTTPS añadeconfigura el certificado en el ssl crt al :bindserver
frontendserver stats{
bindlisten *:8404443 sslssl;
crtserver_name _;
ssl_certificate /etc/haproxy/nginx/certs/stats.pemstatus.pem;
stats enable
stats urissl_certificate_key /statsetc/nginx/certs/status.key;
statslocation refresh/nginx_status 10s{
stub_status on;
access_log off;
allow 192.168.1.50;
deny all;
}
}
Genera un certificado autofirmado de pruebas con:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/haproxy/nginx/certs/stats.status.key \
-out /etc/haproxy/nginx/certs/stats.status.crt \
-subj "/CN=localhost"
cat /etc/haproxy/nginx/certs/stats.status.crt /etc/haproxy/nginx/certs/stats.status.key > /etc/haproxy/nginx/certs/stats.status.pem
En el plugin se indicará la URL con esquema https:// y el parámetro --ssl (o verify_ssl) según se quiera validar el certificado:
-
verify_ssl = true→ para certificados válidos en producción. -
verify_ssl = false→ para certificados autofirmados o entornos de prueba.
Configuración completa (SSL + autenticación)
globalserver maxconn{
4096listen defaults443 modessl;
httpserver_name timeout_;
connectssl_certificate 5s/etc/nginx/certs/status.pem;
timeoutssl_certificate_key client/etc/nginx/certs/status.key;
30slocation timeout/nginx_status {
stub_status on;
access_log off;
auth_basic "NGINX Status";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
server 30s{
frontendlisten stats80;
bindserver_name *:8404_;
sslreturn crt301 https:/etc/haproxy/certs/stats.pem/$host$request_uri;
stats enable
stats uri /stats
stats refresh 10s
stats admin if TRUE
acl auth_ok http_auth(stats_users)
http-request auth realm stats if !auth_ok
userlist stats_users
user admin password $6$rounds=5000$<HASH_SHA512>
frontend myapp
bind *:80
default_backend servers
backend servers
server s1 127.0.0.1:8080 check}
Tras modificar la configuración de NGINX recarga el servicio para aplicar los cambios:haproxy.cfg
sudo systemctl reload haproxynginx
Verificación
Para comprobar que el endpoint responde correctamente, puedes hacer una petición manual ala CSVla página de estadísticas:estado:
curl -u admin:mypassword http://192.168.0.10:8404/stats;csv10/nginx_status
La salida debe ser untexto CSVplano cuyocon primerel registrosiguiente esformato:
Active connections: 291
server accepts handled requests
16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106
- Active connections: número total de conexiones activas (incluye las en espera).
- accepts: conexiones aceptadas totales desde que se inició NGINX.
- handled: conexiones gestionadas totales desde que se inició NGINX.
- requests: peticiones de cliente procesadas totales desde que se inició NGINX.
- Reading: conexiones leyendo cabeceras de petición del cliente.
- Writing: conexiones escribiendo respuesta al cliente o procesando petición.
-
Waiting: conexiones keep-alive inactivas esperando la
cabecerasiguienteconpetición.
# pxname,svname,qcur,qmax,...frontendbackendserver