O acompanhamento da infraestrutura de TI pode ser complexo, mas uma ferramenta como o Checkmk pode simplificar esse processo significativamente.
Muitas empresas têm integrado tecnologias nativas da nuvem em sua arquitetura tecnológica para otimizar o desempenho de seus produtos. Paralelamente, frequentemente mantêm suas próprias redes e infraestruturas locais. Essa transição para ambientes híbridos exige uma abordagem de monitoramento que considere o grande volume de métricas geradas a cada segundo por diversos componentes, como sistemas operacionais, armazenamento, servidores e ambientes de nuvem. Todos esses elementos são cruciais para assegurar que os aplicativos operem em seu máximo potencial.
Essas métricas são um indicador vital para que as equipes de DevOps compreendam o estado de saúde de sua infraestrutura. Por isso, as organizações necessitam de uma solução de monitoramento que as ajude a identificar rapidamente problemas na produção através de métricas, visualizações e análises. O Checkmk é uma das ferramentas de monitoramento de infraestrutura mais populares e eficazes disponíveis. Neste artigo, exploraremos as razões por trás da reputação do Checkmk e como você pode começar a utilizá-lo.
O que é o Checkmk?
O Checkmk monitora continuamente o funcionamento de diversos componentes nos ambientes de TI modernos, sendo especialmente adequado para infraestruturas híbridas. Ele oferece flexibilidade ao suportar contêineres, ativos em nuvem e sistemas locais, como switches e servidores. Além disso, o Checkmk facilita o início e o gerenciamento do monitoramento, oferecendo alertas automatizados baseados em conhecimento de TI e outros recursos inteligentes que economizam tempo.
Se você deseja experimentar o Checkmk gratuitamente, existem duas opções: a primeira é a Checkmk Raw Edition, que é totalmente de código aberto e gratuita, sem limitações. A segunda opção é a versão de avaliação do Checkmk Enterprise, que possui todos os recursos adicionais das edições Enterprise, mas após 30 dias, o número de hosts é limitado a 25.
Como o Checkmk resolve problemas?
O Checkmk tem a capacidade de monitorar aplicativos, servidores, bancos de dados, redes, contêineres, armazenamento e outros elementos. Ele disponibiliza uma vasta gama de mais de 2.000 plugins de monitoramento, que permitem que o Checkmk seja expandido para acompanhar tecnologias específicas de diferentes fornecedores no mercado. Alguns plugins populares do Checkmk incluem suporte para Docker, Kubernetes, Cisco, Nginx, VMware, Linux, Windows, AWS e Dell. Com essa variedade de plugins, o Checkmk se destaca como uma solução de monitoramento de infraestrutura promissora.
Além disso, a velocidade e precisão na leitura de métricas, juntamente com a configuração de alertas e notificações inteligentes, são cruciais para qualquer solução de monitoramento. O Checkmk atende a todos esses critérios. Através de sua funcionalidade de descoberta automática, o Checkmk identifica mais de 90% dos serviços e dispositivos. A escalabilidade e a automação são requisitos importantes para a maioria das empresas, e o Checkmk permite expandir a capacidade de monitoramento de centenas a milhares de hosts, utilizando seus agentes para automação.
Instalando o Checkmk em um Contêiner Docker
Neste guia, demonstraremos como instalar o Checkmk Raw Edition em um contêiner Docker, em um servidor Linux rodando Ubuntu 20.04. No Dockerhub, é possível encontrar o contêiner Checkmk Docker, que já registrou quase 5 milhões de downloads, evidenciando a popularidade e amplo uso do Checkmk.
Para instalar, primeiramente obtenha a imagem Docker com a versão mais recente do Checkmk e execute-a dentro de um contêiner utilizando o comando `docker container run`:
docker container run -dit -p 8080:5000 --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 -v monitoring:/omd/sites --name monitoring -v /etc/localtime:/etc/localtime:ro --restart always checkmk/check-mk-raw:2.0.0-latest
Neste comando, o contêiner será nomeado ‘monitoring’, o servidor web escutará a porta 5000 e será acessível através da porta 8080 do nó. O contêiner utilizará o sistema de arquivos temporário e o fuso horário local.
[email protected]:~$ sudo docker container run -dit -p 8080:5000 --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 -v/omd/sites --name monitoring -v/etc/localtime:/etc/localtime:ro --restart always checkmk/check-mk-raw:2.0.0-latest Unable to find image 'checkmk/check-mk-raw:2.0.0-latest' locally 2.0.0-latest: Pulling from checkmk/check-mk-raw 33847f680f63: Pull complete 474905f2790b: Pull complete 1804f0e63047: Pull complete f36fe6334464: Pull complete 03c68dfa69cf: Pull complete b60cfdb78e96: Pull complete Digest: sha256:7788fa2e31c7270be201d75285c13ccc7a74f67f991872ea63ba0cfa6708cac6 Status: Downloaded newer image for checkmk/check-mk-raw:2.0.0-latest 9729e323a840a08b0e758cfa9e6dbf76ba5dab4b2ecc4eea5174b8ee1a5cfbcf
Para confirmar se a imagem Docker foi baixada, utilize o comando `docker images`.
[email protected]:~$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE bitnami/node-exporter latest ba0f519ca49b 34 hours ago 104MB checkmk/check-mk-raw 2.0.0-latest 097319702432 13 days ago 1.03GB hello-world latest feb5d9fea6a5 7 weeks ago 13.3kB
Para verificar se o contêiner Checkmk está em execução, utilize o comando `docker ps`.
[email protected]:~$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9729e323a840 checkmk/check-mk-raw:2.0.0-latest "/docker-entrypoint.…" About a minute ago Up 59 seconds (health: starting) 6557/tcp, 0.0.0.0:8080->5000/tcp, :::8080->5000/tcp monitoring 3d3a95ed3c25 bitnami/node-exporter:latest "/opt/bitnami/node-e…" 25 hours ago Up 25 hours 9100/tcp node-exporter
Para obter as informações de login da interface web do Checkmk, exiba o log do contêiner Checkmk.
[email protected]:~$ sudo docker container logs 9729e323a840 ### CREATING SITE 'cmk' Adding /opt/omd/sites/cmk/tmp to /etc/fstab. Going to set TMPFS to off. Temporary filesystem already mounted Updating core configuration... Generating configuration for core (type nagios)...Precompiling host checks...OK OK Executing post-create script "01_create-sample-config.py"...OK Created new site cmk with version 2.0.0p15.cre. The site can be started with omd start cmk. The default web UI is available at http://9729e323a840/cmk/ The admin user for the web applications is cmkadmin with password: ClFxBPre For command line administration of the site, log in with 'omd su cmk'. After logging in, you can change the password for cmkadmin with 'htpasswd etc/htpasswd cmkadmin'. ### STARTING XINETD [ ok ] Starting internet superserver: xinetd. ### STARTING SITE Temporary filesystem already mounted Starting mkeventd...OK Starting rrdcached...OK Starting npcd...OK Starting nagios...OK Starting apache...OK Starting redis...OK Initializing Crontab...OK ### STARTING CRON ### CONTAINER STARTED
O contêiner Checkmk Docker será executado por padrão em `https://localhost:8080/cmk/check_mk`. A saída do comando acima informa que o nome de usuário é `cmkadmin` e a senha, neste caso, é `ClFxBPre`. Abra este endereço em um navegador web e utilize as credenciais para realizar o login.
Após o login, o ‘painel principal’ será exibido. Inicialmente estará vazio, pois nenhum host foi adicionado ainda.
Monitorando o Docker com o Checkmk
Normalmente, o agente Checkmk seria instalado na máquina que hospeda os contêineres Docker. Em seguida, o plugin Checkmk para Docker seria utilizado para monitorar todos os contêineres. Este plugin (`mk_docker.py`) emprega a API Python do Docker para acompanhar os contêineres Docker e obter visibilidade completa de seu status e desempenho em tempo real. Para obter mais detalhes, você pode consultar o artigo sobre Monitoramento do Docker com Checkmk no site oficial.
Neste cenário, como há apenas um contêiner Docker em execução, o contêiner Checkmk Docker, utilizaremos o agente Checkmk que já está em execução dentro do contêiner Docker e não será instalado no host Docker. Como o agente já está pré-instalado no contêiner Checkmk, basta adicionar o próprio contêiner Checkmk como um host a ser monitorado.
Para começar, obtenha o endereço IP em que o serviço Docker está sendo executado, utilizando o comando `ifconfig` no terminal.
[email protected]:~$ ifconfig docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255 inet6 fe80::42:59ff:fe8a:8ba8 prefixlen 64 scopeid 0x20<link> ether 02:42:59:8a:8b:a8 txqueuelen 0 (Ethernet) RX packets 5559 bytes 7230215 (7.2 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4164 bytes 614703 (614.7 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.108 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::144a:4682:35e7:bb2 prefixlen 64 scopeid 0x20<link> ether 08:00:27:91:82:82 txqueuelen 1000 (Ethernet) RX packets 699491 bytes 1044235622 (1.0 GB) RX errors 0 dropped 7 overruns 0 frame 0 TX packets 101260 bytes 7555470 (7.5 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 20655 bytes 8446042 (8.4 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 20655 bytes 8446042 (8.4 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 veth44ba5ce: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::145f:1fff:fee9:a7b0 prefixlen 64 scopeid 0x20<link> ether 16:5f:1f:e9:a7:b0 txqueuelen 0 (Ethernet) RX packets 5559 bytes 7308041 (7.3 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4173 bytes 616263 (616.2 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 vetha82ee43: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::585c:6fff:fe0a:a79b prefixlen 64 scopeid 0x20<link> ether 5a:5c:6f:0a:a7:9b txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 92 bytes 9799 (9.7 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Neste caso, o serviço Docker está executando em `172.17.0.1`. O próximo passo é adicionar este serviço como um host no Checkmk para que possa ser monitorado.
- Acesse o Checkmk e clique em Configuração -> Hosts.
- Agora, insira o nome do host e o endereço IP, e clique em ‘Salvar e ir para a configuração do serviço’.
- Após realizar esta ação, o Checkmk iniciará automaticamente a descoberta de serviços.
Desça a página para visualizar os serviços de monitoramento em execução no host do Docker. Observe que os serviços não estão sendo monitorados neste momento. Para monitorar todos os serviços de forma fácil e rápida, clique em ‘Corrigir tudo’. Se desejar configurar quais serviços serão monitorados individualmente, também é possível. Clique no sinal ‘+’ para adicionar um serviço específico ao monitoramento.
Após selecionar os serviços que você deseja monitorar, eles aparecerão na guia ‘Serviços Monitorados’. Nesta área, você pode verificar detalhes do status de cada serviço. Se você clicar no sinal ‘?’, o serviço será movido para a lista de serviços indecisos. Se clicar no sinal ‘X’, o serviço será movido para a guia ‘Serviços Desabilitados’.
Para exemplificar, desabilitei quatro serviços, que agora são visíveis na guia de serviços desativados.
Ao concluir a configuração dos serviços, é preciso ativar as alterações para que elas entrem em vigor.
- Clique no campo destacado com o ponto de exclamação amarelo (!) no canto superior direito para ver as alterações pendentes.
- Clique em ‘Ativar em sites selecionados’.
Parabéns! Você configurou com sucesso o monitoramento dos serviços Docker utilizando o Checkmk.
Conclusão
Este foi um panorama geral do Checkmk, uma ferramenta robusta para monitoramento de infraestrutura. É uma ferramenta intuitiva e eficaz, ideal para monitorar ambientes de produção. Recomenda-se começar explorando a Checkmk Edição Gratuita para iniciar seu monitoramento.