Reading Time: 4 minutes

Para qualquer administrador de sistemas, é fulcral ter controlo sobre a sua infraestrutura. Cada vez mais, isso é uma tarefa complicada pois cada vez há mais dispositivos que devem ser monitorizados. Com base neste problema nasceram as plataformas de monitorização, plataformas que nos alertam para os mais variados tipos de problemas de forma centralizada.

Hoje vamos falar um pouco sobre aquela que provavelmente é a uma das ferramentas OpenSource mais usadas neste contexto, o Nagios.

O Nagios permite a monitorização dos mais variados tipos de equipamentos (impressoras, routers, NAS, servidores, computadores, etc.) com uma comunidade extremamente ativa sempre a disponibilizar novos plugins e novas ferramentas.

 

Instalação Nagios no CentOS 7

Para começar devemos instalar o repositório EPEL e fazer update à nossa máquina:

yum install epel-release
yum update

 

Em seguida podemos então instalar o nagios. Aqui temos duas opções, usar a versão que está nos repositórios ou instalar manualmente.

Confesso que sou maior adepto de usar o que está nos repositórios (a não ser que a versão que esteja seja muito desactualizada ou não traga alguma função que considere útil). O motivo disso é que os pacotes que são distribuídos nos repositórios são testados e a probabilidade de haver problemas de incompatibilidade se tiverem todo o software vindo dos repositórios é muito menor.

Atualmente, 14 de outubro de 2018, a versão disponível nos repositórios é a 3.4.3 e a versão mais atual a 4.4.2.

Vendo o changelog das versões, não há nenhum major update que pareça valer o risco de incompatibilidades no sistema.

 

Instalação

yum install nagios nrpe nagios-plugins-*

Seguindo este método de instalação, o Nagios vai ficar contido em duas pastas:

  • /etc/nagios/ -> pasta com os ficheiros de configuração
  • /usr/lib64/nagios/ -> pasta com os executáveis e os plugins

 

Configuração

Existem inúmeras configurações possíveis, também dependendo dos requisitos de cada um. Gostava de destacar 3 configurações:

Indicar ao Nagios que os “clientes” vão estar separados por ficheiros, editando o ficheiro /etc/nagios/nagios.cfg.

nano /etc/nagios/nagios.cfg
    #Descomentar a seguinte linha
    cfg_dir=/etc/nagios/servers

mkdir /etc/nagios/servers

 

Assim o Nagios vai procurar todos os ficheiros na pasta /etc/nagios/servers com a terminação “.cfg” e encarar cada um deles como um cliente. Esta configuração facilita a organização.

Devemos também editar o email de contacto de forma que o Nagios nos possa notificar quando há problemas.

nano /etc/nagios/objects/contacts.cfg
    #editar o campo abaixo
    email [email protected] ;

Por fim devemos adicionar um comando para o Nagios poder executar mais verificações nos nossos clientes através do plugin NRPE (Nagios Remote Plugin Executor). Para tal:

nano /etc/nagios/objects/commands.cfg
    #ADICIONAR O SEGUINTE BLOCO
    define command{
        command_name check_nrpe
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 60 -c $ARG1$
    }

Devemos ainda redefinir a password da plataforma web:

htpasswd -c /etc/nagios/passwd nagiosadmin

Configurar a firewall:

firewall-cmd --add-port=5666/tcp --permanent
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload

Configurar os serviços para arrancar no boot:

systemctl enable httpd
systemctl enable nagios

E neste momento já podemos iniciar os serviços:

systemctl start httpd
systemctl start nagios

Abrindo um browser e dirigindo-nos ao IP “http://ip.da.maquina/nagios” ser-nos-á pedido o utilizador “nagiosadmin” e a password introduzida anteriormente.

 

Após introduzirmos as credenciais veremos a página do Nagios.

Podemos em seguida escolher várias visões no menu do lado esquerdo. Por exemplo, carregando em “services” obtemos a seguinte vista.

 

 

Configuração do Cliente

Agora que temos o Nagios a funcionar, vamos configurar o primeiro cliente. A máquina de base é novamente um CentOS7.

Começando novamente pelo repositório EPEL.

yum install epel-release

Seguindo para a instalação do NRPE.

yum install nrpe nagios-plugins-all

Devemos em seguida configurar o NRPE.

