Prometheus com Kubernetes

William Lima Pereira
3 min readDec 19, 2022

--

O Prometheus é uma ferramenta de monitoramento de código aberto que coleta métricas de diversas fontes e as armazena em um banco de dados para análise posterior. O Kubernetes, por sua vez, é uma plataforma de gerenciamento de contêineres de código aberto que permite o deploy, escalonamento e gerenciamento de aplicativos em contêineres.

A combinação do Prometheus com o Kubernetes permite a monitoração de métricas de aplicativos em execução em um cluster Kubernetes, o que é particularmente útil em ambientes de produção.

Existem várias maneiras de configurar o Prometheus para monitorar o Kubernetes, mas uma das maneiras mais comuns é usar o Helm, que é um gerenciador de pacotes para o Kubernetes.

Para começar, é necessário instalar o Helm no seu ambiente Kubernetes. Isso pode ser feito usando o seguinte comando:

curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > get_helm.sh
chmod 700 get_helm.sh
./get_helm.sh

Em seguida, é preciso adicionar o repositório do Prometheus ao Helm:

helm repo add stable https://kubernetes-charts.storage.googleapis.com

Agora, você pode instalar o Prometheus no seu cluster Kubernetes usando o seguinte comando:

helm install prometheus stable/prometheus

Isso instalará o Prometheus como um conjunto de serviços no seu cluster Kubernetes. Você pode verificar o status da instalação usando o comando:

kubectl get pods -n default

Isso mostrará todos os pods em execução no seu cluster, incluindo o pod do Prometheus.

Agora que o Prometheus está instalado, é preciso configurá-lo para monitorar os pods do Kubernetes. Isso pode ser feito adicionando o seguinte trecho de código ao arquivo de configuração do Prometheus (normalmente localizado em /etc/prometheus/prometheus.yml):

- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)

Esse trecho de código configura o Prometheus para monitorar todos os pods que tenham a anotação prometheus.io/scrape: "true". Isso permite que você escolha quais pods serão monitorados pelo Prometheus, permitindo uma maior flexibilidade na configuração.

Para adicionar essa anotação a um pod, basta incluir o seguinte trecho no arquivo de definição do pod:

annotations:
prometheus.io/scrape: "true"

Depois de adicionar essas anotações, é preciso aplicar as alterações no seu cluster Kubernetes usando o comando:

kubectl apply -f path/to/pod.yml

Depois de fazer isso, o Prometheus começará a coletar métricas dos pods que você especificou. Você pode verificar se as métricas estão sendo coletadas acessando a interface de visualização do Prometheus, normalmente disponível em http://localhost:9090/graph.

Além de monitorar pods individualmente, o Prometheus também pode ser configurado para monitorar todo o seu cluster Kubernetes. Isso é feito adicionando o seguinte trecho de código ao arquivo de configuração do Prometheus:

- job_name: 'kubernetes-cluster'
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
action: replace
target_label: __scheme__
regex: (https?)
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)

Esse trecho de código configura o Prometheus para monitorar todos os serviços que tenham a anotação prometheus.io/scrape: "true".

Como no caso dos pods, é possível especificar um caminho personalizado para as métricas dos serviços usando a anotação prometheus.io/path. Além disso, é possível especificar o esquema (http ou https) a ser usado para acessar as métricas dos serviços usando a anotação prometheus.io/scheme.

Para adicionar essas anotações a um serviço, basta incluir o seguinte trecho no arquivo de definição do serviço:

annotations:
prometheus.io/scrape: "true"
prometheus.io/path: "/custom/metrics/path"
prometheus.io/scheme: "https"

Depois de adicionar essas anotações, é preciso aplicar as alterações no seu cluster Kubernetes usando o comando:

kubectl apply -f path/to/service.yml

Depois de fazer isso, o Prometheus começará a coletar métricas dos serviços que você especificou. Você pode verificar se as métricas estão sendo coletadas acessando a interface de visualização do Prometheus, normalmente disponível em http://localhost:9090/graph.

É importante notar que essa é apenas uma das muitas maneiras de configurar o Prometheus para monitorar o Kubernetes. Existem outras opções, como usar o expositor de métricas nativo do Kubernetes ou usar o Promethues Operator, que é uma extensão do Kubernetes que facilita a configuração do Prometheus.

Espero que essas informações tenham sido úteis e que você consiga configurar o Prometheus e o Kubernetes de acordo com as suas necessidades. Boa sorte!

--

--