Respuestas:
Los complementos nginx se basan en la siguiente URL para obtener la información de estado:
http://127.0.0.1/nginx_status
Por lo general, nginx no tiene esta URL configurada para mostrar datos de estado.
De la documentación de los complementos, veo que nginx debe configurarse para mostrar datos de estado en una URL específica.
Debe habilitar el estado nginx agregando las siguientes líneas a la configuración del sitio:
server {
listen 127.0.0.1;
server_name localhost;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
No olvide reiniciar el servidor después de agregar esta configuración, y asegúrese de que la URL stus devuelva los datos de estado.
Para obtener la documentación completa de cada complemento, puede ejecutar:
munindoc nginx_request
Espero que esto ayude.
http://localhost/
podría preferir IPv6 y, por lo tanto, no coincidirá con la configuración de nginx, que solo permite IPv4 localhost. Al arreglar la URL /etc/munin/plugin-conf.d/munin-node
para que http://127.0.0.1/nginx_status
finalmente el plugin funcione.
En mi experiencia, es probable que estos complementos no funcionen debido a la mala configuración de nginx. Aquí hay una lista breve de qué hacer en este caso:
Nginx debe compilarse con el módulo HttpStubStatusModule . Puede verificar eso ejecutando el siguiente comando (bajo sudo o root):
nginx -V 2>&1 | grep -o with-http_stub_status_module
Si ve el siguiente resultado, es bueno seguir adelante.
with-http_stub_status_module
De lo contrario, debe volver a compilar nginx con el módulo requerido habilitado o instalar desde una fuente diferente (en mi caso, el repositorio predeterminado de Debian tenía la versión correcta).
Supongo que ha colocado y habilitado la configuración requerida . Para ver si funciona, puede ssh
ir a su servidor y ejecutar
wget http://localhost/nginx_status
Si no obtiene errores aquí, entonces el problema es la configuración del complemento. Si el servidor devuelve un error aquí, puede depurar modificando la configuración:
location /nginx_status {
stub_status on;
access_log off;
error_log /var/log/nginx/status.error.log;
allow 127.0.0.1;
deny all;
}
Después de eso, en el archivo /var/log/nginx/status.error.log
puede ver la razón exacta por la cual el servidor devolvió un error:
[error] 2203#0: *1442 access forbidden by rule, client: ::1, server: localhost, request: "GET /nginx_status HTTP/1.1", host: "localhost"
En mi caso (como puede ver en el registro) el problema era client: ::1
que la configuración solo permitía el acceso desde127.0.0.1
Para resolver el problema, puede seguir la sugerencia de cepharum o modificar la configuración del host virtual:
server {
listen 80;
listen [::]:80;
server_name localhost;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow ::1;
deny all;
}
}
(Tenga en cuenta que yo también reemplazó listen: 127.0.0.1
con el puerto 80 (IPv4 + IPv6) ya que el primero también no funcionaba)
Para verificar si el complemento funciona, ejecuta
munin-run nginx_status
(tenga en cuenta que el complemento debe estar "activado" - debe haber un enlace simbólico en /etc/munin/plugins
- lea el manual si no)
Si obtiene errores con la LWP
biblioteca (p. Ej. LWP::UserAgent
O LWP::VERSION
), a su sistema le falta un paquete requerido por el nginx_status
complemento.
En Debian / Ubuntu, ejecute
apt install libwww-perl
En CentOS
yum install perl-libwww-perl
Después de eso, pruebe el complemento nuevamente usando munin-run
. La salida esperada (los números serán diferentes):
total.value 1
reading.value 0
writing.value 1
waiting.value 0
/var/log/munin-update.log
(Servicio nginx_status en servername / 127.0.0.1: 4949 no devolvió datos para la etiqueta en espera), podría haber buscado durante años para descubrir que libwww-perl
faltaba. Muchas gracias por esta extensa respuesta.
Posiblemente útil:
cd /etc/munin/plugins
munin-run PLUGINNAME
Además, use la opción de depuración para ejecutar munin.
Verifique el archivo del complemento para ver si hay rutas codificadas y verifique que sean correctas para su sistema:
grep '/' PLUGINNAME
El complemento nginx puede confiar en que Nginx se compila con ciertos módulos o la salida de registro en un formato determinado. ¿Hay alguna página de documentación para los complementos?
Lo clave es la url en munin config.
Necesitará
[nginx*]
env.url http://localhost/nginx_status
Nota
nginx_status
No
nginx-status
Instale libwww-perl y luego ejecute el comando munin-run nginx_status
para ver las estadísticas.
Reinicie el servicio muni-node.
apt install libwww-perl time
usar los nodos munin por sus problemas de registro conUse of uninitialized value $LWP::VERSION
complementos nginx.