Tutorial

Como monitorar a integridade do servidor com o Checkmk no Ubuntu 18.04

MonitoringUbuntu 18.04

O autor selecionou a Open Internet/Free Speech Fund para receber uma doação como parte do programa Write for DOnations.

Introdução

Uma prática muito recomendada para um administrador de sistemas é conhecer o estado atual de sua infraestrutura e serviços. O ideal é que você perceba falhas de um disco ou tempo de inatividade de um aplicativo antes que seus usuários o façam. Ferramentas de monitoramento como o Checkmk podem ajudar os administradores a detectarem esses problemas mantendo, desta maneira, os servidores íntegros.

Geralmente, um software de monitoramento pode rastrear o tempo de atividade e os status de serviço do hardware de seus servidores e pode gerar alertas quando algo der errado. Em um cenário bastante simples, um monitoramento de sistema alertaria você se algum serviço caísse. No caso de um cenário mais elaborado, as notificações surgiriam logo após qualquer sinal suspeito aparecer, como um aumento de uso de memória, ou uma quantidade anormal de conexões TCP.

Há muitas soluções de monitoramento disponíveis que oferecem vários graus de complexidade e conjuntos de recursos, tanto gratuitos quanto comerciais. Em vários casos, a instalação, a configuração e o gerenciamento dessas ferramentas são complicados e levam bastante tempo.

No entanto, o Checkmk é uma solução de monitoramento robusta e simples de instalar. Ele é um conjunto de softwares independente que combina o Nagios (um serviço de alerta de código aberto bastante popular) com complementos para coleta, monitoramento e representação gráfica de dados. Ele também vem com uma interface Web do Checkmk, uma ferramenta abrangente que resolve muitas das insuficiências do Nagios. Ele oferece um painel de controle amigável, um sistema de notificações completo e um repositório de agentes de monitoramento de fácil instalação para muitas distribuições do Linux. Se não fosse pela interface Web do Checkmk, teríamos que usar visualizações diferentes para tarefas distintas. Seria impossível configurar todas essas funcionalidades sem recorrer a extensas modificações de arquivos.

Neste guia, vamos configurar o Checkmk em um servidor Ubuntu 18.04 e monitorar dois hosts separados. Monitoraremos o servidor Ubuntu propriamente dito, bem como um servidor CentOS 7, separadamente. Poderíamos usar essa mesma abordagem para adicionar qualquer número de hosts adicionais em nossa configuração de monitoramento.

Pré-requisitos

Passo 1 — Instalando o Checkmk no Ubuntu

Para utilizar nosso site de monitoramento, devemos primeiro instalar o Checkmk no servidor Ubuntu. Isso nos dará todas as ferramentas necessárias. O Checkmk fornece um pacote de arquivos oficial do Ubuntu pronto para o uso que podemos utilizar para instalar o pacote de software.

Primeiramente, atualizaremos a lista de pacotes para termos a versão mais recente das listagens de repositório:

  • sudo apt update

Para vermos os pacotes, acessaremos o site de listagem de pacotes. O Ubuntu 18.04 (entre outros) pode ser selecionado no menu da página.

Agora, baixe o pacote:

  • wget https://checkmk.com/support/1.6.0p8/check-mk-raw-1.6.0p8_0.bionic_amd64.deb

Em seguida, instale o pacote recém-baixado:

  • sudo apt install -y ./check-mk-raw-1.6.0p8_0.bionic_amd64.deb

Esse comando instalará o pacote Checkmk junto com todas as dependências necessárias, incluindo o servidor Web Apache, que é utilizado para fornecer acesso Web à interface de monitoramento.

Após a instalação terminar, podemos acessar o comando omd. Teste-o:

  • sudo omd

Este comando omd gerará o seguinte:

Output
Usage (called as root): omd help Show general help . . . General Options: -V <version> set specific version, useful in combination with update/create omd COMMAND -h, --help show available options of COMMAND

