Skip to main content

Monitoramento de um Cluster Kubernetes com Prometheus e Grafana

Este tutorial fornece um passo a passo detalhado para configurar o monitoramento de um cluster Kubernetes usando Prometheus e Grafana. O objetivo é fornecer uma visão clara sobre como coletar métricas, visualizá-las e criar dashboards personalizados.


Pré-requisitos

Antes de começar, certifique-se de que:

  1. Você tem acesso a um cluster Kubernetes funcional.
  2. A ferramenta kubectl está instalada e configurada no seu ambiente local.
  3. Você tem permissões administrativas no cluster para instalar e configurar componentes.
  4. O Helm (gerenciador de pacotes do Kubernetes) está instalado. Caso contrário, siga as instruções em Helm Docs.

Passo 1: Instalação do Prometheus

O Prometheus é responsável por coletar métricas do cluster Kubernetes. Vamos usar o Helm para instalar o Prometheus.

1.1. Adicionar o repositório do Prometheus

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

1.2. Criar um namespace para o Prometheus

kubectl create namespace monitoring

1.3. Instalar o Prometheus

Execute o seguinte comando para instalar o Prometheus no namespace monitoring:

helm install prometheus prometheus-community/prometheus \
--namespace monitoring \
--set server.service.type=LoadBalancer \
--set server.persistentVolume.enabled=true \
--set server.persistentVolume.size=10Gi
  • Explicação dos parâmetros:
    • server.service.type=LoadBalancer: Expõe o serviço do Prometheus externamente.
    • server.persistentVolume.enabled=true: Habilita armazenamento persistente para os dados do Prometheus.
    • server.persistentVolume.size=10Gi: Define o tamanho do volume persistente.

1.4. Verificar a instalação

Verifique se os pods do Prometheus estão rodando:

kubectl get pods -n monitoring

Você deve ver algo como:

NAME                                                READY   STATUS    RESTARTS   AGE
prometheus-server-xxxxxxxxxx-xxxxx 2/2 Running 0 2m
prometheus-kube-state-metrics-xxxxxxxxxx-xxxxx 1/1 Running 0 2m
prometheus-alertmanager-xxxxxxxxxx-xxxxx 2/2 Running 0 2m

Passo 2: Instalação do Grafana

O Grafana será usado para visualizar as métricas coletadas pelo Prometheus.

2.1. Adicionar o repositório do Grafana

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update

2.2. Instalar o Grafana

Execute o seguinte comando para instalar o Grafana no namespace monitoring:

helm install grafana grafana/grafana \
--namespace monitoring \
--set service.type=LoadBalancer \
--set persistence.enabled=true \
--set persistence.size=5Gi \
--set adminPassword=admin
  • Explicação dos parâmetros:
    • service.type=LoadBalancer: Expõe o serviço do Grafana externamente.
    • persistence.enabled=true: Habilita armazenamento persistente para os dados do Grafana.
    • persistence.size=5Gi: Define o tamanho do volume persistente.
    • adminPassword=admin: Define a senha do usuário admin.

2.3. Verificar a instalação

Verifique se os pods do Grafana estão rodando:

kubectl get pods -n monitoring

Você deve ver algo como:

NAME                                                READY   STATUS    RESTARTS   AGE
grafana-xxxxxxxxxx-xxxxx 1/1 Running 0 2m

Passo 3: Configurar o Prometheus como Fonte de Dados no Grafana

Para visualizar as métricas do Prometheus no Grafana, precisamos configurar o Prometheus como fonte de dados.

3.1. Obter o endereço do Prometheus

Obtenha o endereço externo do serviço do Prometheus:

kubectl get svc -n monitoring | grep prometheus-server

A saída será algo como:

prometheus-server   LoadBalancer   10.0.0.1   <EXTERNAL_IP>   80:30000/TCP   5m

Anote o <EXTERNAL_IP> ou o endereço do LoadBalancer.

3.2. Acessar o Grafana

Obtenha o endereço externo do serviço do Grafana:

kubectl get svc -n monitoring | grep grafana

A saída será algo como:

grafana             LoadBalancer   10.0.0.2   <EXTERNAL_IP>   80:31000/TCP   5m

Acesse o Grafana no navegador usando o <EXTERNAL_IP> na porta 80 (ou a porta exposta). Por exemplo:

http://<EXTERNAL_IP>

Faça login com as credenciais:

  • Usuário: admin
  • Senha: admin (ou a senha definida durante a instalação)

3.3. Adicionar o Prometheus como fonte de dados

  1. No painel do Grafana, clique em Configuration (ícone de engrenagem) no menu lateral esquerdo.
  2. Clique em Data Sources.
  3. Clique em Add data source.
  4. Selecione Prometheus.
  5. Na URL, insira o endereço do Prometheus (http://<EXTERNAL_IP_PROMETHEUS>:80).
  6. Clique em Save & Test.

Se tudo estiver correto, você verá a mensagem "Data source is working".


Passo 4: Importar Dashboards no Grafana

O Grafana possui dashboards pré-configurados para Kubernetes. Vamos importar alguns deles.

4.1. Importar o Dashboard "Kubernetes Cluster Monitoring"

  1. No painel do Grafana, clique em Create (ícone de "+" no menu lateral esquerdo).
  2. Clique em Import.
  3. Insira o ID do dashboard: 315.
  4. Clique em Load.
  5. Selecione o Prometheus como fonte de dados.
  6. Clique em Import.

O dashboard será carregado e exibirá métricas do cluster Kubernetes.


Passo 5: Explorar Métricas e Customizar Dashboards

Agora que o Prometheus está coletando métricas e o Grafana está visualizando-as, você pode explorar os dados disponíveis e criar dashboards personalizados conforme necessário.

5.1. Explorar métricas no Prometheus

Acesse o Prometheus no navegador usando o <EXTERNAL_IP_PROMETHEUS>:

http://<EXTERNAL_IP_PROMETHEUS>

Na interface do Prometheus, você pode executar consultas PromQL para explorar as métricas coletadas.

5.2. Criar dashboards personalizados no Grafana

  1. No painel do Grafana, clique em Create (ícone de "+" no menu lateral esquerdo).
  2. Clique em Dashboard.
  3. Adicione novos painéis e configure consultas PromQL para exibir as métricas desejadas.

Conclusão

Com este tutorial, você configurou com sucesso o monitoramento de um cluster Kubernetes usando Prometheus e Grafana. Agora você pode:

  • Coletar métricas do cluster Kubernetes.
  • Visualizar essas métricas em dashboards interativos no Grafana.
  • Criar dashboards personalizados para atender às suas necessidades específicas.

Se precisar de mais ajuda ou quiser explorar recursos avançados, consulte a documentação oficial do Prometheus e do Grafana.