As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Usando um coletor AWS gerenciado
Para usar um coletor do Amazon Managed Service for Prometheus, é necessário criar um extrator que descubra e extraia métricas no cluster do Amazon EKS.
-
É possível criar um extrator como parte da criação do cluster do Amazon EKS. Para obter mais informações sobre a criação de um cluster do Amazon EKS, incluindo a criação de um extrator, consulte Criar um cluster do Amazon EKS no Guia do usuário do Amazon EKS.
-
Você pode criar seu próprio raspador, programaticamente com a AWS API ou usando o. AWS CLI
nota
Os espaços de trabalho do Amazon Managed Service for Prometheus criados com chaves gerenciadas pelo cliente não podem AWS usar coletores gerenciados para ingestão.
Um coletor do Amazon Managed Service for Prometheus extrai métricas compatíveis com o Prometheus. Para obter mais informações sobre as métricas compatíveis com o Prometheus, consulte O que são métricas compatíveis com o Prometheus?.
Os tópicos a seguir descrevem como criar, gerenciar e configurar extratores.
Tópicos
Criar um extrator
Um coletor do Amazon Managed Service for Prometheus consiste em um extrator que descobre e coleta métricas de um cluster do Amazon EKS. O Amazon Managed Service for Prometheus gerencia o extrator para você, fornecendo a escalabilidade, a segurança e a confiabilidade necessárias, sem que você precise gerenciar instâncias, agentes ou extratores por conta própria.
Um extrator é criado automaticamente para você ao criar um cluster do Amazon EKS por meio do console do Amazon EKS. No entanto, em algumas situações, talvez você queira criar um extrator por conta própria. Por exemplo, se você quiser adicionar um coletor AWS gerenciado a um cluster Amazon EKS existente ou se quiser alterar a configuração de um coletor existente.
Você pode criar um raspador usando a AWS API ou o. AWS CLI
Há alguns pré-requisitos para a criação de um extrator próprio:
-
É necessário ter um cluster do Amazon EKS.
-
O cluster do Amazon EKS deve ter o controle de acesso ao endpoint do cluster definido para incluir acesso privado. Ele pode incluir o privado e o público, mas deve incluir o privado.
nota
O cluster será associado ao raspador pelo nome de recurso da Amazon (ARN). Se você excluir um cluster e criar um novo com o mesmo nome, o ARN será reutilizado para o novo cluster. Por esse motivo, o raspador tentará coletar métricas para o novo cluster. Você exclui os raspadores separadamente da exclusão do cluster.
Veja a seguir uma lista completa das operações do extrator que você pode usar com a API da AWS :
-
Crie um raspador com a operação da CreateScraperAPI.
-
Liste seus raspadores existentes com a operação da ListScrapersAPI.
-
Exclua um raspador com a operação da DeleteScraperAPI.
-
Obtenha mais detalhes sobre um raspador com a operação da DescribeScraperAPI.
-
Obtenha uma configuração de uso geral para raspadores com a operação da GetDefaultScraperConfigurationAPI.
nota
O cluster do Amazon EKS que você está extraindo deve ser configurado para permitir que o Amazon Managed Service for Prometheus acesse as métricas. O próximo tópico descreve como configurar o cluster.
Erros comuns ao criar raspadores
A seguir estão os problemas mais comuns ao tentar criar um novo raspador.
-
AWS Os recursos necessários não existem. O grupo de segurança, a sub-rede e o cluster Amazon EKS especificados devem existir.
-
Espaço de endereço IP insuficiente. Você deve ter pelo menos um endereço IP disponível em cada sub-rede que você passa para a
CreateScraper
API.
Configurar o cluster do Amazon EKS
O cluster do Amazon EKS deve ser configurado para permitir que o extrator acesse as métricas. Há duas opções para essa configuração:
-
Use as entradas de acesso do Amazon EKS para fornecer automaticamente ao Amazon Managed Service para coletores do Prometheus acesso ao seu cluster.
-
Configure manualmente seu cluster Amazon EKS para coleta gerenciada de métricas.
Os tópicos a seguir descrevem cada um deles com mais detalhes.
Configure o Amazon EKS para acesso por raspador com entradas de acesso
Usar entradas de acesso para o Amazon EKS é a maneira mais fácil de dar ao Amazon Managed Service for Prometheus acesso para extrair métricas do seu cluster.
O cluster Amazon EKS que você está copiando deve ser configurado para permitir a autenticação da API. O modo de autenticação do cluster deve ser definido como API
ouAPI_AND_CONFIG_MAP
. Isso pode ser visualizado no console do Amazon EKS na guia Configuração de acesso dos detalhes do cluster. Para obter mais informações, consulte Permitir que funções do IAM ou usuários acessem o objeto Kubernetes em seu cluster do Amazon EKS no Guia do usuário do Amazon EKS.
Você pode criar o raspador ao criar o cluster ou depois de criar o cluster:
-
Ao criar um cluster — Você pode configurar esse acesso ao criar um cluster Amazon EKS por meio do console do Amazon EKS (siga as instruções para criar um scraper como parte do cluster), e uma política de entrada de acesso será criada automaticamente, dando ao Amazon Managed Service for Prometheus acesso às métricas do cluster.
-
Adicionar após a criação de um cluster — se o seu cluster Amazon EKS já existir, defina o modo de autenticação como
API
ouAPI_AND_CONFIG_MAP
, e todos os raspadores que você criar por meio da API ou CLI do Amazon Managed Service for Prometheus terão automaticamente a política de entrada de acesso correta criada para você, e os raspadores terão acesso ao seu cluster.
Política de entrada de acesso criada
Quando você cria um scraper e permite que o Amazon Managed Service for Prometheus gere uma política de entrada de acesso para você, ele gera a seguinte política. Para obter mais informações sobre entradas de acesso, consulte Permitir que funções do IAM ou usuários acessem o Kubernetes no Guia do usuário do Amazon EKS.
{ "rules": [ { "effect": "allow", "apiGroups": [ "" ], "resources": [ "nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps" ], "verbs": [ "get", "list", "watch" ] }, { "effect": "allow", "apiGroups": [ "extensions", "networking.k8s.io" ], "resources": [ "ingresses/status", "ingresses" ], "verbs": [ "get", "list", "watch" ] }, { "effect": "allow", "nonResourceURLs": [ "/metrics" ], "verbs": [ "get" ] } ] }
Configurando manualmente o Amazon EKS para acesso ao raspador
Se você preferir usar o para controlar o acesso aws-auth ConfigMap
ao seu cluster kubernetes, você ainda pode dar aos raspadores do Amazon Managed Service for Prometheus acesso às suas métricas. As etapas a seguir darão ao Amazon Managed Service for Prometheus acesso às métricas de coleta do seu cluster Amazon EKS.
nota
Para obter mais informações ConfigMap
e acessar entradas, consulte Permitir que funções do IAM ou usuários acessem o Kubernetes no Guia do usuário do Amazon EKS.
Este procedimento usa kubectl
e a AWS CLI. Para obter informações sobre a instalação do kubectl
, consulte Instalar o kubectl no Guia do usuário do Amazon EKS.
Para configurar manualmente seu cluster Amazon EKS para coleta gerenciada de métricas
-
Crie um arquivo denominado
clusterrole-binding.yml
com o seguinte texto:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: aps-collector-role rules: - apiGroups: [""] resources: ["nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps"] verbs: ["describe", "get", "list", "watch"] - apiGroups: ["extensions", "networking.k8s.io"] resources: ["ingresses/status", "ingresses"] verbs: ["describe", "get", "list", "watch"] - nonResourceURLs: ["/metrics"] verbs: ["get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: aps-collector-user-role-binding subjects: - kind: User name: aps-collector-user apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: aps-collector-role apiGroup: rbac.authorization.k8s.io
-
Execute o seguinte comando no cluster:
kubectl apply -f clusterrole-binding.yml
Isso criará a vinculação e a regra do perfil do cluster. Esse exemplo usa
aps-collector-role
como nome do perfil eaps-collector-user
como nome do usuário. -
O comando a seguir fornece informações sobre o extrator com o ID
scraper-id
. Esse é o extrator que você criou usando o comando na seção anterior.aws amp describe-scraper --scraper-id
scraper-id
-
Nos resultados do
describe-scraper
, encontre oroleArn
. Ele terá o seguinte formato:arn:aws:iam::
account-id
:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraper_unique-id
O Amazon EKS exige um formato diferente para esse ARN. É necessário ajustar o formato do ARN retornado para ser usado na próxima etapa. Edite-o para corresponder a este formato:
arn:aws:iam::
account-id
:role/AWSServiceRoleForAmazonPrometheusScraper_unique-id
Por exemplo, este ARN:
arn:aws:iam::111122223333:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7
Deve ser reescrito como:
arn:aws:iam::111122223333:role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7
-
Execute o seguinte comando no cluster, usando o
roleArn
modificado da etapa anterior, bem como o nome e a região do cluster:eksctl create iamidentitymapping --cluster
cluster-name
--regionregion-id
--arnroleArn
--username aps-collector-userIsso permite que o extrator acesse o cluster usando o perfil e o usuário que você criou no arquivo
clusterrole-binding.yml
.
Encontrar e excluir extratores
Você pode usar a AWS API ou a AWS CLI para listar os scrapers em sua conta ou excluí-los.
nota
Verifique se você está usando a versão mais recente do AWS CLI ou SDK. A versão mais recente fornece os recursos e funcionalidades mais recentes, bem como as atualizações de segurança. Como alternativa, use o AWS Cloudshell, que fornece uma experiência sempre na linha de up-to-date comando, automaticamente.
Para listar todos os scrapers em sua conta, use a operação de ListScrapersAPI.
Como alternativa, com o AWS CLI, ligue para:
aws amp list-scrapers
ListScrapers
retorna todos os extratores da conta, por exemplo:
{ "scrapers": [ { "scraperId": "s-1234abcd-56ef-7890-abcd-1234ef567890", "arn": "arn:aws:aps:us-west-2:123456789012:scraper/s-1234abcd-56ef-7890-abcd-1234ef567890", "roleArn": "arn:aws:iam::123456789012:role/aws-service-role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-2931", "status": { "statusCode": "DELETING" }, "createdAt": "2023-10-12T15:22:19.014000-07:00", "lastModifiedAt": "2023-10-12T15:55:43.487000-07:00", "tags": {}, "source": { "eksConfiguration": { "clusterArn": "arn:aws:eks:us-west-2:123456789012:cluster/my-cluster", "securityGroupIds": [ "sg-1234abcd5678ef90" ], "subnetIds": [ "subnet-abcd1234ef567890", "subnet-1234abcd5678ab90" ] } }, "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:us-west-2:123456789012:workspace/ws-1234abcd-5678-ef90-ab12-cdef3456a78" } } } ] }
Para excluir um raspador, localize o scraperId
raspador que você deseja excluir usando a ListScrapers
operação e, em seguida, use a DeleteScraperoperação para excluí-lo.
Como alternativa, com o AWS CLI, ligue para:
aws amp delete-scraper --scraper-id
scraperId
Configuração do extrator
É possível controlar como o extrator descobre e coleta métricas com uma configuração de extrator compatível com o Prometheus. Por exemplo, é possível alterar o intervalo em que as métricas são enviadas para o espaço de trabalho, além de usar a nova rotulagem para reescrever dinamicamente os rótulos de uma métrica. A configuração do extrator é um arquivo YAML que faz parte da definição do extrator.
Quando um novo extrator é criado, você especifica uma configuração fornecendo um arquivo YAML codificado em base64 na chamada de API. É possível baixar um arquivo de configuração de uso geral com a operação GetDefaultScraperConfiguration
na API do Amazon Managed Service for Prometheus.
Para modificar a configuração de um extrator, exclua o extrator e recrie-o com a nova configuração.
Configuração suportada
Para obter informações sobre o formato de configuração do raspador, incluindo uma análise detalhada dos valores possíveis, consulte Configuração<scrape_config>
descrevem as opções mais comumente necessárias.
Como o Amazon EKS é o único serviço compatível, a única configuração de descoberta de serviço (<*_sd_config>
) suportada é a. <kubernetes_sd_config>
A lista completa de seções de configuração permitidas:
-
<global>
-
<scrape_config>
-
<static_config>
-
<relabel_config>
-
<metric_relabel_configs>
-
<kubernetes_sd_config>
As limitações dessas seções são listadas após o arquivo de configuração de amostra.
Arquivo de configuração de exemplo
Veja a seguir um exemplo de arquivo de configuração YAML com um intervalo de extração de 30 segundos.
global: scrape_interval: 30s external_labels: clusterArn: apiserver-test-2 scrape_configs: - job_name: pod_exporter kubernetes_sd_configs: - role: pod - job_name: cadvisor scheme: https authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token kubernetes_sd_configs: - role: node relabel_configs: - action: labelmap regex: __meta_kubernetes_node_label_(.+) - replacement: kubernetes.default.svc:443 target_label: __address__ - source_labels: [__meta_kubernetes_node_name] regex: (.+) target_label: __metrics_path__ replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor # apiserver metrics - scheme: https authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token job_name: kubernetes-apiservers kubernetes_sd_configs: - role: endpoints relabel_configs: - action: keep regex: default;kubernetes;https source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_service_name - __meta_kubernetes_endpoint_port_name # kube proxy metrics - job_name: kube-proxy honor_labels: true kubernetes_sd_configs: - role: pod relabel_configs: - action: keep source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_pod_name separator: '/' regex: 'kube-system/kube-proxy.+' - source_labels: - __address__ action: replace target_label: __address__ regex: (.+?)(\\:\\d+)? replacement: $1:10249
A seguir estão as limitações específicas dos coletores AWS gerenciados:
-
Intervalo de extração: a configuração do extrator não pode especificar um intervalo de extração inferior a 30 segundos.
-
Destinos: os destinos no
static_config
devem ser especificados como endereços IP. -
Autorização — Omitir se nenhuma autorização for necessária. Se for necessária, a autorização deve ser
Bearer
e deve apontar para o arquivo/var/run/secrets/kubernetes.io/serviceaccount/token
. Em outras palavras, se usada, a seção de autorização deve ter a seguinte aparência:authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
nota
type: Bearer
é o padrão, então pode ser omitido.
Solução de problemas de configuração do extrator
Coletores do Amazon Managed Service for Prometheus descobrem e extraem métricas automaticamente. Mas como você pode solucionar problemas quando não vê uma métrica que espera ver no espaço de trabalho do Amazon Managed Service for Prometheus?
A métrica up
é uma ferramenta útil. Para cada endpoint que um coletor do Amazon Managed Service for Prometheus descobre, ele vende automaticamente essa métrica. Há três estados dessa métrica que podem ajudar você a solucionar o que está acontecendo no coletor.
-
up
não está presente: se não houver nenhuma métricaup
presente para um endpoint, isso significa que o coletor não conseguiu encontrar o endpoint.Se você tiver certeza de que o endpoint existe, provavelmente precisará ajustar a configuração de extração. O
relabel_config
de descoberta talvez precise ser ajustado, ou é possível que haja um problema com orole
usado para descoberta. -
up
está presente, mas é sempre 0: seup
estiver presente, mas for 0, o coletor poderá descobrir o endpoint, mas não encontrará nenhuma métrica compatível com o Prometheus.Nesse caso, você pode tentar usar um comando
curl
diretamente no endpoint. Você pode validar se os detalhes estão corretos, por exemplo, o protocolo (http
ouhttps
), o endpoint ou a porta que você está usando. Você também pode verificar se o endpoint está respondendo com uma200
resposta válida e segue o formato do Prometheus. Finalmente, o corpo da resposta não pode ser maior do que o tamanho máximo permitido. (Para ver os limites dos coletores AWS gerenciados, consulte a seção a seguir.) -
up
está presente e é maior que 0: seup
estiver presente e for maior que 0, as métricas serão enviadas para o Amazon Managed Service for Prometheus.Verifique se você está procurando as métricas corretas no Amazon Managed Service for Prometheus (ou no painel alternativo, como Amazon Managed Grafana). É possível usar o curl novamente para verificar os dados esperados no endpoint do
/metrics
. Verifique também se você não excedeu outros limites, como o número de endpoints por extrator. Você pode verificar o número de endpoints de métricas que estão sendo extraídos verificando a contagem deup
métricas, usando.count(up)
Limitações do extrator
Há poucas limitações nos extratores totalmente gerenciados fornecidos pelo Amazon Managed Service for Prometheus.
-
Região: o cluster do EKS, o extrator gerenciado e o espaço de trabalho do Amazon Managed Service for Prometheus devem estar todos na mesma região da AWS .
-
Conta: o cluster do EKS, o extrator gerenciado e o espaço de trabalho do Amazon Managed Service for Prometheus devem estar todos na mesma Conta da AWS.
-
Coletores: é possível ter no máximo 10 extratores do Amazon Managed Service for Prometheus por região e por conta.
nota
É possível solicitar um aumento para esse limite solicitando um aumento de cota
. -
Resposta de métricas: o corpo de uma resposta de qualquer solicitação de endpoint do
/metrics
não pode ter mais de 50 megabytes (MB). -
Endpoints por extrator: um extrator pode extrair no máximo 30.000 endpoints do
/metrics
. -
Intervalo de extração: a configuração do extrator não pode especificar um intervalo de extração inferior a 30 segundos.