O plugin Nginx Munin não mostra dados

9

Gostaria de monitorar as estatísticas do NGinx através do Munin, mas os plugins do Nginx não mostram dados. É possível diagnosticar por que apenas um dos plugins munin nginx parece estar funcionando?

nginx munin

O servidor é executado no CentOS 5.3

Miko
fonte

Respostas:

14

Os plug-ins do nginx contam com o seguinte URL para obter as informações de status:

http://127.0.0.1/nginx_status

Normalmente, o nginx não possui esse URL configurado para mostrar dados de status.

Na documentação dos plug-ins, vejo que o nginx precisa ser configurado para mostrar dados de status em um URL específico.

Você precisa habilitar o status nginx adicionando as seguintes linhas à configuração do site:

 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;
       }
 }

Não se esqueça de reiniciar o servidor após adicionar essa configuração e verifique se o URL do stus retorna os dados de status.

Para a documentação completa de cada plug-in, você pode executar:

munindoc nginx_request

Espero que isto ajude.

Tom Feiner
fonte
1
Nota lateral: A execução do Ubuntu 16.04 habilitando o nginx conforme documentado aqui não foi suficiente no meu caso. Além disso, eu tive que apt install libwww-perl timeusar nós munin por seus problemas de log com os Use of uninitialized value $LWP::VERSIONplugins nginx.
Thomas Urban
Outra observação: como o IPv6 é suportado nos servidores hoje, o URL padrão dos plug-ins do nginx_ * usando http://localhost/pode preferir o IPv6 e, portanto, não corresponderá à configuração do nginx, que permite apenas o host local do IPv4. Ao fixar a URL /etc/munin/plugin-conf.d/munin-nodepara http://127.0.0.1/nginx_statuseventualmente fazer o plug-in funcionar.
Thomas Urban
4

Na minha experiência, esses plug-ins provavelmente não estão funcionando devido à configuração incorreta do nginx. Aqui está uma lista resumida do que fazer neste caso:

1. Verifique a instalação do nginx

O Nginx deve ser compilado com o módulo HttpStubStatusModule . Você pode verificar isso executando o seguinte comando (em sudo ou root):

nginx -V 2>&1 | grep -o with-http_stub_status_module

Se você vir a saída a seguir, é bom seguir em frente.

with-http_stub_status_module

Caso contrário, você precisará recompilar o nginx com o módulo necessário ativado ou instalar a partir de fontes diferentes (no meu caso, o repositório Debian padrão tinha a versão correta).

2. Verifique a configuração do nginx

Estou assumindo que você colocou e ativou a configuração necessária . Para ver se está funcionando, você pode sshacessar seu servidor e executar

wget http://localhost/nginx_status

Se você não encontrar erros aqui, o problema é a configuração do plugin. Se o servidor retornar um erro aqui, você poderá depurar modificando a configuração:

location /nginx_status {
    stub_status on;
    access_log   off;
    error_log    /var/log/nginx/status.error.log;
    allow 127.0.0.1;
    deny all;
}

Depois disso, no arquivo, /var/log/nginx/status.error.logvocê pode ver o motivo exato pelo qual o servidor retornou um erro:

[error] 2203#0: *1442 access forbidden by rule, client: ::1, server: localhost, request: "GET /nginx_status HTTP/1.1", host: "localhost"

No meu caso (como você pode ver no log), o problema era que client: ::1, enquanto a configuração permitia apenas o acesso de127.0.0.1

Para resolver o problema, você pode seguir a sugestão do cepharum ou modificar a configuração do 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;
        }
}

(Observe que eu também substituí listen: 127.0.0.1pela porta 80 (ipv4 + ipv6) porque a primeira também não funcionava)

3. Verifique a configuração e as dependências do sistema

Para verificar se o próprio plug-in está funcionando, execute

munin-run nginx_status

(observe que o plug-in deve estar "ativado" - um link simbólico deve estar presente em /etc/munin/plugins- leia o manual, se não estiver)

Se você receber erros na LWPbiblioteca (por exemplo, LWP::UserAgentou LWP::VERSION), seu sistema está faltando um pacote exigido pelo nginx_statusplugin.

No Debian / Ubuntu, execute

apt install libwww-perl

No CentOS

yum install perl-libwww-perl

Depois disso, teste o plug-in novamente usando munin-run. A saída esperada (os números serão diferentes):

total.value 1
reading.value 0
writing.value 1
waiting.value 0
badew
fonte
Com base nas mensagens de erro em /var/log/munin-update.log(Serviço nginx_status no servername / 127.0.0.1: 4949 não retornou dados para a espera de rótulo), eu poderia ter pesquisado por anos para descobrir que libwww-perlestava faltando. Muito obrigado por esta extensa resposta.
BurninLeo
2

Possivelmente útil:

cd /etc/munin/plugins
munin-run PLUGINNAME

Além disso, use a opção debug para executar o munin.

Verifique o arquivo do plug-in quanto a caminhos codificados e verifique se estão corretos para o seu sistema:

grep '/' PLUGINNAME

O plugin nginx pode contar com a compilação do Nginx com determinados módulos ou com a saída de log em um determinado formato. Existe alguma página de documentação para os plugins?

Aproveite a noite
fonte
2

O principal é o URL na configuração de munin.

Você vai precisar

[nginx*]
env.url http://localhost/nginx_status

Nota

nginx_status

Não

nginx-status
Tien Do Xuan
fonte
0

Instale libwww-perl e execute o comando munin-run nginx_statuspara ver as estatísticas.
Reinicie o serviço muni-node.

Izunna Calvin DIke
fonte