nano /etc/nagios/nrpe.cfg
    #EDITAR A SEGUINTE LINHA PARA CONTER O IP DO NAGIOS
    #NESTE CASO DE TESTE O IP DO NAGIOS 192.168.2.163
    allowed_hosts=127.0.0.1,::1,192.168.2.163

    #estas modificações já são pessoais e deixo ao critério de cada um a definição dos alarmes
    command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -e -l
    command[check_load]=/usr/lib64/nagios/plugins/check_load -r -w .80,.70,.60 -c .90,.85,.60
    command[check_total_procs]=/usr/lib64/nagios/plugins/check_procs -w 1000 -c 2000

Em seguida, deve ser configurada a firewall:

firewall-cmd --add-port=5666/tcp --permanent
firewall-cmd --reload

Configurar o NRPE para começar no boot:

systemctl enable nrpe

E iniciar o serviço:

systemctl start nrpe

Agora que a máquina cliente está pronta, é necessário ir novamente à máquina do Nagios e dizer-lhe onde procurar.

Para tal na máquina do Nagios, deve ser criado o ficheiro de configuração do cliente, vamos chamar a esta máquina “cliente1”.

nano /etc/nagios/servers/cliente1.cfg

Em baixo um exemplo simples de configuração:

define host {
        use                              linux-server
        host_name                       cliente1
        alias                           cliente1
        address                         192.168.2.162
        max_check_attempts              5
        check_period                    24x7
        notification_interval           30
        notification_period             24x7
}
define service {
        use                             generic-service
        host_name                       cliente1
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
}
define service {
        use                             generic-service
        host_name                       cliente1
        service_description             SSH
        check_command                   check_ssh
        notifications_enabled           0
}
define service {
        use                             generic-service
        host_name                       cliente1
        service_description             Disk
        check_command                   check_nrpe!check_disk
}
define service {
        use                             generic-service
        host_name                       cliente1
        service_description             Load
        check_command                   check_nrpe!check_load
        notifications_enabled           0
}
define service {
        use                             generic-service
        host_name                       cliente1
        service_description             Procs
        check_command                   check_nrpe!check_total_procs
        notifications_enabled           0
}

Por fim, precisamos de reiniciar o nagios:

systemctl restart nagios

Agora se nos dirigirmos novamente à página do Nagios iremos encontrar o nosso novo cliente.

E no menu “services” veremos já os serviços deste cliente.

 

Serviços Adicionais

Como já indicado em cima, existem uma infinidade de plugins para Nagios (e podemos sempre criar os nossos), e neste passo vamos mostrar como configurar um dos que eu considero mais fundamentais nos tempos que correm.

Vamos configurar o Nagios para nos alertar quando temos updates de segurança pendentes.

Para tal começamos pela máquina cliente.

Este plugin é barrado remotamente pelo SELinux, de forma a ele funcionar temos de indicar ao SELinux que os processos despoletados pelo NRPE são de confiança com o seguinte comando:

semanage permissive -a nrpe_t

Em seguida, deve ser instalado o plugin:

cd /usr/lib64/nagios/plugins
Wget https://raw.githubusercontent.com/HariSekhon/nagios-plugins/master/check_yum.py
chmod 755 check_yum.py

Depois configuramos o NRPE para incluir o novo serviço.

nano /etc/nagios/nrpe.cfg
    #ADICIONAMOS A SEGUINTE LINHA
    command[check_yum]=/usr/lib64/nagios/plugins/check_yum.py

E reiniciamos o serviço:

systemctl restart nrpe

Agora falta na máquina Nagios indicarmos o novo serviço, para tal na máquina Nagios, editamos o ficheiro de configuração do nosso cliente1 criado anteriormente:

nano /etc/nagios/servers/cliente1.cfg
    #adicionamos o seguinte bloco
    define service {
        use generic-service
        host_name cliente1
        service_description YUM
        check_command check_nrpe!check_yum
    }

E por fim reiniciamos o serviço

systemctl restart nagios

Agora se nos dirigirmos à página web veremos a indicação do novo serviço.

 

Esperemos que este artigo possa ser útil. Estamos a preparar mais alguns artigos sobre como dar ainda mais utilidade ao Nagios para as próximas semanas. Deixem os vossos comentários, sugestões e dúvidas.

 

I am a SysAdmin and I love it. The stress, finding the best solution in a limited time window, makes me feel acomplished.

In a more recent past, I have been also taking a big interest in Computer Security.