Prometheus métricas - Amazon EKS

Ajudar a melhorar esta página

Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.

Prometheus métricas

O Prometheus é um banco de dados de monitoramento e séries temporais que extrai endpoints. Ele permite consultar, agregar e armazenar dados coletados. Você também pode usá-lo para alertas e agregação de alertas. Este tópico explica como configurar o Prometheus como uma opção gerenciada ou de código aberto. Monitorar o ambiente de gerenciamento de métricas do Amazon EKS é um caso de uso comum.

O Amazon Managed Service for Prometheus é um serviço de monitoramento e emissão de alertas compatível com o Prometheus que facilita o monitoramento de aplicações conteinerizadas e infraestrutura em escala. É um serviço totalmente gerenciado que dimensiona automaticamente a ingestão, o armazenamento, a consulta e o alerta de métricas. Também se integra aos serviços de segurança da AWS para permitir acesso rápido e seguro aos dados. É possível usar a linguagem de consulta PromQL de código aberto para consultar suas métricas e emitir alertas sobre elas.

Para obter mais informações sobre como usar as métricas do Prometheus depois de ativá-las, consulte o Guia do usuário do Amazon Managed Service for Prometheus.

Ativar as métricas do Prometheus ao criar um cluster

Importante

Os recursos do Amazon Managed Service for Prometheus estão fora do ciclo de vida do cluster e precisam ser mantidos separados do cluster. Ao excluir seu cluster, certifique-se de excluir também todos os extratores relevantes para interromper os custos aplicáveis. Para obter mais informações, consulte Encontrar e excluir extratores no Guia do usuário do Amazon Managed Service for Prometheus.

Quando você cria um novo cluster, é possível ativar a opção de enviar métricas para o Prometheus. No AWS Management Console, essa opção está disponível na etapa Configurar observabilidade da criação de um novo cluster. Para ter mais informações, consulte Criar um cluster do Amazon EKS.

O Prometheus descobre e coleta métricas do seu cluster por meio de um modelo baseado em pull chamado extração. Os extratores são configurados para coletar dados de sua infraestrutura de cluster e aplicações conteinerizadas.

Quando você ativa a opção de enviar métricas do Prometheus, o Amazon Managed Service for Prometheus fornece um extrator sem agente totalmente gerenciado. Use as seguintes opções de Configuração avançada para personalizar o extrator padrão conforme necessário.

Alias do extrator

(Opcional) Insira um alias exclusivo para o extrator.

Destino

Escolha um espaço de trabalho do Amazon Managed Service for Prometheus. Um espaço de trabalho é um espaço lógico dedicado ao armazenamento e à consulta de métricas do Prometheus. Com esse espaço de trabalho, você poderá visualizar métricas do Prometheus em todas as contas que têm acesso a ele. A opção Criar novo espaço de trabalho instrui o Amazon EKS a criar um espaço de trabalho em seu nome usando o Alias de espaço de trabalho fornecido por você. Com a opção Selecionar espaço de trabalho existente, você pode selecionar um espaço de trabalho existente em uma lista suspensa. Para obter mais informações sobre espaços de trabalho, consulte Gerenciamento de espaços de trabalho no Guia do usuário do Amazon Managed Service for Prometheus.

Acesso ao serviço

Esta seção resume as permissões que você concede ao enviar métricas do Prometheus:

  • Permita que o Amazon Managed Service for Prometheus descreva o cluster do Amazon EKS extraído

  • Permitir gravação remota no espaço de trabalho do Amazon Managed Service para Prometheus

Se o AmazonManagedScraperRole já existir, o extrator o usará. Escolha o link AmazonManagedScraperRole para ver os Detalhes da permissão. Se ainda não houver um AmazonManagedScraperRole, escolha o link de detalhes Visualizar permissão para ver as permissões específicas que você está concedendo enviando métricas do Prometheus.

Subredes

Visualize as sub-redes que o extrator herdará. Se você precisar alterá-los, volte para a etapa cluster Especificar rede da criação do cluster.

Grupos de segurança

Visualize os grupos de segurança que o extrator herdará. Se você precisar alterá-los, volte para a etapa cluster Especificar rede da criação do cluster.

Configuração do extrator

Modifique a configuração do extrator no formato YAML conforme necessário. Para isso, use o formulário ou faça upload de um arquivo YAML substituto. Para obter mais informações, consulte Configuração do extrator no Guia do usuário do Amazon Managed Service for Prometheus.

O Amazon Managed Service for Prometheus se refere ao extrator sem agente criado com o cluster como um coletor gerenciado pela AWS. Para obter mais informações sobre coletores gerenciados pela AWS, consulte coletores gerenciados pela AWS no Guia do usuário do Amazon Managed Service for Prometheus.

Importante

Você deve configurar o aws-auth ConfigMap para conceder permissões no cluster ao extrator. Para obter mais informações, consulte Configurar o cluster do Amazon EKS no Guia do usuário do Amazon Managed Service for Prometheus.

Visualizar detalhes do extrator do Prometheus

Depois de criar um cluster com a opção de métricas do Prometheus ativada, você poderá visualizar os detalhes do seu extrator do Prometheus. Ao visualizar seu cluster no AWS Management Console, escolha a guia Observabilidade. Uma tabela mostra uma lista de extratores para o cluster, incluindo informações como ID, alias, status e data de criação do extrator.

