Compartilhar via


Personalize a coleta de métricas do Prometheus no seu cluster Kubernetes usando ConfigMap

Quando você habilita a coleção de métricas do Prometheus do cluster do Kubernetes, ele usa uma coleção padrão para determinar quais métricas coletar. Este artigo descreve como você pode personalizar essa coleção para atender aos requisitos de monitoramento específicos.

ConfigMap

O ConfigMap a seguir é usado para definir a configuração de raspagem e outras configurações para o complemento de métricas. Esse ConfigMap não existe por padrão no cluster quando o Managed Prometheus está habilitado.

ConfigMap Descrição
ama-metrics-settings-configmap Inclui as seguintes configurações básicas.
- Alias do cluster. Altera o valor do rótulo cluster em cada métrica ingerida do cluster.
- Habilitar/desabilitar destinos de raspagem padrão.
- Habilitar a extração baseada em anotação de pod por namespace.
- Listas de manutenção de métricas. Controla quais métricas são permitidas de cada destino padrão.
- Raspar intervalos para destinos predefinidos.
– Modo de depuração para identificar problemas de métrica ausentes. Confira a solução de problemas.

Modifique as configurações no ConfigMap com base nas diretrizes abaixo e aplique-as usando o comando a seguir. AMA-Metrics pods os pegarão e reiniciarão em 2 a 3 minutos para aplicar as configurações especificadas.

kubectl apply -f .\ama-metrics-settings-configmap.yaml

Habilitar ou desabilitar os destinos padrão

A configuração de métricas padrão do Prometheus no Azure Monitor lista os destinos e as métricas padrão coletados por padrão do cluster do Kubernetes. Para habilitar/desabilitar a raspagem de qualquer um desses destinos, atualize a configuração do destino na seção default-scrape-settings-enabled do ConfigMap para true ou false.

Por exemplo, para habilitar a extração de coredns, que está desabilitado por padrão, ajuste a configuração da seguinte maneira:

default-scrape-settings-enabled: |-
    kubelet = true
    coredns = true
    cadvisor = true
    kubeproxy = false
    ...

Configurações de intervalo de extração

O intervalo de raspagem padrão para todos os destinos padrão é de 30 segundos. Para modificar esse intervalo para qualquer destino, você pode atualizar a configuração na default-targets-scrape-interval-settings seção do ConfigMap.

Por exemplo, para alterar o intervalo de recorte por kubelet até 60 segundos, atualize a configuração da seguinte maneira:

default-targets-scrape-interval-settings: |-
    kubelet = "60s"
    coredns = "30s"
    cadvisor = "30s"
    ...

Habilitar a extração baseada em anotação de pod

Adicione anotações aos pods em seu cluster para coletar dados dos pods de aplicativos sem criar uma configuração personalizada do Prometheus. Para habilitar a extração de pods com anotações específicas, adicione a expressão regular para o(s) namespace(s) dos pods com anotações que você deseja extrair para podannotationnamespaceregex na seção podannotationnamespaceregex do ConfigMap.

Por exemplo, a configuração a seguir extrai pods com anotações somente nos namespaces kube-system e my-namespace:

pod-annotation-based-scraping: |-
    podannotationnamespaceregex = "kube-system|my-namespace"

Adicione anotações à metadata seção do ConfigMap. prometheus.io/scrape: "true" é necessário para que o pod seja raspado, enquanto prometheus.io/path e prometheus.io/port indicam o caminho e a porta em que as métricas estão hospedadas no pod. O exemplo a seguir define anotações para um pod que está hospedando métricas em <pod IP>:8080/metrics.

metadata:   
  annotations:
    prometheus.io/scrape: 'true'
    prometheus.io/path: '/metrics'
    prometheus.io/port: '8080'

Aviso

Extrair as anotações de pod de muitos namespaces pode gerar um volume muito grande de métricas, dependendo do número de pods que tenham anotações.

Personalizar a métricas coletadas pelos destinos padrão

