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-nodepara que http://127.0.0.1/nginx_statusfinalmente 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 sshir 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.logpuede 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: ::1que 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.1con 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 LWPbiblioteca (p. Ej. LWP::UserAgentO LWP::VERSION), a su sistema le falta un paquete requerido por el nginx_statuscomplemento.
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-perlfaltaba. 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_statuspara ver las estadísticas.
Reinicie el servicio muni-node.
apt install libwww-perl timeusar los nodos munin por sus problemas de registro conUse of uninitialized value $LWP::VERSIONcomplementos nginx.