DEV Community

Paulo Alves
Paulo Alves

Posted on

Monitoramento completo com EC2 + Grafana + Prometheus e Loki

Em um post passado fiz a criação do servidor do Grafana e instalação do plugin do Loki. Também montei um servidor com nginx padrão para se utilizado no envio dos logs.

Neste post quero trazer o monitoramento full de uma instância EC2, monitoramento de disco, cpu, rede, swap, processos que estão rodando na máquina e logs.

Não vou contemplar a criação do servidor do Grafana e nem o servidor que será monitorado. Já vou direto para o ponto onde vou subir o contêiner com o Prometheus, na máquina do server do Grafana e a configuração do dashboard para análise da saúde do ambiente.

Neste ponto já temos o docker instalado na instância do Grafana, com o contêiner do Grafana e Loki rondando. Agora vou subir o contêiner do Prometheus, mas antes vou baixar o arquivo de configuração e fazer a criação de um diretório onde ficará o arquivo de configuração para ser mapeado no contêiner do Prometheus. Segue abaixo os comandos:

sudo mkdir /docker && \
cd /docker && \
git clone https://gitlab.com/snippets/2484803.git && \
sudo mv 2484803 prometheus
Enter fullscreen mode Exit fullscreen mode

Neste ponto já temos os arquivos de configuração, agora podemos subir o contêiner do Prometheus com esse arquivo de configuração.

docker run -d --name=prometheus \
--network monitoring \
-p 9090:9090 \
-v /docker/prometheus/prometheus.yml:/opt/bitnami/prometheus/conf/prometheus.yml bitnami/prometheus:latest
Enter fullscreen mode Exit fullscreen mode

Se tudo estiver ok, deverá estar desta forma:

ContainersRUN

Com o contêiner do Prometheus up, vou iniciar a configuração do Datasource. Para isso vá em configurações > Plugins na busca digite Prometheus. Deve estar assim:

DataSourceGrafana
Selecionando o plugin do Prometheus irá para tela onde irei configurar o Datasource.

Datasource
Selecione Create a Prometheus data source e faça o preenchimento das seguintes informações:

formulario
Feito isso clique em Salve & test
Neste ponto já temos o Datasource do Prometheus configurado com o Grafana.
Agora vou fazer as configurações na instância que será monitorada. Na instância que será monitorada eu irei configurar o node exporter, que é responsável por enviar as métricas para o Prometheus.

Instalando Node Exporter

Acesse via ssh a instância a ser monitorada. Esse servidor que será monitorado, eu estou utilizando Amazon Linux2. Com isso vou baixar o executável do node_exporter no diretório home do usuário ec2-user utilizando o comando abaixo:

wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
Enter fullscreen mode Exit fullscreen mode

Você pode verificar aqui versões mais atualizadas do node_exporter.
Agora vou descompactar e renomear o diretório do pacote baixado:

tar xf node_exporter-1.5.0.linux-amd64.tar.gz && \
mv node_exporter-1.5.0.linux-amd64 node_exporter
Enter fullscreen mode Exit fullscreen mode

Feito isso, vou acessar o diretório node_exporter e inciar o executável. Vou executar com nohup, para que minha sessão não fica presa ao executável. O comando fica assim:

nohup ./node_exporter &
Enter fullscreen mode Exit fullscreen mode

Pressionando 2x o enter para liberar a console, deverá ficar desta forma:

nohup
Para certificar que está tudo ok, podemos acessar via browser:

http://ip_do_server_node_exporter:9100
Enter fullscreen mode Exit fullscreen mode

Você deve ver uma tela igual a essa:

node_exporter_

Agora vou voltar ao servidor onde está instalado o Prometheus para que posso adicionar o ip interno da instância a ser monitorada, para que possa fechar a comunicação entre eles.
No servidor do Prometheus vá no diretório docker/prometheus e edite o arquivo prometheus.yml. Se você estiver com o arquivo que eu disponibilizei, deverá editar somente a linha 28.

confignodeexporter

Basta salvar o arquivo, o servidor já irá começar a se comunicar com o agente. Você pode validar, acessando o Prometheus via browser.

http://ip_do_servidor_grafana:9090
Enter fullscreen mode Exit fullscreen mode

console_prometheus
Acessando no menu superior status > Service Discovery. Você será direcionado para essa tela:

service_discovery
Agora clicando em show more, terá no próprio servidor do Prometheus e o servidor que vou monitorar.

server_monitoring
Configurações ok, vou para criação do dashboard de monitoramento de recursos e recebimento dos logs. A parte de config de recebimento de logs contemplei neste post
Para facilitar vou pegar um dashboard pronto e apenas importa-lo para o ambiente de teste. Selecione a opção Dashboard > + Import.

import_dashboard
Nessa tela você vai adicionar o ID 1860 > load

load
A tela seguinte deverá estar desta forma:

import_dash
Agora é clicar em import
Se estiver tudo ok, você deve visualizar algo:

dash
Não esqueça de salvar o dash para não peder as configs..
Agora vou inserir a visualização dos logs, as configs para deixar o Loki funcional estão aqui.
Selecione add painel > add new panel

add_new_panel
Add new panel, vamos selecionar o Datasource Loki

datasource_loki
Agora vamos filtrar por labels:

filter_labels
Pode dar um Run queries para validar que está trazendo os logs do ambiente correto. Se o retorno estiver desta forma:

logs
Basta dar um apply.
Para que você veja os logs sendo exibidos é necessário acessar o Nginx no servidor que está enviando os logs via browser, e ficar dando f5 na página para gerar conteúdo dentro do access.log.

end

Ambiente finalizado! Espero ter ajudo e nos vemos no próximo post

E ai vamos se conectar? Entre em contato comigo:
https://www.linkedin.com/in/pcmalves/

Top comments (0)