O comando omd consegue gerenciar todas as instâncias do Checkmk em nosso servidor. Ele pode iniciar todos os serviços de monitoramento de uma só vez. Nós o utilizaremos para criar nossa instância Checkmk. No entanto, primeiro precisamos atualizar nossas configurações do firewall para permitir o acesso às portas Web padrão.

Passo 2 — Ajustando as configurações do firewall

Antes de podemos trabalhar com o Checkmk, é necessário permitir o acesso ao servidor Web na configuração do firewall. Supondo que você seguiu os passos de configuração do firewall nos pré-requisitos, você terá um firewall UFW configurado para restringir o acesso ao seu servidor.

Durante a instalação, o Apache registra-se ao UFW para fornecer uma maneira mais fácil de habilitar ou desabilitar o acesso ao Apache através do firewall.

Para permitir o acesso ao Apache, use o comando a seguir:

  • sudo ufw allow Apache

Agora, verifique as alterações:

  • sudo ufw status

Você verá que o Apache está listado entre os serviços permitidos:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)

Isso nos permitirá acessar a interface Web do Checkmk.

No próximo passo, criaremos a primeira instância de monitoramento do Checkmk.

Passo 3 — Criando uma instância de monitoramento do Checkmk

O Checkmk utiliza o conceito de instâncias, ou instalações individuais, para isolar várias cópias do Checkmk em um servidor. Geralmente, apenas uma cópia do Checkmk é o suficiente. É assim que vamos configurar o software neste guia.

Primeiro, precisamos dar um nome à nossa nova instância. Utilizaremos o nome monitoring neste texto. Para criar a instância, digite:

  • sudo omd create monitoring

A ferramenta omd configurará tudo para nós automaticamente. A saída do comando se parecerá com a seguinte:

Output
Adding /opt/omd/sites/monitoring/tmp to /etc/fstab. Creating temporary filesystem /omd/sites/monitoring/tmp...OK Restarting Apache...OK Created new site monitoring with version 1.6.0p8.cre. The site can be started with omd start monitoring. The default web UI is available at http://your_ubuntu_server/monitoring/ The admin user for the web applications is cmkadmin with password: your-default-password (It can be changed with 'htpasswd -m ~/etc/htpasswd cmkadmin' as site user.) Please do a su - monitoring for administration of this site.

Nesta saída, o endereço URL, o nome de usuário padrão e a senha para acessar nossa interface de monitoramento estão destacados. A instância foi criada, mas ela ainda precisa ser iniciada. Para iniciar a instância, digite:

  • sudo omd start monitoring

Agora, todas as ferramentas e serviços necessários iniciarão de uma só vez. Ao final, veremos uma saída confirmando que todos os nossos serviços foram iniciados com sucesso:

Output
Starting mkeventd...OK Starting rrdcached...OK Starting npcd...OK Starting nagios...OK Starting apache...OK Initializing Crontab...OK

A instância está funcionando.

Para acessar a instância Checkmk, abra http://your_ubuntu_server_ip/monitoring/ no navegador Web. Você será solicitado a colocar uma senha. Use as credenciais padrão que apareceram anteriormente na tela; alteraremos essas configurações padrão mais tarde.

A tela do Checkmk abre com um painel de controle que mostra todos os nossos status de serviços e de servidor em listas. O painel de controle também utiliza gráficos práticos que lembram a Terra. Logo após a instalação, esses dados estarão vazios, mas, em breve, faremos essas listas exibirem nossos status de serviços e sistemas.

Painel de controle do Checkmk vazio

No próximo passo, mudaremos a senha padrão para proteger o site usando esta interface.

Passo 4 — Alterando sua senha administrativa

Durante a instalação, o Checmk gera uma senha aleatória para o usuário administrativo cmkadmin. Essa senha é destinada a ser alterada após a instalação, pois, normalmente ela é curta e não é muito segura. Podemos alterar isso através da interface Web.

