Fonte: http://wiki.sj.cefetsc.edu.br/wiki/index.php/GER-2010-1
Instalação
- Instalar alguns softwares necessários pelo Nagios:
sudo apt-get install -y gcc libpng12-dev libjpeg62-dev wget http://www.sj.ifsc.edu.br/~msobral/GER/nagios/gd-2.0.35.tar.bz2 tar xjf gd-2.0.35.tar.bz2 cd gd-2.0.35 ./configure make make install
- Fazer o seguinte download:
wget http://www.sj.ifsc.edu.br/~msobral/GER/nagios/nagios-3.2.1.tar.gz wget http://www.sj.ifsc.edu.br/~msobral/GER/nagios/nagios-plugins-master-1.4.14-119-gcf2bc.tar.gz
- Descompacte nagios-3.2.1.tar.gz:
tar xzf nagios-3.2.1.tar.gz
- Compile e instale o Nagios:
cd nagios-3.2.1 groupadd nagios useradd -g nagios -c Nagios -d /var/lib/nagios -m nagios ./configure --with-httpd-conf=/etc/apache2/conf.d --with-temp-dir=/var/lib/nagios --with-nagios-user=nagios --with-nagios-group=nagios make all make install make install-init make install-commandmode make install-config make install-webconf
- Agora instale o nagios-plugins:
cd .. tar xzf nagios-plugins-master-1.4.14-119-gcf2bc.tar.gz cd nagios-plugins-1.4.14-119-gcf2bc ./configure --with-nagios-user=nagios --with-nagios-group=nagios make make install
- O Nagios foi instalado dentro de /usr/local/nagios. Dentro de /usr/local/nagios/etc há vários arquivos de configuração, iniciando com nagios.cfg. Esse arquivo contém a configuração global, e a informação de que outros arquivos devem ser incluídos. As configurações específicas ficam em arquivos dentro de /usr/local/nagios/etc/objects. Cada elemento monitorado é definido por um objeto, havendo basicamente hosts (equipamentos) e services (serviços que residem nos equipamentos). Por exemplo, o arquivo localhost.cfg ali existente inicia assim:
# Define a host for the local machine define host{ use linux-server ; Name of host template to use ; This host definition will inherit all variables that are defined ; in (or inherited by) the linux-server host template definition. host_name localhost alias localhost address 127.0.0.1 } # Define an optional hostgroup for Linux machines define hostgroup{ hostgroup_name linux-servers ; The name of the hostgroup alias Linux Servers ; Long name of the group members localhost ; Comma separated list of hosts that belong to this group } # Define a service to "ping" the local machine define service{ use local-service ; Name of service template to use host_name localhost service_description PING check_command check_ping!100.0,20%!500.0,60% } # Define a service to check the disk space of the root partition # on the local machine. Warning if < 20% free, critical if # < 10% free space on partition. define service{ use local-service ; Name of service template to use host_name localhost service_description Root Partition check_command check_local_disk!20%!10%!/ }
- Inicie o nagios:
service nagios start
- Crie um usuário para acesso ao Nagios (usuário somente para autenticação básica no Apache):
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
- Inclua no Apache a configuração da interface web do Nagios. Adicione esta linha a /etc/apache2/sites-enabled/000-default:
Include conf.d/nagios.conf
- Reinicie o Apache:
service apache2 restart
- Acesse a interface web do Nagios pela URL http://192.168.2.X/nagios. Após autenticar o usuário nagioasdmin deve aparecer a seguinte tela:
Exemplos de configurações
A configuração do Nagios fica no diretório /usr/local/nagios/etc. Todos os arquivos mencionados abaixo se referem a esse diretório, salvo se for indicado o contrário. O arquivo de configuração principal se chama nagios.cfg, que contém opções globais e inclusões de outros arquivos com configurações específicas. Em particular, arquivos que tratam de objetos monitorados e informacões relacionadas (hosts, serviços, comandos e templates). ficam dentro do subdiretório objects.Definições de hosts
Para configurar o Nagios, devem-se primeiro criar definições de hosts (equipamentos monitorados). Esas definições ficam em algum arquivo dentro do subdiretório objects, o qual deve estar incluído em nagios.cfg (veja o exemplo contido em localhost.cfg). Cada host definido é automaticamente monitorado com PING, de forma a verificar se está no ar. Um host é declarado como a seguir:define host{ use linux-server ; Nome do template de host a ser usado ; Este host irá herdar toas a variáveis que estão definidas ; no template linux-server (ou que foram herdadas por ele). host_name gateway ; nome do host na rede alias Gateway do Lab. ; Descrição do host address 192.168.2.1 parents localhost ; qual o próximo host em direção ao Nagios }O uso de templates simplifica a definição de hosts, pois evita a repetição de muitas opções comuns (veja como seria a definição completa de um host). Os templates estão no arquivo templates.cfg.
A opção parents tem grande importância para possibilitar que o Nagios faça a distinção entre hosts ou serviços falhos ou inalcançáveis. O primeiro caso trata de serviços cujos testes programados falharam, e o segundo caso são aqueles que não podem ser testados, porque dependem de um host intermediário (um gateway) que falhou. Assim pode-se evitar a emissão de alertas para todos os serviços, concentrando-os na causa raiz do problema.
Definições de serviços
Em cada host devem ser criadas definições de serviços a serem monitorados. Cada serviço possui um comando de verificação específico, para que o teste seja mais fidedigno. Duas definições de serviços são mostradas abaixo (para IMAP e DNS):define service{ use local-service ; Nome do template de serviço a ser usado host_name localhost ; Host onde reside o serviço service_description IMAP check_command check_imap ; Comando para verificar o serviço notifications_enabled 0 ; Notificações desabilitadas } define service{ use local-service host_name localhost service_description DNS check_command check_dns notifications_enabled 0 }Assim como no caso de hosts, usam-se templates para evitar a repetição de opções de uso comum (ver definição completa de um serviço).
Definições de comandos
Os comandos de verificação de serviço são programas especializados, e que são fornecidos pelo pacote nagios-plugins (que foi instalado junto com o Nagios). A lista de plugins segue abaixo:Plugin | Descrição |
---|---|
check_apt | This plugin checks for software updates on systems that use package management systems based on the apt-get(8) command found in Debian GNU/Linux |
check_breeze | This plugin reports the signal strength of a Breezecom wireless equipment |
check_by_ssh | Esse pug-in usa SSH para executar comandos no servidor remoto |
check_clamd | This plugin tests CLAMD connections with the specified host (or unix socket). |
check_cluster | Plugin servidor/serviço de cluster para nagios 2 |
check_dhcp | Esse plug-in testa a disponibilidade dos servidores DHCP na rede. |
check_dig | Este plug-in testa o serviço de DNS no computador especificado usando dig |
check_disk | Este plug-in verifica a quantidade de espaço utilizado no sistema de arquivos montado e gera um alerta caso o espaço livre seja menos que um dos valores limites |
check_disk_smb | Perl Check SMB Disk plugin for Nagios |
check_dns | Esse complemento utiliza o programa nslookup para obter o endereço IP do host/domínio consultado. Um servidor DNS opcional pode ser especificado. Se um servidor DNS não é especificado, o(s) servidor(es) padrão(es) no arquivo /ect/resolv.conf serão utilizados. |
check_dummy | Este plugin irá simplesmente retornar ao estado correspondente para o valor numérico do <estado> do argumento com texto opcional |
check_file_age | testa o tamanho de um arquivo, ou há quanto tempo ele existe (sua idade). |
check_flexlm | Check available flexlm license managers |
check_ftp | This plugin tests FTP connections with the specified host (or unix socket). |
check_hpjd | Esse plug-in testa o ESTADO de uma impressora HP com um cartão JetDirect. Net-snmp deve estar instalado no computador com o plug-in. |
check_http | Esse plug-in testa o serviço HTTP no servidor especificado. Pode testar servidores normais (http) e seguros (https), seguir redirecionamentos, pesquisar por strings e expressões regulares, verifica tempo de conexões, e reporta sobre tempo de expiração de certificados. |
check_icmp | Testa um host com PING. |
check_ide_smart | This plugin checks a local hard drive with the (Linux specific) SMART interface. |
check_ifoperstatus | Checks the operational status of a particular network interface on the target host. |
check_ifstatus | Checks the operational status of a particular network interface on the target host. |
check_imap | This plugin tests IMAP connections with the specified host (or unix socket). |
check_ircd | Perl Check IRCD plugin for Nagios |
check_load | Este plug-in testa a média de carga do sistema atual. |
check_log | Log file pattern detector plugin for Nagios. |
check_mailq | Checks the number of messages in the mail queue (supports multiple sendmail queues, qmail). |
check_mrtg | Este plug-in irá verificar tanto o valor médio ou máximo de um das duas variáveis gravadas em um arquivo de log MRTG. |
check_mrtgtraf | Este plug-in irá verificar a entrada/saída das taxas de transferência de um roteador, switch, etc registrado em um log do MRTG. Se a entrada do novo registro é mais velha que <expire_minutes>, um estado AVISO é retornado. Se tanto as taxas de entrada ou de saída excederem o limite <icl> ou <ocl> (em Bytes/seg), resulta em um estado CRÍTICO. Se qualquer uma das taxas de ultrapassar o limite <iwl> ou <owl> (em Bytes/seg), resulta em um estado AVISO. |
check_nagios | This plugin checks the status of the Nagios process on the local machine The plugin will check to make sure the Nagios status log is no older than the number of minutes specified by the expires option. It also checks the process table for a process matching the command argument. |
check_nntp | This plugin tests NNTP connections with the specified host (or unix socket). |
check_nt | This plugin collects data from the NSClient service running on a Windows NT/2000/XP/2003 server. |
check_ntp | This plugin checks the selected ntp server |
check_ntp_peer | This plugin checks the selected ntp server |
check_ntp_time | This plugin checks the clock offset with the ntp server |
check_nwstat | This plugin attempts to contact the MRTGEXT NLM running on a Novell server to gather the requested system information. |
check_oracle | Check Oracle Database status. |
check_overcr | This plugin attempts to contact the Over-CR collector daemon running on the remote UNIX server in order to gather the requested system information. |
check_ping | Use ping to check connection statistics for a remote host. |
check_pop | This plugin tests POP connections with the specified host (or unix socket). |
check_procs | Checks all processes and generates WARNING or CRITICAL states if the specified metric is outside the required threshold ranges. The metric defaults to number of processes. Search filters can be applied to limit the processes to check. |
check_real | This plugin tests the REAL service on the specified host. |
check_rpc | Check if a rpc service is registered and running using rpcinfo -H host -C rpc_command |
check_sensors | This plugin checks hardware status using the lm_sensors package. |
check_smtp | This plugin will attempt to open an SMTP connection with the host. |
check_snmp | Check status of remote machines and obtain system information via SNMP |
check_ssh | Try to connect to an SSH server at specified server and port |
check_swap | Check swap space on local machine. |
check_tcp | This plugin tests TCP connections with the specified host (or unix socket). |
check_time | This plugin will check the time on the specified host. |
check_udp | This plugin tests UDP connections with the specified host (or unix socket). |
check_ups | This plugin tests the UPS service on the specified host. Network UPS Tools from www.networkupstools.org must be running for this plugin to work. |
check_users | This plugin checks the number of users currently logged in on the local system and generates an error if the number exceeds the thresholds specified. |
check_wave | Checks the strength of received signal in a wireless interface. |
Cada plugin possui seus argumentos de linha de comando, que são usados para passar parâmetros de execução. A explicação detalhada pode ser obtida executando-se o programa do plugin e passando a opção -h:
msobral@ger:~$ cd /usr/local/nagios/libexec msobral@ger:/usr/local/nagios/libexec$ ./check_dns -h check_dns v1.4.14 (nagios-plugins 1.4.14) Copyright (c) 1999 Ethan Galstad <nagios@nagios.org> Copyright (c) 2000-2008 Nagios Plugin Development Team <nagiosplug-devel@lists.sourceforge.net> Esse complemento utiliza o programa nslookup para obter o endereço IP do host/domínio consultado. Um servidor DNS opcional pode ser especificado. Se um servidor DNS não é especificado, o(s) servidor(es) padrão(es) no arquivo /ect/resolv.conf serão utilizados. Uso:check_dns -H host [-s server] [-a expected-address] [-A] [-t timeout] [-w warn] [-c crit] Options: -h, --help Print detailed help screen -V, --version Print version information Project-Id-Version: nagios-plugins Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS> POT-Creation-Date: 2009-06-17 13:03+0100 PO-Revision-Date: 2009-10-21 20:41+0000 Last-Translator: André Gondim <andregondim@ubuntu.com> Language-Team: Brazilian Portuguese <pt_BR@li.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Launchpad-Export-Date: 2009-10-22 21:23+0000 X-Generator: Launchpad (build Unknown) -H, --hostname=HOST O nome ou endereço que você deseja consultar -s, --server=HOST Servidor DNS opcional que você que utilizar para fazer consultas -a, --expected-address=IP-ADDRESS|HOST ENDEREÇO-IP opcional que você espera o servidor DNS retornar. SERVIDOR deve acabar com um ponto (.). Essa opção pode ser repetida várias vezes (Retorna OK se qualquer corresponde ao valor). Se vários endereços são retornados de uma vez, você tem que combinar a cadeia completa de endereços separados por vírgulas (ordenados alfabeticamente) -A, --expect-authority Opcionalmente a espera pelo servidor DNS deve ser autorizada para a pesquisa -w, --warning=seconds Retorna um aviso se o tempo decorrido exceder o valor. Padrão off -c, --critical=seconds Retorno crítico se o tempo decorrido exceder o valor. Padrão off -t, --timeout=INTEGER Seconds before connection times out (default: 10) Send email to nagios-users@lists.sourceforge.net if you have questions regarding use of this software. To submit patches or suggest improvements, send email to nagiosplug-devel@lists.sourceforge.net msobral@ger:/usr/local/nagios/libexec$Nem todos os plugins acima são adicionados automaticamente à configuração do Nagios na instalação. O arquivo commands.cfg contém os comandos preconfigurados. Assim, caso seja necessário adicionar um plugin que ainda não esteja ali (ex: check_dns), deve-se criar uma definição de comando:
define command{ command_name check_dns command_line $USER1$/check_dns -H www.google.com.br -s $HOSTADDRESS$ }O importante acima é a definição de como o plugin deve ser executado, incluindo os parâmetros que devem ser passados. Alguns parâmetros são predefinidos pelo Nagios, estando disponíveis em macros:
- $HOSTADDRESS$: o endereço do host onde reside o serviço a ser testado.
- $ARG1$: o primeiro argumento incluído na definição de serviço.
- $ARG2$: o segundo argumento incluído na definição de serviço.
- $ARGn$: o n-ésimo argumento incluído na definição de serviço.
define service{ host_name linuxbox service_description PING check_command check_ping!200.0,80%!400.0,40% }O comando check_ping deve ser chamado com dois argumentos (separados por !): 200.0,80% e 200.0,80%. A definição do comando check_ping, por sua vez, os utiliza da seguinte forma:
define command{ command_name check_ping command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ }
Ativando as novas configurações
Sempre que modificar a configuração o Nagios deve ser reiniciado:sudo service nagios restart
Caso ocorra um erro, e o nagios não inicie, significa que existe um ou mais erros nos arquivos de configuração. Para encontrá-los execute o nagios com a opção -v, que faz uma verificação desses arquivos: $ cd /usr/local/nagios $ bin/nagios -v etc/nagios.cfg Total Warnings: 3 Total Errors: 0 Things look okay - No serious problems were detected during the pre-flight check
Atividades
- Instale o Nagios na mesma máquina virtual onde está o Cacti.
- Crie uma configuração inicial para monitorar os serviços em seu servidor (SMTP, HTTP, IMAP, DNS) e o gateway da rede (192.168.2.1), e o servidor web do IFSC onde fica a Wiki (wiki.sj.ifsc.edu.br).
- Crie uma dependência entre o gateway e o servidor Wiki: para chegar à wiki é necessário que o gateway esteja ativo.
- Veja o que o Nagios reporta quando o gateway fica fora do ar (o professor irá simular isso).
- Estenda a configuração do Nagios para monitorar a conectividade da rede do IFSC. Quer dizer, ele deve monitorar a conectividade com a Internet e quando ela ficar fora do ar deve indicar se o problema está no IFSC ou se é externo.
- Configure o envio de alertas para a queda do serviço de email ou web. Esses alertas devem ser enviados por email para o administrador da rede (ou por SMS).
- Crie um monitoramento de serviço para monitorar a quantidade de conexões TCP estabelecidas no seu servidor. Dica: esa informação pode ser obtidfa facilmente com SNMP, como visto na aula sobre o Cacti.
- Crie outro monitoramento de serviço para a quantidade de conexões estabelecidas com o servidor web (port TCP 80).
- Integre o Cacti ao Nagios, de forma que se associem os gráficos gerados pelo Cacti aos equipamentos monitorados pelo Nagios.
Nenhum comentário:
Postar um comentário