Solucionar problemas de métricas do Prometheus em clusters do Amazon EKS e do Kubernetes - Amazon CloudWatch

Solucionar problemas de métricas do Prometheus em clusters do Amazon EKS e do Kubernetes

Esta seção fornece ajuda para solucionar problemas de configuração de métricas do Prometheus em clusters do Amazon EKS e do Kubernetes.

Etapas gerais de solução de problemas no Amazon EKS

Insira o comando a seguir para confirmar se o atendente do CloudWatch está em execução.

kubectl get pod -n amazon-cloudwatch

A saída deve incluir uma linha com cwagent-prometheus-id na coluna NAME, e Running no campo STATUS column.

Para exibir detalhes sobre o pod em execução, insira o comando a seguir. Substitua o pod-name pelo nome completo do pod que tem o nome que começa com cw-agent-prometheus.

kubectl describe pod pod-name -n amazon-cloudwatch

Se você tiver o Container Insights Container Insights instalado, poderá usar o CloudWatch Logs Insights para consultar os logs do atendente do CloudWatch que coleta as métricas do Prometheus.

Como consultar os logs do aplicativo
  1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.

  2. No painel de navegação, em Logs, escolha CloudWatch Logs Insights.

  3. Selecione o grupo de logs para os logs do aplicativo, /aws/containerinsights/cluster-name/application

  4. Substitua a expressão de consulta de pesquisa pela seguinte consulta e escolha Run query (Executar consulta)

    fields ispresent(kubernetes.pod_name) as haskubernetes_pod_name, stream, kubernetes.pod_name, log | filter haskubernetes_pod_name and kubernetes.pod_name like /cwagent-prometheus

Você também pode confirmar se as métricas e os metadados do Prometheus estão sendo ingeridos como eventos do CloudWatch Logs.

Como confirmar se os dados do Prometheus estão sendo ingeridos
  1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.

  2. No painel de navegação, em Logs, escolha CloudWatch Logs Insights.

  3. Selecione /aws/containerinsights/cluster-name/prometheus

  4. Substitua a expressão de consulta de pesquisa pela seguinte consulta e escolha Run query (Executar consulta)

    fields @timestamp, @message | sort @timestamp desc | limit 20

Registrar as métricas descartadas do Prometheus

Essa versão não coleta métricas do Prometheus do tipo histograma. Você pode usar o atendente do CloudWatch para verificar se alguma métrica do Prometheus está sendo descartada por ser de uma métrica de histograma. Também é possível registrar em log uma lista das primeiras 500 métricas do Prometheus que forem descartadas e não enviadas ao CloudWatch por serem métricas de histograma.

Para ver se alguma métrica está sendo descartada, insira o comando a seguir:

kubectl logs -l "app=cwagent-prometheus" -n amazon-cloudwatch --tail=-1

Se alguma métrica estiver sendo descartada, você verá as seguintes linhas no arquivo /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log.

I! Drop Prometheus metrics with unsupported types. Only Gauge, Counter and Summary are supported. I! Please enable CWAgent debug mode to view the first 500 dropped metrics

Se você vir essas linhas e quiser saber quais métricas estão sendo descartadas, siga as etapas a seguir.

Como registrar em log uma lista de métricas descartadas do Prometheus
  1. Altere o atendente do CloudWatch para o modo de depuração adicionando as seguintes linhas em negrito ao arquivo prometheus-eks.yaml ou prometheus-k8s.yaml e salve o arquivo.

    { "agent": { "debug": true },

    Esta seção do arquivo deve ser semelhante ao seguinte:

    cwagentconfig.json: | { "agent": { "debug": true }, "logs": { "metrics_collected": {
  2. Reinstale o atendente do CloudWatch para habilitar o modo de depuração inserindo os comandos a seguir:

    kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch kubectl apply -f prometheus.yaml

    As métricas descartadas são registradas no pod do atendente do CloudWatch.

  3. Para recuperar os logs do pod do atendente do CloudWatch, insira o comando a seguir:

    kubectl logs -l "app=cwagent-prometheus" -n amazon-cloudwatch --tail=-1

    Ou, se você tiver a geração de logs do Fluentd do Container Insights instalada, os logs também serão salvos no grupo de logs do CloudWatch Logs /aws/containerinsights/cluster_name/application.

    Para consultar esses logs, você pode seguir as etapas para consultar os logs do aplicativo em Etapas gerais de solução de problemas no Amazon EKS.

Onde estão as métricas do Prometheus ingeridas como eventos de log do CloudWatch Logs?

O atendente do CloudWatch cria um fluxo de logs para cada configuração do trabalho de extração do Prometheus. Por exemplo, nos arquivos prometheus-eks.yaml e prometheus-k8s.yaml, a linha job_name: 'kubernetes-pod-appmesh-envoy' extrai conteúdo de métricas do App Mesh. O alvo do Prometheus é definido como kubernetes-pod-appmesh-envoy. Portanto, todas as métricas do App Mesh Prometheus são ingeridas como eventos do CloudWatch Logs no fluxo de logs kubernetes-pod-appmesh-envoy no grupo de logs chamado /aws/containerinsights/cluster-name/Prometheus.

Não visualizo métricas do Amazon EKS ou do Kubernetes Prometheus nas métricas do CloudWatch

Primeiro, verifique se as métricas do Prometheus são ingeridas como eventos de log no grupo de logs /aws/containerinsights/cluster-name/Prometheus. Use as informações em Onde estão as métricas do Prometheus ingeridas como eventos de log do CloudWatch Logs? para ajudar a verificar o fluxo de logs de destino. Se o fluxo de logs não foi criado ou não houver novos eventos de log no fluxo de logs, confira o seguinte:

  • Verifique se os endpoints do exportador de métricas do Prometheus estão configurados corretamente

  • Verifique se as configurações de extração de conteúdo do Prometheus na seção config map: cwagent-prometheus do arquivo YAML do atendente do CloudWatch estão corretas. A configuração deve ser a mesma de um arquivo de configuração do Prometheus. Para obter mais informações, consulte <scrape_config> na documentação do Prometheus.

Se as métricas do Prometheus foram corretamente ingeridas como eventos de log, verifique se as configurações de formato de métrica incorporadas foram adicionadas aos eventos de log para gerar as métricas do CloudWatch.

"CloudWatchMetrics":[ { "Metrics":[ { "Name":"envoy_http_downstream_cx_destroy_remote_active_rq" } ], "Dimensions":[ [ "ClusterName", "Namespace" ] ], "Namespace":"ContainerInsights/Prometheus" } ],

Para obter mais informações sobre o formato de métrica incorporado, consulte Especificação: formato de métricas incorporadas .

Se não houver nenhum formato de métrica incorporado nos eventos de log, verifique se a seção metric_declaration está configurada corretamente na seção config map: prometheus-cwagentconfig do arquivo YAML de instalação do atendente do CloudWatch. Para ter mais informações, consulte Tutorial para adicionar um novo destino de extração do Prometheus: métricas do servidor de API do Prometheus.