Primeiro, abra a página Users do menu WATO - Configuration à esquerda. A lista mostrará todos os usuários que têm acesso ao site do Checkmk. Em uma instalação recente, essa lista mostrará apenas dois usuários. O primeiro, automation, é destinado para o uso com ferramentas automatizadas; o segundo é o usuário cmkadmin que usamos para fazer login no site.

Lista de usuários do Checkmk

Clique no ícone do lápis próximo ao usuário cmkadmin para alterar seus detalhes, incluindo a senha.

Formulário de edição para o usuário admin do Checkmk

Atualize a senha, adicione um e-mail do admin e faça qualquer outra alteração que desejar.

Após salvar as alterações, o Checkmk solicitará que façamos o login novamente, utilizando nossas novas credenciais. Faça isso e retorne ao painel de controle. Ainda há mais uma coisa que precisamos fazer nele para aplicarmos totalmente nossa nova configuração.

Abra mais uma vez a página Users do menu WATO - Configuration à esquerda. O botão laranja no canto superior esquerdo chamado de 1 Change nos avisa que fizemos algumas alterações na configuração do Checkmk e que precisamos salvar e ativá-las. Isso acontecerá sempre que alterarmos a configuração de nosso sistema de monitoramento, e não apenas após editarmos as credenciais de um usuário. Para salvar e ativar alterações pendentes, precisamos clicar neste botão e concordar em ativar as alterações listadas usando a opção Activate affected na tela seguinte.

Lista de usuários do Checkmk após alterações Tela de confirmação de ativação das alterações de configuração Alterações de configuração ativadas com sucesso

Após ativar as alterações, os dados do novo usuário são escritos nos arquivos de configuração e serão utilizados por todos os componentes do sistema. O Checkmk cuida automaticamente da notificação dos componentes individuais do sistema de monitoramento, recarregando-os sempre que preciso e gerenciando todos os arquivos de configuração necessários.

A instalação do Checkmk está pronta para o uso. No próximo passo, adicionaremos o primeiro host ao nosso sistema de monitoramento.

Passo 5 — Monitorando o primeiro host

Estamos prontos para monitorar o primeiro host. Para fazermos isso, instalaremos primeiro o check-mk-agent no servidor Ubuntu. Em seguida, restringiremos o acesso aos dados de monitoramento utilizando o xinetd.

Os componentes instalados com o Checkmk são responsáveis por receber, armazenar e apresentar as informações de monitoramento. Eles não fornecem as informações em si.

Utilizaremos o agente do checkmk para reunir os dados em questão. Criado especificamente para esta função, o agente do checkmk consegue monitorar todos os componentes essenciais do sistema de uma só vez e reportar essas informações para a instância do Checkmk.

Instalando o agente

O primeiro host que monitoraremos será o your_ubuntu_server,o servidor em que instalamos a instância do Checkmk em si.

Para começar, precisamos instalar o agente do Checkmk. Os pacotes para todas as distribuições principais, incluindo o Ubuntu, estão disponíveis diretamente da interface Web. Abra a página Monitoring Agents do menu WATO - Configuration à esquerda. Você verá os agentes disponíveis para download com os pacotes mais populares na primeira seção chamada Packaged agents.

Lista de agentes de monitoramento empacotados disponíveis

O pacote chech-mk-agent_1.6.0p8-1_all.deb é o pacote adequado para distribuições baseadas em Debian, incluindo o Ubuntu. Copie o link de download para esse pacote no navegador Web e use esse endereço para baixar o pacote.

  • wget http://your_ubuntu_server_ip/monitoring/check_mk/agents/check-mk-agent_1.6.0p8-1_all.deb

Após baixar, instale o pacote:

  • apt install -y ./check-mk-agent_1.6.0p8-1_all.deb

Agora, verifique se o agente foi instalado com sucesso:

  • check_mk_agent

O comando gerará um texto muito longo que parece não fazer sentido, mas que, na verdade, contém todas as informações importantes sobre o sistema em um só lugar.

Output
<<<check_mk>>> Version: 1.6.0p8 AgentOS: linux . . . ["monitoring"] <<<job>>> <<<local>>>