Para ver mais detalhes sobre o extrator, escolha um link de ID do extrator. Por exemplo, você também pode ver a configuração do extrator, o nome do recurso da Amazon (ARN), o URL de gravação remota e as informações de rede. É possível usar o ID do extrator como entrada para as operações de API do Amazon Managed Service for Prometheus como DescribeScraper e DeleteScraper. Também é possível usar a API para criar mais extratores.

Para obter mais informações sobre como usar a API Prometheus, consulte a Referência da API do Amazon Managed Service for Prometheus.

Implantar o Prometheus usando o Helm

Como alternativa, você pode implantar Prometheus no seu cluster com o Helm V3. Se você já instalou o Helm, poderá verificar sua versão com o comando helm version. O Helm é um gerenciador de pacotes para clusters do Kubernetes. Para obter mais informações sobre o Helm e como instalá-lo, consulte Usar o Helm com o Amazon EKS.

Após configurar o Helm para o cluster do Amazon EKS, você poderá usá-lo para implantar o Prometheus com as etapas a seguir.

Para implantar o Prometheus usando o Helm
  1. Crie um namespace Prometheus.

    kubectl create namespace prometheus
  2. Adicione o gráfico do repositório do prometheus-community.

    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
  3. Implante o Prometheus.

    helm upgrade -i prometheus prometheus-community/prometheus \ --namespace prometheus \ --set alertmanager.persistence.storageClass="gp2" \ --set server.persistentVolume.storageClass="gp2"
    nota

    Se você receber o erro Error: failed to download "stable/prometheus" (hint: running `helm repo update` may help) ao executar este comando, execute helm repo update prometheus-community e, em seguida, tente executar o comando da etapa 2 novamente.

    Se você receber o erro Error: rendered manifests contain a resource that already exists ao executar este comando, execute helm uninstall your-release-name -n namespace e, em seguida, tente executar o comando da etapa 3 novamente.

  4. Verifique se todos os Pods no namespace prometheus estão no estado READY.

    kubectl get pods -n prometheus

    Veja um exemplo de saída abaixo.

    NAME READY STATUS RESTARTS AGE prometheus-alertmanager-59b4c8c744-r7bgp 1/2 Running 0 48s prometheus-kube-state-metrics-7cfd87cf99-jkz2f 1/1 Running 0 48s prometheus-node-exporter-jcjqz 1/1 Running 0 48s prometheus-node-exporter-jxv2h 1/1 Running 0 48s prometheus-node-exporter-vbdks 1/1 Running 0 48s prometheus-pushgateway-76c444b68c-82tnw 1/1 Running 0 48s prometheus-server-775957f748-mmht9 1/2 Running 0 48s
  5. Use o kubectl para redirecionamento do console do Prometheus para sua máquina local.

    kubectl --namespace=prometheus port-forward deploy/prometheus-server 9090
  6. Insira http://localhost:9090 em um navegador da Web para visualizar o console do Prometheus.

  7. Escolha uma métrica do menu - insert metric at cursor (- inserir métrica no cursor) e selecione Execute (Executar). Selecione a guia Graph (Gráfico) para mostrar a métrica ao longo do tempo. A imagem a seguir mostra container_memory_usage_bytes ao longo do tempo.

    Prometheus métricas
  8. Na barra de navegação superior, selecione Status e Targets (Destinos).

    Console do Prometheus

    Todos os endpoints do Kubernetes que estão conectados ao Prometheus usando detecção de serviço são exibidos.

Visualizar as métricas brutas do ambiente de gerenciamento

Como alternativa à implantação do Prometheus, o servidor da API do Kubernetes expõe várias métricas que são representadas em um formato do Prometheus. Essas métricas são úteis para monitoramento e análise. Elas são expostas internamente por meio de um endpoint de métricas que se refere à API HTTP /metrics. Assim como outros endpoints, esse endpoint é exposto no plano de controle do Amazon EKS. Esse endpoint é útil principalmente para analisar uma métrica específica. Para analisar métricas ao longo do tempo, recomendamos implantar o Prometheus.

Para visualizar a saída de métricas brutas, use kubectl com o sinalizador --raw. Esse comando permite passar qualquer caminho HTTP e retorna a resposta bruta.

kubectl get --raw /metrics

Veja um exemplo de saída abaixo.

[...]
# HELP rest_client_requests_total Number of HTTP requests, partitioned by status code, method, and host.
# TYPE rest_client_requests_total counter
rest_client_requests_total{code="200",host="127.0.0.1:21362",method="POST"} 4994
rest_client_requests_total{code="200",host="127.0.0.1:443",method="DELETE"} 1
rest_client_requests_total{code="200",host="127.0.0.1:443",method="GET"} 1.326086e+06
rest_client_requests_total{code="200",host="127.0.0.1:443",method="PUT"} 862173
rest_client_requests_total{code="404",host="127.0.0.1:443",method="GET"} 2
rest_client_requests_total{code="409",host="127.0.0.1:443",method="POST"} 3
rest_client_requests_total{code="409",host="127.0.0.1:443",method="PUT"} 8
# HELP ssh_tunnel_open_count Counter of ssh tunnel total open attempts
# TYPE ssh_tunnel_open_count counter
ssh_tunnel_open_count 0
# HELP ssh_tunnel_open_fail_count Counter of ssh tunnel failed open attempts
# TYPE ssh_tunnel_open_fail_count counter
ssh_tunnel_open_fail_count 0

Essa saída bruta retorna textualmente o que o servidor de API expõe. As diferentes métricas são listadas por linha, com cada linha incluindo um nome de métrica, tags e um valor.

metric_name{"tag"="value"[,...]}
            value