Somente métricas mínimas são coletadas para destinos padrão, conforme descrito no perfil de ingestão mínima para métricas do Prometheus no Azure Monitor. Para coletar todas as métricas de destinos padrão, defina minimalingestionprofile para false na seção default-targets-metrics-keep-list do ConfigMap.

minimalingestionprofile = false

Como alternativa, você pode adicionar métricas a serem coletadas para qualquer destino padrão atualizando suas listas de manutenção em default-targets-metrics-keep-list.

Por exemplo, kubelet é a configuração de filtragem de métrica para o kubelet de destino padrão. Use o script a seguir para filtrar as métricas coletadas para os destinos padrão usando a filtragem baseada em regex.

kubelet = "metricX|metricY"
apiserver = "mymetric.*"

Observação

Se você usar aspas ou barras invertidas no regex, precisará escapar delas usando uma barra invertida, como nos exemplos "test\'smetric\"s\"" e testbackslash\\*.

Se você quiser personalizar ainda mais os destinos padrão para alterar propriedades como frequência de coleção ou rótulos, desabilite esse destino definindo seu valor como false. Em seguida, crie um trabalho personalizado para o destino, conforme descrito em Personalizar a extração de métricas do Prometheus no Azure Monitor.

Alias de cluster

A última parte da ID de recurso do cluster é acrescentada a cada série temporal para identificar exclusivamente os dados. Por exemplo, se a ID do recurso for /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-name/providers/Microsoft.ContainerService/managedClusters/myclustername, o rótulo do cluster será myclustername. Para substituir esse rótulo de cluster, atualize a configuração cluster_alias em prometheus-collector-settings.

Observação

Somente caracteres alfanuméricos são permitidos. Todos os outros caracteres são substituídos por _. Caso esteja habilitando regras de gravação e alerta, use o nome do alias do cluster no parâmetro de nome do cluster do modelo de integração de regra para que as regras funcionem.

  prometheus-collector-settings: |-
    cluster_alias = ""

Modo de depuração

Para visualizar todas as métricas que estão sendo coletadas para fins de depuração, o agente de complemento de métricas pode ser configurado para execução no modo de depuração atualizando a configuração enabled para true na configuração debug-mode.

Aviso

Esse modo pode afetar o desempenho e só deve ser habilitado por um curto período de tempo para fins de depuração.

Kube-state-metrics

Para substituir os parâmetros de inicialização padrão (recursos, metric-labels-allowlist e metric-annotations-allowlist) da implantação kube-state-metrics (ama-metrics-ksm) que é instalada como parte da ativação do Prometheus Gerenciado, use ama-metrics-settings-configmap.

As configurações do configmap para labels_allow_list e annotations_allow_list substituem os parâmetros definidos durante a configuração inicial para ksm-metrics-labels-allow-list e ksm-metrics-annotations-allow-list

As configurações no configmap para recursos substituem os coletores padrão definidos para a implantação do ama-metrics-ksm

Observe que o seguinte é uma configuração de yaml –

  ksm-config: |-
    resources: 
      secrets: {}
      configmaps: {}
    labels_allow_list: # object name and label names
      pods: 
      - app8
    annotations_allow_list: # object name and annotation names
      namespaces:
      - kube-system
      - default

Observação

Personalizar esses valores pode afetar os dados padrão coletados como parte do trabalho kube-state-metrics e pode resultar em determinados painéis não carregando dados.

Excluir a seção inteira (ksm-config) no configmap de configuração para que a implantação ama-metrics-ksm seja recriada. Isso pode ser feito excluindo o pod ama-metrics-ksm ou executando - kubectl rollout restart deployment/ama-metrics -n kube-system

A recomendação é personalizar apenas esses 3 parâmetros quando necessário. Definir parâmetros adicionais como substituições é um cenário não suportado - embora seja possível, deve ser usado com cuidado.

Documentação do OSS para argumentos da CLI do kube-state-metrics

Próximas etapas

Configurar alertas em métricas do Prometheus
Consulta de métricas do Prometheus
Saiba mais sobre a coleta de métricas do Prometheus