É o resultado deste comando que o Checkmk utiliza para reunir os dados de status dos host monitorados. Em seguida, restringiremos o acesso aos dados de monitoramento com o xinetd.

Restringindo o acesso aos dados de monitoramento utilizando o xinetd

Por padrão, os dados do check_mk_agent são fornecidos utilizando o xinetd, um mecanismo que fornece dados em uma certa porta da rede ao acessá-la. Isso mostra que podemos acessar o check_mk_agent utilizando o protocolo telnet à porta 6556 (a porta padrão para o Checkmk) de qualquer outro computador na Internet, a menos que nosso firewall não permita isso.

Não é uma boa medida de segurança publicar informações importantes sobre os servidores para qualquer um na Internet. Devemos permitir que apenas hosts que executem o Checkmk e que estão sob nossa supervisão acessem esses dados, de forma que somente nosso sistema de monitoramento possa reuni-los.

Se você seguiu o tutorial de configuração inicial do servidor, incluindo os passos sobre a configuração de um firewall, então o acesso ao agente do Checkmk está bloqueado por padrão. No entanto, uma boa medida é fazer o cumprimento dessas restrições de acesso diretamente na configuração do serviço e não confiar somente no firewall para protegê-las.

Para restringir o acesso aos dados do agente, precisamos editar o arquivo de configuração em /etc/xinetd.d/check_mk. Abra o arquivo de configuração em seu editor favorito. Para usar o nano, digite:

  • sudo nano /etc/xinetd.d/check_mk

Localize esta seção:

/etc/xinetd.d/check_mk
. . .
# configure the IP address(es) of your Nagios server here:
#only_from      = 127.0.0.1 10.0.20.1 10.0.20.2
. . .

A configuração only_from é a responsável por restringir o acesso a certos endereços IP. Por estarmos trabalhando no monitoramento do mesmo servidor em que o Checkmk está funcionando, não há problemas em permitir que apenas o localhost se conecte. Descomente e atualize as configurações para:

/etc/xinetd.d/check_mk
. . .
# configure the IP address(es) of your Nagios server here:
only_from      = 127.0.0.1
. . .

Salve e saia do arquivo.

O daemon do xinetd precisa ser reiniciado para que as alterações sejam realizadas. Faça isso agora:

  • sudo systemctl restart xinetd

Agora, nosso agente está funcionando e restrito a aceitar apenas as conexões locais. Podemos prosseguir para configurar o monitoramento para o host utilizando o Checkmk.

Configurando o host na interface Web do Checkmk

Primeiro, para adicionar um novo host para monitorar, precisamos primeiro acessar o menu Host no menu WATO - Configuration à esquerda. A partir daqui, clique em Create new host (criar novo host). Seremos solicitados a fornecer algumas informações sobre o host.

Criando um novo host no Checkmk

O Hostname (nome do host) é o nome mais comum que o Checkmk utilizará para o monitoramento. Pode ser um nome de domínio mais elaborado, mas isso não é necessário. Neste exemplo, nomearemos o host de monitoring, o mesmo nome da instância Checkmk Como o monitoring não é resolvido para nosso endereço IP, também precisamos fornecer o endereço IP do nosso servidor. E como estamos monitorando o host local, o IP será simplesmente 127.0.0.1. Verifique a caixa de endereço IPv4 para habilitar a entrada manual do IP e digite o valor no campo de texto.

A configuração padrão da seção Data Sources depende do agente do Checkmk para fornecer os dados de monitoramento, mas isso não é um problema. A configuração Networking Segment é usada para denotar hosts em redes remotas, que são caracterizadas por uma latência esperada mais elevada. Isso não é um sinal de defeito. Como este é um host local, podemos usar a configuração padrão.

Para salvar o host e configurar quais serviços serão monitorados, clique no botão Save & go to services (salvar e ir para serviços).

Lista de serviços disponíveis para monitorar

