Nagios

De Wiki Projeto Root
Ir para navegação Ir para pesquisar

Sobre

Olá! Visitante, reunimos aqui, informações sobre a ferramenta Nagios, Sistema de Monitoramento de Hosts e Serviços, utilizando protocolos de Redes. Nagios é uma popular aplicação de monitoramento de rede de código aberto distribuída sob a licença GPL. Ele pode monitorar tanto hosts quanto serviços, alertando quando ocorrerem problemas e também quando os problemas são resolvidos. Entre os Protocolos utilizados estão: SMTP, POP3, HTTP, NTP, ICMP, SNMP.

Vídeo

https://youtu.be/PCmU5_zIh-A


Instalação

  • Instalando Dependências:
 apt-get install wget apache2 apache2-utils php5 libapache2-mod-php5 build-essential libgd2-xpm-dev snmp snmpd libnet-snmp-perl libgd-tools xinetd rcconf zip unzip

Criando usuários e Grupos

 useradd -m nagios
 passwd nagios
 groupadd nagcmd
 usermod -a -G nagcmd nagios
 usermod -a -G nagcmd www-data

Download Nagios Core/Nagios Plugin

 cd /opt
 wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.1.tar.gz
 wget http://www.nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz

Descompactando, Compilando e Instalando o Core

 tar xvf nagios-4.4.1.tar.gz
 cd nagios-4.4.1
 ./configure --with-command-group=nagcmd
 make all
 make install
 make install-init
 make install-config
 make install-commandmode
 make install-webconf **** (caso precise)


Configurando Acesso WEB

 nano /etc/apache2/sites-enabled/nagios.conf 
 ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
 
 <Directory "/usr/local/nagios/sbin">
    Options ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
    AuthName "Restricted Area"
    AuthType Basic
    AuthUserFile /usr/local/nagios/etc/htpasswd.users
    Require valid-user
 </Directory>
 
 Alias /nagios "/usr/local/nagios/share"
 
 <Directory "/usr/local/nagios/share">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
    AuthName "Restricted Area"
    AuthType Basic
    AuthUserFile /usr/local/nagios/etc/htpasswd.users
    Require valid-user
 </Directory>


Criando usuário para acesso

 htpasswd -s -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Descompactando, Compilando e Instalando o Plugins

 cd /opt
 tar xvf nagios-plugins-2.2.1.tar.gz && cd nagios-plugins-2.2.1
 ./configure --with-nagios-user=nagios --with-nagios-group=nagios
 make && make install

Nagios na inicialização

 ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
  • Verificar se arquivo de conf está OK
 /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
 service nagios start


