O
PNP4Nagios permite a utilização dos dados de performance gerados por seus plugins para a geração de gráficos.
ATENÇÃO: Todos os serviços que gerarem dados de performance possuirão gráficos atribuídos a eles com este métodos de instalação (synchronous mode).
Para confirmar se um determinado plugin esta gerando dados de performance, acesse o Nagios via navegador, selecione o serviço desejado e verifique o campo "Performance Data".
Caso exista coleta de performance para o serviço, algo aparecerá na frente deste campo.
Exemplo de saída para o serviço PING (plugin check_ping):
Performance Data: rta=0.039000ms;3000.000000;5000.000000;0.000000 pl=0%;80;100;0
Para mais informações:
http://docs.pnp4nagios.org
Os comandos adicionados no commands.cfg podem ser criados através do NagiosQL. Se da mesma forma preferir adicionar esses comandos via modo texto, os novos itens deveram ser importados ao NagiosQL posteriormente.
Pré-requisito
Seguindo esta documentação somente um requisito estará faltando. O
Kohana, framework do PHP5 utilizado pelo PNP4Nagios, precisa do módulo "mod_rewrite" habilitado no Apache. Para ativá-lo:
# a2enmod rewrite
Reinicie o Apache após ativar o módulo.
Instalação:
# cd /usr/local/src/
# wget http://downloads.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.3.tar.gz?use_mirror=ufpr
# tar -xvzf pnp4nagios-0.6.3.tar.gz
# cd pnp4nagios-0.6.3
# ./configure
ATENÇÃO: Sem especificar um usuário/grupo, o ./configure do PNP4Nagios assume que, por padrão, o usuário/grupo nagios está sendo usado. Caso tenha especificado um diferente deste, execute o ./configure com os parâmetros "--with-nagios-user" e "--with-nagios-group":
# ./configure --with-nagios-user=user --with-nagios-group=user
Executando o ./configure, uma saída será impressa na tela. Ela é muito importante.
*** Configuration summary for pnp4nagios-0.6.3 03-16-2010 ***
General Options:
------------------------- -------------------
Nagios user/group: nagios nagios
Install directory: /usr/local/pnp4nagios
HTML Dir: /usr/local/pnp4nagios/share
Config Dir: /usr/local/pnp4nagios/etc
Location of rrdtool binary: /usr/bin/rrdtool Version 1.4.3
RRDs Perl Modules: FOUND (Version 1.4003)
RRD Files stored in: /usr/local/pnp4nagios/var/perfdata
process_perfdata.pl Logfile: /usr/local/pnp4nagios/var/perfdata.log
Perfdata files (NPCD) stored in: /usr/local/pnp4nagios/var/spool
Web Interface Options:
--------------------------- -------------------
HTML URL: http://localhost/pnp4nagios/
Apache Config File: /etc/apache2/conf.d/pnp4nagios.conf
Certifique-se de que os usuários, caminhos e softwares estão corretos antes de prosseguir.
DICA: É recomendado alterar os caminhos das opções "RRD Files stored in:" e "process_perfdata.pl Logfile:" para o /var/log. Isso pode ser feito através dos parâmetros do ./configure ou através de links simbólicos. Para verificar as opções de configuração antes de compilar utilize "./configure --help".
Confirmando as informações, execute o ./configure novamente utilizando os parâmetros necessários para a instalação e então instale.
# ./configure --with-perfdata-logfile=/var/log/pnp4nagios/ --with-perfdata-spool-dir=/var/spool/pnp4nagios/
# make all
# make install
Após a instalação do programa e arquivos HTML é possível copiar um exemplo de configuração de arquivo do Apache para seu diretório de configuração.
# make install-webconf
# make install-config
Opcionalmente, pode-se instalar o script de inicialização do NPCD. Caso pretenda utilizar este método, leia a documentação do site
http://docs.pnp4nagios.org.
# make install-init
Todos estes métodos podem ser realizados de uma só vez com o comando:
# make fullinstall
ATENÇÃO: Será necessário reiniciar o serviço do Apache para que as configurações tenham efeito.
Configuração
Existem três formas de se configurar a coleta de dados de performance.
Modo Sincrono (Synchronous Mode):
O modo síncrono é a maneira mais simples de se integrar o coletor de dados process_perfdata.pl ao Nagios. Todos os eventos ativarão a execução do process-service-perfdata.
Inicialmente é necessário habilitar o processamento de dados de performance no nagios.cfg. Note que está diretriz já existe no arquivo de configuração e seu padrão é "0".
process_performance_data=1
Processamento de dados de performance deverá estar desabilitado na definição de cada um dos hosts ou serviços, os quais, NÃO serão coletados:
define service {
...
process_perf_data 0
...
}
Desde a versão do Nagios 3 é possível desativar a exportação de variáveis de ambiente como parte de otimizar a performance máxima do sistema. Infelizmente, esta diretriz deve estar ativada para utilizar o modo síncrono. Portanto, ou altera-se o valor padrão (o que significa que a exportação estará ativada) ou defini-se o valor da variável no nagios.cfg:
enable_environment_macros=1
Adicionalmente, o comando para processar dados de performance deve ser especificado no nagios.cfg:
service_perfdata_command=process-service-perfdata
No Nagios 3 pode ser útil habilitar o processamento de dados de performance para hosts também. Devido a alterações na logica de checagem de hosts no Nagios 3, a checagem de hosts é realizada regularmente.
host_perfdata_command=process-host-perfdata
Obviamente, o Nagios deverá ser notificado sobre o comando referenciado. Edite o commands.cfg alterando ou adicionando as definições abaixo:
define command {
command_name process-service-perfdata
command_line /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl
}
define command {
command_name process-host-perfdata
command_line /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
}
NOTA: O script process_perfdata.pl não pode ser iniciado sobre o ePN (embedded Perl Nagios). Mesmo que o script seja explicitamente chamado utilizando o /usr/bin/perl ou qualquer outro local, o qual o binário do perl esteja especificado.
Modo Bulk (Bulk mode):
O modo Bulk é um pouco mais complicado que o modo síncrono, mas reduz significantemente a carga sobre o servidor Nagios porque o coletor process_perfdata.pl não é chamado para cada checagem de host/serviço.
No modo Bulk, o Nagios escreve os dados em um arquivo temporário em um formato definido. Este arquivo é processado pelo process_perfdata.pl em certos intervalos. O Nagios cuidará para que ele seja iniciado e executado periodicamente.
É necessário que processamento de dados de performance esteja habilitado nagios.cfg.
process_performance_data=1
Adicionalmente, novas diretrizes são necessárias.
ATENÇÃO: Estas definições de templates diferem do fornecidos pelo nagios.cfg.
#
# service performance data
#
service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\t TIMET::$TIMET$\t HOSTNAME::$HOSTNAME$\t SERVICEDESC::$SERVICEDESC$\t SERVICEPERFDATA::$SERVICEPERFDATA$\t SERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\t HOSTSTATE::$HOSTSTATE$\t HOSTSTATETYPE::$HOSTSTATETYPE$\t SERVICESTATE::$SERVICESTATE$\t SERVICESTATETYPE::$SERVICESTATETYPE$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=15
service_perfdata_file_processing_command=process-service-perfdata-file
#
# host performance data starting with Nagios 3.0
#
host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\t TIMET::$TIMET$\t HOSTNAME::$HOSTNAME$\t HOSTPERFDATA::$HOSTPERFDATA$\t HOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\t HOSTSTATE::$HOSTSTATE$\t HOSTSTATETYPE::$HOSTSTATETYPE$
host_perfdata_file_mode=a
host_perfdata_file_processing_interval=15
host_perfdata_file_processing_command=process-host-perfdata-file
O significado de cada diretriz:
- service_perfdata_file - caminho para o arquivo temporário que devera conter o dado de performance.
- service_perfdata_file_template - formato do arquivo temporário. Dados serão definidos utilizando macros do Nagios.
- service_perfdata_file_mode - opção "a" especifica que o dado será adicionado (append) ao arquivo.
- service_perfdata_file_processing_interval - o intervalo é de 15 segundos.
- service_perfdata_file_processing_command - o comando que será chamado durante o intervalo.
Os comandos utilizados deverão ser anunciados ao Nagios modificando o commands.cfg:
define command{
command_name process-service-perfdata-file
command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/service-perfdata
}
define command{
command_name process-host-perfdata-file
command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/host-perfdata
}
IMPORTANTE: Como há mais dados a serem processados do que no modo síncrono, o process_perfdata.pl levará mais tempo para coletar os dados, portanto, verifique o valor de TIMEOUT em etc/process_perfdata.cfg e ajuste-o de maneira apropriada.
Modo Bulk com NPCD:
A configuração é idêntica ao do modo Bulk exceto pelo comando utilizado. Edite o commands.cfg:
define command{
command_name process-service-perfdata-file
command_line /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$
}
define command{
command_name process-host-perfdata-file
command_line /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$
}
Usando estes comandos o arquivo service-perfdata será movido para var/spool após o intervalo especificado emservice_perfdata_file_processing_interval ter passado. A macro $TIMET$ do Nagios será adicionada ao nome do arquivo para evitar a sobreescrita de arquivos antigos intencionalmente.
A macro $TIMET$ contém o tempo atual no formato time_t (segundos desde o epoch do Unix).
No diretório /usr/local/pnp4nagios/var/spool/ os arquivos são coletados para serem processados pelo NPCD.
O NPCD monitora o diretório de spool e repassa o nome dos arquivos para o process_perfdata.pl que por sua vez processa os dados completamente separado do Nagios.
Antes de iniciar o NPCD deve-se verificar o caminho do diretório de spool e do process_perfdata.pl no npcd.cfg.
Para iniciar o serviço:
# /usr/local/pnp4nagios/bin/npcd -d -f /usr/local/pnp4nagios/etc/npcd.cfg
ou
# /etc/init.d/npcd
ou
# invoke-rc.d npcd start
A opção -d é para iniciar o npcd em modo daemon.
Checando a instalação
Em um navegador digite:
http://nomeouipdomeuservidor/pnp4nagios
No primeiro acesso, uma pagina com testes serão apresentados. Verifique se todos estão corretos e então remova o arquivo install.php localizado em /usr/local/pnp4nagios/share e reinicie o Apache.
Lembre-se, se os plugins não estiverem gerando dados de performance, os gráficos nem mesmo aparecerão nesta janela.
Pode demorar um pouco para que os dados dos gráficos criados comecem a ser mostrados.
Seguindo esta documentação todo o sistema estará funcionando, caso contrário no diretório de scripts do pnp4nagios existe um script chamado verify_pnp_config.pl que poderá auxiliar na solução de problemas, além da própria documentação provida pelo site.
Integração de interface PNP4Nagios com o Nagios
Pode-se integrar a interface web do PNP4Nagios com o Nagios, desta forma dispensando o acesso a uma URL específica para verificar os gráficos.
Adicione os seguintes templates ao servicetemplates.cfg:
ATENÇÃO: Estes templates podem ser criados pelo NagiosQL.
define host {
name host-pnp
action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=_HOST_
register 0
}
define service {
name srv-pnp
action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
register 0
}
Existem duas formas de se aplicar estes templates:
1. Associar o template a outro template. Essa maneira é mais simples, porém todos os serviços incluindo os que não possuem coleta de performance estarão incluídos. Caso um determinado serviço não possuir coleta, ao clicar no link que leva ao gráfico, um erro será apresentado.
2. Associar o template a cada serviço. Apesar de ser mais trabalhoso, isso garante que somente os serviços que realmente possuírem dados de performance possuam um link que leva ao gráfico.