O Checkmk fará um inventário automático. Isso significa que ele reunirá o resultado do agente e o decifrará para saber quais tipos de serviços ele pode monitorar. Todos os serviços disponíveis para o monitoramento estarão na lista. Isso inclui a carga da CPU, o uso de memória e o espaço livre nos discos.

Para habilitar o monitoramento de todos os serviços descobertos, precisamos clicar no botão Monitor (Monitorar), abaixo da seção Undecided services (currently not monitored) (Serviços não decididos (ainda não monitorados)). Isso atualizará a página. Agora, todos os serviços serão listados na seção Monitored services (serviços monitorados), informando-nos que eles estão sendo monitorados.

Assim como acontece quando mudamos nossa senha de usuário, essas novas alterações devem ser salvas e ativadas antes de entrarem em vigor. Pressione o botão 2 changes e aceite as mudanças usando o botão Activate affected. Depois disso, o monitoramento do host estará funcionando.

Você está pronto para trabalhar com os dados do seu servidor. Dê uma olhada no painel de controle principal utilizando o item do menu Overview/Main Overview (Visão geral/ Visão geral principal) à esquerda.

Trabalhando com os dados de monitoramento

Vamos dar uma olhada no painel de controle principal usando o item do menu Overview/Main Overview à esquerda:

Monitorando o painel de controle com todos os serviços íntegros

A esfera da Terra está totalmente verde e a tabela diz que um host está funcionando e que não há problemas. Podemos ver a lista de hosts completa. No momento ela consiste de apenas um host, na visualização de Hosts/All hosts (Hosts/ Todos os hosts) (utilizando o menu à esquerda).

Lista de hosts com todos os serviços íntegros

Lá, veremos quantos serviços estão com boa integridade (mostrados em verde), quantos apresentam falhas e quantos precisam ser verificados. Após clicarmos no nome do host, poderemos ver a lista de todos os serviços com os status completos e seus Perf-O-Meters. O Perf-O-Meter mostra o desempenho de um único serviço considerando os parâmetros de integridade do Checkmk.

Detalhes de um status de serviço do host

Todos os serviços que retornam dados em gráficos, mostram um ícone de gráfico próximo a seus nomes. Podemos usar esse ícone para acessar gráficos associados ao serviço. Como o monitoramento é recente, não há quase nada nos gráficos, mas após um período, os gráficos fornecerão informações valiosas sobre nosso desempenho de serviço ao longo do tempo.

Gráficos representando a carga da CPU no servidor

As informações sobre quando qualquer um desses serviços falharem ou se recuperarem serão exibidas no painel de controle. Para serviços em falha, será exibido um erro vermelho e o problema também estará visível no gráfico da Terra.

Painel de controle com um host tendo problemas

Após a recuperação, tudo será mostrado em verde, indicando que está funcionando corretamente, porém, o log de eventos conterá informações sobre falhas passadas.

Painel de controle com um host recuperado após problemas

Agora que já exploramos o painel de controle, adicionaremos um segundo host para nossa instância de monitoramento.

Passo 6 — Monitorando um segundo host do CentOS

O monitoramento é muito útil quando você tem vários hosts. Agora, adicionaremos um segundo servidor à nossa instância do Checkmk, desta vez, executando o CentOS 7.

Assim como nosso servidor Ubuntu, é necessário instalar o agente do Checkmk para reunir os dados de monitoramento no CentOS. No entanto, desta vez precisaremos de um pacote rpm da página agentes de monitoramento na interface Web, chamada check-mk-agent-1.6.0p8-1.noarch.rpm.

Ante disso, precisamos instalar o xinetd, que, por padrão, não está disponível na instalação do CentOS. Como visto anteriormente, o xinetd é um daemon responsável por disponibilizar na rede os dados de monitoramento fornecidos pelo check_mk_agent.

Em seu servidor CentOS, instale o xinetd:

  • sudo yum install -y xinetd