Ativar o CGI no apache

 cd /etc/apache2/mods-enabled
 ln -s ../mods-available/cgi.load cgi.load
 nano /etc/apache2/mods-enabled/mime.conf e remover (#) na linha "#AddHandler cgi-script .cgi"
 service apache restart

Cadastrar Grupos

  • Editar /usr/local/nagios/etc/nagios.cfg
 nano /usr/local/nagios/etc/nagios.cfg
  • Adicionar o caminho do .cfg (config) dos serviços para estes hosts.
 # Definitions for monitoring from groups
 cfg_file=/usr/local/nagios/etc/objects/groups.cfg
  • Fazer uma cópia do arquivo /usr/local/nagios/etc/objects/localhost.cfg em /usr/local/nagios/etc/objects/groups.cfg
 cp /usr/local/nagios/etc/objects/localhost.cfg /usr/local/nagios/etc/objects/groups.cfg
  • Remover todas as linhas que não são referentes ao HOST GROUP DEFINITION, deixando como no exemplo:
  • ATENÇÃO: Para criar um novo grupo, apenas faça como no exemplo abaixo e para adicionar um host em um grupo, seja um novo ou já existente, apenas coloque ao lado de members, o nome do host que irá pertencer ao grupo, separando por vírgulas.
  ###############################################################################
  ###############################################################################
  ## HOST GROUP DEFINITION
  ################################################################################
  ###############################################################################
  # Definições para o grupo de máquinas Linux
  define hostgroup{
          hostgroup_name  linux-servers 		     ; Nome do Grupo
          alias           Grupo de Servidores Linux    ; Nome Completo do Grupo
          members         localhost                    ; Membros (hosts) que iram participar do grupo, separados por (, )
          }
   
  # Definições para o grupo de máquinas windows
  define hostgroup{
          hostgroup_name  windows-servers	        ; Nome do Grupo
          alias           Windows Desktops        ; Nome Completo do Grupo
          members         windows_10 		; Membros (hosts) que iram participar do grupo, separados por (, )
          }

Cadastrar Hosts Linux

  • Editar /usr/local/nagios/etc/nagios.cfg
  nano /usr/local/nagios/etc/nagios.cfg
  • Adicionar o caminho do .cfg (config) dos hosts Servidores Linux.
  # Definitions for monitoring the (Linux) host
  cfg_file=/usr/local/nagios/etc/objects/linux.cfg
  • Fazer uma cópia do arquivo /usr/local/nagios/etc/objects/localhost.cfg em /usr/local/nagios/etc/objects/linux.cfg
  cp /usr/local/nagios/etc/objects/localhost.cfg  /usr/local/nagios/etc/objects/linux.cfg 
  • Editar o Arquivo linux.cfg
  nano /usr/local/nagios/etc/objects/linux.cfg
  • Alterar apenas host_name, alias, address para o host linux a ser monitorado.
  • Editar /usr/local/nagios/etc/objects/localhost.cfg
  nano /usr/local/nagios/etc/objects/localhost.cfg
  • Remover as linhas referente aos serviços e grupos, mantendo apenas o que for localhost

Cadastrar Hosts Windows

  • Editar /usr/local/nagios/etc/nagios.cfg
 nano /usr/local/nagios/etc/nagios.cfg
  • Adicionar o caminho do .cfg (config) dos hosts Windows.
  # Definitions for monitoring a Windows desktop
  cfg_file=/usr/local/nagios/etc/objects/windows_server.cfg
  • Fazer uma cópia do arquivo /usr/local/nagios/etc/objects/windows.cfg em /usr/local/nagios/etc/objects/windows_server.cfg:
  cp /usr/local/nagios/etc/objects/windows.cfg  /usr/local/nagios/etc/objects/windows_server.cfg  
  • Modificar conforme o exemplo abaixo:
  ###############################################################################
  ###############################################################################
  #
  # HOST DEFINITIONS
  #
  ###############################################################################
  ###############################################################################
  
  # Definição do host Windows que será monitorado, para cada novo host windows
  # copie e cole os paremetros abaixo e modifique o host_name, alias, address.
  
  define host{
  	   use		windows-server	; Template que será utilizado
  	   host_name	windows_10	; Nome do host a ser monitorado
   	   alias		Windows_10_Finaceiro	; Nome completo do host
   	   address		192.168.200.117	; Endereço IP do host
  	   }
  
  
  ###############################################################################
  ###############################################################################
  #
  # SERVICE DEFINITIONS
  #
  ###############################################################################
  ###############################################################################
  
  #>>> Estes serviços são diferentes do arquivo services.cfg, pois aqui estamos utilizando 
  #>>> o plugin NSClient no host windows, para ser possivel a execução de comandos no host.
  
  #>>> Para atribuir os serviços em cada host cadastrado acima , é necessário incluir em cada
  #>>> Serviço no campo host_name: ex. host_name windows_10, windows_2012, ...
  
  # Create a service for monitoring the version of NSCLient++ that is installed
  # Change the host_name to match the name of the host you defined above
  
 define service{
  	   use			generic-service
  	   host_name		windows_10
  	   service_description	NSClient++ Version
  	   check_command		check_nt!CLIENTVERSION
  	}
  ...

Cadastrar Serviços

  • Editar /usr/local/nagios/etc/nagios.cfg
  nano /usr/local/nagios/etc/nagios.cfg
  • Adicionar o caminho do .cfg (config) dos serviços para estes hosts.
  # Definitions for monitoring the Services
  cfg_file=/usr/local/nagios/etc/objects/services.cfg
  • Fazer uma cópia do arquivo /usr/local/nagios/etc/objects/localhost.cfg em /usr/local/nagios/etc/objects/services.cfg
  cp /usr/local/nagios/etc/objects/localhost.cfg /usr/local/nagios/etc/objects/services.cfg
  • Remover todas as linhas antes de : SERVICE DEFINITIONS, mantendo apenas as informações dos comentários para baixo.
  Em: host_name, adicionar o nome dos hosts que serão monitorados, como no exemplo:
  host_name                       localhost, server-logs

NAGIOS Mandando E-mail

  • Editar o arquivo /usr/local/nagios/etc/objects/contacts.cfg
  nano /usr/local/nagios/etc/objects/contacts.cfg
  • Configurar conforme exemplo para o nagios enviar e-mail:
  define contact{
          contact_name                    nagiosadmin             ; Nome curto do contato
          use                             generic-contact         ; Template que será utilizado generic-contacts
          alias                           Nagios Admin            ; Nome completo do Usuário
          host_notification_period        24x7			; Tempo de notificação de host
          service_notification_period     24x7			; Tempo de notificação de serviço
          host_notification_options       d,u,r			; Opções de notificação de host (d= Down, u= Unknown, r= Recovery)
          service_notification_options    u,c,r			; Opções de notificações de serviço (u= Unknown c= Critical r= Recovery)
          host_notification_commands      notify-host-by-email	; Opção de host para notificar por e-mail
          service_notification_commands   notify-service-by-email ; Opção de serviço para notificar por e-mail
          email                           [email protected] ; <<***** Altere para o seu e-mail
          }


Exemplo de arquivo para Windows Server

  ###############################################################################
  # WINDOWS.CFG - SAMPLE CONFIG FILE FOR MONITORING A WINDOWS MACHINE
  #
  #
  # NOTES: This config file assumes that you are using the sample configuration
  #	 files that get installed with the Nagios quickstart guide.
  #
  ###############################################################################
  
  
  
  
  ###############################################################################
  ###############################################################################
  #
  # HOST DEFINITIONS
  #
  ###############################################################################
  ###############################################################################
  
  # Definição do host Windows que será monitorado, para cada novo host windows
  # copie e cole os paremetros abaixo e modifique o host_name, alias, address.
  
  define host{
  	use		windows-server	; Template que será utilizado
  	host_name	windows_10	; Nome do host a ser monitorado
  	alias		Windows_10_Finaceiro	; Nome completo do host
  	address		192.168.200.117	; Endereço IP do host
  	}
     
  ###############################################################################
  ###############################################################################
  #
  # SERVICE DEFINITIONS
  #
  ###############################################################################
  ###############################################################################
  
  #>>> Estes serviços são diferentes do arquivo services.cfg, pois aqui estamos utilizando 
  #>>> o plugin NSClient no host windows, para ser possivel a execução de comandos no host.
  
  #>>> Para atribuir os serviços em cada host cadastrado acima , é necessário incluir em cada
  #>>> Serviço no campo host_name: ex. host_name windows_10, windows_2012, ...
  
  # Create a service for monitoring the version of NSCLient++ that is installed
  # Change the host_name to match the name of the host you defined above
  
  define service{
  	use			generic-service
  	host_name		windows_10
  	service_description	NSClient++ Version
  	check_command		check_nt!CLIENTVERSION
  	}
  
  # Create a service for monitoring the uptime of the server
  # Change the host_name to match the name of the host you defined above
  
  define service{
  	use			generic-service
  	host_name		windows_10
  	service_description	Uptime
  	check_command		check_nt!UPTIME
  	}
  # Create a service for monitoring CPU load
  # Change the host_name to match the name of the host you defined above
  
  define service{
  	use			generic-service
  	host_name		windows_10
  	service_description	CPU Load
  	check_command		check_nt!CPULOAD!-l 5,80,90
  	}
  # Create a service for monitoring memory usage
  # Change the host_name to match the name of the host you defined above
  
  define service{
  	use			generic-service
  	host_name		windows_10
  	service_description	Memory Usage
  	check_command		check_nt!MEMUSE!-w 80 -c 90
  	}
  # Create a service for monitoring C:\ disk usage
  # Change the host_name to match the name of the host you defined above
  
  define service{
  	use			generic-service
  	host_name		windows_10
  	service_description	C:\ Drive Space
  	check_command		check_nt!USEDDISKSPACE!-l c -w 80 -c 90
  	}
  
  # Create a service for monitoring the W3SVC service
  # Change the host_name to match the name of the host you defined above
  
  define service{
  	use			generic-service
  	host_name		windows_10
  	service_description	W3SVC
  	check_command		check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
  	}
  
  # Create a service for monitoring the Explorer.exe process
  # Change the host_name to match the name of the host you defined above
  
  define service{
  	use			generic-service
  	host_name		windows_10
  	service_description	Explorer
  	check_command		check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
  	}