Informações estendidas estranhas na interface do usuário do Nagios Web

4

Abaixo estão as capturas de tela quando clico em qualquer informação estendida do serviço / host:

A informação estranha no topo:

Oconteúdodalinhacomeçacom__gmon_start_libc.so...:

__gmon_start__libc.so.6fflushstrcpy__rawmemchrgmtime_rexitreaddirfopenstrrchr__strdupclosedirstrncpyputsputcharreallocstdinstrpbrklocaltime_rgmtimestrtokmmapfgetscallocstrlenmemsetstrstr__errno_locationstdoutmemcpyfcloserand__strtol_internalmallocstrcatstrcasecmpasprintfopendirgetenvsscanfsystemmunmapstrncasecmp__fxstatstrncatfreadlocaltimestrchrmktimeqsort__strtod_internal__ctype_toupper_loc__ctype_tolower_loc__xstatstrcmpstrerror__libc_start_mainsnprintf__strtoul_internalfreeGLIBC_2.3GLIBC_2.2.5

eosmenuscompoucaformataçãonaparteinferior:

Clique em qualquer comando de serviço, ele responde com um erro "400 Bad request" .

A configuração no Apache:

<VirtualHost *:80>
    ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
    ServerName      xx
    ErrorLog    logs/nagios.error_log
    <Directory "/usr/local/nagios/sbin">
       Options ExecCGI
       AllowOverride None
       Order allow,deny
       Allow from all
    </Directory>

    Alias /nagios "/usr/local/nagios/share"

    <Directory "/usr/local/nagios/share">
       Options None
       AllowOverride None
       Order allow,deny
       Allow from all
    </Directory>
</VirtualHost>

Não há nada no log de erros do Apache relacionado a isso.

Atualizei para a versão mais recente 3.3.1:

nagios -v

Nagios Core 3.3.1
Copyright (c) 2009-2011 Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 07-25-2011
License: GPL

mas permanece.

A permisison de extinfo.cgi :

-rwxrwxr-x 1 nagios nagios 285528 Sep 15 17:52 extinfo.cgi

O que devo fazer primeiro para depurar este caso?

ATUALIZAÇÃO

Adicionei a diretiva ScriptLog ao host virtual nagios:

ScriptLog logs/cgi_log

Este arquivo é criado e chmod manualmente:

-rw-r--r-- 1 apache apache 0 Sep 20 11:46 /var/log/httpd/cgi_log

Vá para o navegador para replicar esse erro, mas o log está vazio. Alguém tem outra ideia?

UPDATE 2

Aqui é a saída ao executar extinfo.cgi da linha de comando como apache user:

# REQUEST_METHOD=GET QUERY_STRING="?type=2&host=149&service=Disk_Free" REMOTE_USER="quanta" ./extinfo.cgi

UPDATE 3

You mentioned other CGIs that are working, are they also called .cgi?

Claro. Todos os demais scripts .cgi em /usr/local/nagios/sbin/ funcionam bem. Por exemplo, status.cgi :

Thewayyou'veconfiguredtheScriptLogshouldbeprintinginfo.

Masissonãoaconteceu.Estearquivodelogestáembranco.

-rw-r--r--1apacheapache0Sep2011:46/var/log/httpd/cgi_log

ItlookslikeyouhaveAllowOverrideturnedoffforthisdirectory,butperhapstheapacheconfigurationallowsitforotherdirectorieshigherup?Inthatcasemakesureyouhaven'tdisabledExecCGIorhaveany.htaccessfilesinanydirectoryabovethenginxsbin.

Nãoháarquivo.htaccessem/usr/local/nagios.Eutambémcompareiestaconfiguraçãocomoutroarquivoqueestáfuncionando,nãohádiferençasignificativa:

ScriptAlias/nagios/cgi-bin"/usr/lib64/nagios/cgi"

<Directory "/usr/lib64/nagios/cgi">
   Options ExecCGI
   AllowOverride None
   Order allow,deny
   Allow from all
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /etc/nagios/htpasswd.users
   Require valid-user
</Directory>

Alias /nagios "/usr/share/nagios"

<Directory "/usr/share/nagios">
   Options None
   AllowOverride None
   Order allow,deny
   Allow from all
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /etc/nagios/htpasswd.users
   Require valid-user
</Directory>

If that doesn't work I'd increase the apache log level:

Eu fiz isso, mas não há nada relacionado ao cgi no log de erros:

proxy_util.c(1873): proxy: worker proxy:reverse already initialized
proxy_util.c(1967): proxy: initialized single connection worker 0 in child 3586 for (*)
proxy_util.c(1854): proxy: grabbed scoreboard slot 0 in child 3587 for worker proxy:revers

proxy_util.c(1873): proxy: worker proxy:reverse already initialized
proxy_util.c(1967): proxy: initialized single connection worker 0 in child 3587 for (*)

If none of that points out the problem I'd probably strace apache after setting it to only run a single child and seeing the output of a working CGI vs a non-working CGI to see what the issue is.

Bom ponto. Eu coloquei aqui os arquivos strace.

Rastrear apenas arquivos abertos:

strace -e trace=open -o /tmp/*.strace /usr/sbin/httpd -X
  • extinfo.cgi (não funcionou): link
  • status.cgi (obras): link

Rastreamento completo:

strace -o /tmp/*.strace /usr/sbin/httpd -X

Dê uma olhada se puder ajudar.

    
por quanta 19.09.2011 / 13:24

3 respostas

4

Se você renomear extinfo.cgi , ele será executado com outro nome? Se o script for executado após a renomeação, provavelmente algumas partes da sua configuração do Apache tratam o nome extinfo.cgi de alguma forma não intencional. Por exemplo, em /etc/httpd/conf.d/satisfy.conf você tem:

<LocationMatch "/info(1|2).php">

Esta seção será aplicada a todas as solicitações que contiverem uma parte correspondente em qualquer lugar na URL (porque o padrão regexp não está ancorado). Por exemplo, aplica-se a /info1.php , /some/dir/info2.php , /dir/info1_php_anything/and/more (observe que um ponto na expressão regular corresponde a qualquer caractere, você precisa escrever \. para corresponder a um ponto literal). Além disso, as seções Location e LocationMatch são sempre aplicadas na última etapa e substituem todo o restante ( .htaccess , Directory , Files ) e as seções fora de uma definição VirtualHost são aplicadas a todos os hosts virtuais.

Se os seus arquivos de configuração contiverem outros padrões LocationMatch desleixados, talvez alguns deles correspondam a /nagios/cgi-bin/extinfo.cgi e interrompam o processamento de CGI apenas para esse nome de script específico.

    
por 23.09.2011 / 14:44
0

A diretiva ScriptAlias é fornecida pelo mod_alias , mas os arquivos nos diretórios marcados com esta diretiva são processados pelo mod_cgi .

Verifique se o seu mod_cgi está carregado corretamente.

    
por 19.09.2011 / 14:40
0

Estou bastante confiante de que este é um problema de configuração, provavelmente relacionado ao AddHandler. A saída que você forneceu como @Vladimir Blaskov também apontou indica que o apache não acha que isso é um cgi. Você mencionou outros CGIs que estão funcionando, eles também são chamados de .cgi? Ou eles estão apenas no diretório que permite ExecCGI sem sufixo? Também da documentação:

link

link

A maneira como você configurou o ScriptLog deve estar imprimindo informações. Se eu estivesse na sua situação, verificaria algumas coisas:

Verifique se você tem um AddHandler válido:

link

para .cgi, ou teste que outros .cgi estão trabalhando no mesmo diretório que o extinfo.cgi.

Parece que você tem o AllowOverride desativado para este diretório, mas talvez a configuração do apache permita outros diretórios mais altos? Nesse caso, certifique-se de não ter desativado o ExecCGI ou de ter qualquer arquivo .htaccess em qualquer diretório acima do nginx sbin.

Se isso não funcionar, aumentaria o nível de log do apache:

link

LogLevel debug

veja se isso imprime algo relacionado a por que esse arquivo ou diretório não está sendo tratado como um CGI.

Se nada disso apontar o problema, eu provavelmente tentaria controlar o apache depois de configurá-lo para executar apenas um único filho e ver a saída de um CGI funcional versus um CGI não funcional para ver qual é o problema. Esse tipo de teste exporia se talvez houvesse um problema de configuração com o logging, de modo que o apache não seja capaz de escrever mensagens úteis para o log CGI nos dizendo por que ele se recusa a jogar bola. Espero que você não vá até esta parte antes de consertá-la, se o fizer, ficarei realmente curioso com o que o diagnóstico mostrou.

    
por 23.09.2011 / 03:09