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.htaccess
em/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.