Agora, podemos baixar e instalar o pacote de agentes de monitoramento necessário para nosso servidor CentOS:

  • sudo yum install -y http://your_ubuntu_server_ip/monitoring/check_mk/agents/check-mk-agent-1.6.0p8-1.noarch.rpm

Assim como antes, podemos verificar se o agente está funcionando corretamente executando o check_mk_agent:

  • sudo check_mk_agent

O resultado será parecido com o do servidor Ubuntu. Agora, restringiremos o acesso ao agente.

Restringindo o acesso

Desta vez, não monitoraremos um host local, por este motivo, o xinetd deve permitir as conexões vindas do servidor Ubuntu (onde o Checkmk está instalado) para reunir os dados. Para permitir isso, abra primeiro seu arquivo de configuração:

  • sudo vi /etc/xinetd.d/check_mk

Aqui, você verá a configuração para seu serviço check_mk especificando como o agente Checkmk pode ser acessado pelo daemon xinetd. Encontre as seguintes linhas comentadas:

/etc/xinetd.d/check_mk
. . .
# configure the IP address(es) of your Nagios server here:
#only_from      = 127.0.0.1 10.0.20.1 10.0.20.2
. . .

Agora, descomente a segunda linha e substitua os endereços IP locais pelo your_ubuntu_server_ip:

/etc/xinetd.d/check_mk
. . .
# configure the IP address(es) of your Nagios server here:
only_from      = your_ubuntu_server_ip
. . .

Salve e saia do arquivo digitando :x e, depois, ENTER. Reinicie o serviço xinetd usando:

  • sudo systemctl restart xinetd

Podemos agora continuar para configurarmos o Checkmk para monitorar nosso host do CentOS 7.

Configurando o novo host no Checkmk

Para adicionar hosts adicionais ao Checkmk, usamos o menu Hosts, assim como antes. Desta vez, nomearemos o host como centos, configuraremos seu endereço IP e escolheremos WAN (high-latency) na caixa Networking Segment, pois o host está em outra rede. Se tivéssemos ignorado isso e deixado o host como local, o Checkmk nos alertaria que o host está inoperante, pois ele esperaria que as respostas às consultas do agente fossem muito mais rápidas do que seriam se fossem obtidas na Internet.

Tela de configuração da criação de um segundo host

Clique em Save & go to services, que mostrará os serviços disponíveis para o monitoramento no servidor CentOS. A lista será muito parecida com a do primeiro host. Novamente, precisamos clicar em Monitor e, em seguida, ativar as alterações usando o botão laranja no canto superior esquerdo.

Após ativar as alterações, podemos verificar se o host está sendo monitorado na página All hosts. Vá para lá. Dois hosts estarão visíveis, um monitoring e um centos.

Lista de hosts com dois hosts sendo monitorados

Agora, você está monitorando um servidor Ubuntu e um servidor CentOS com o Checkmk. É possível monitorar ainda mais hosts. Na verdade, não há outro limite além do desempenho do servidor, o que não deve ser um problema, a menos que você precise lidar com centenas de hosts. Além disso, o procedimento é o mesmo para qualquer outro host. Os agentes do checkmk no pacotes deb e rpm funcionam no Ubuntu, CentOS e na maioria das outras distribuições do Linux.

Conclusão

Neste guia, configuramos dois servidores com duas distribuições do Linux diferentes: Ubuntu e CentOS. Em seguida, instalamos e configuramos o Checkmk para monitorar ambos os servidores e exploramos a poderosa interface Web do Checkmk.

O Checkmk permite configurar facilmente um sistema de monitoramento completo e versátil, resumindo todo o trabalho árduo da configuração manual a uma interface Web de fácil utilização e com diversas opções e recursos. Com essas ferramentas, é possível monitorar vários hosts; configurar notificações de problemas via e-mail, SMS ou push; configurar verificações adicionais para outros serviços; monitorar a acessibilidade e o desempenho, etc.

Para aprender mais sobre o Checkmk, visite a documentação oficial.

0 Comments

Creative Commons License