Criar e validar o arquivo de configuração personalizado para métricas do Prometheus no Azure Monitor
Além dos destinos de extração padrão que o agente do Prometheus do Azure Monitor extrai por padrão, use as etapas a seguir para fornecer mais configurações de extração ao agente usando um configmap. O agente do Prometheus do Azure Monitor não entende nem processa os CRDs do operador para configuração de extração, mas usa a configuração nativa do Prometheus, conforme definido na configuração do Prometheus.
Os três configmaps que podem ser usados para raspagem de destino personalizado são:
- ama-metrics-prometheus-config (Recomendado) – Quando um configmap com esse nome é criado, os trabalhos de raspagem definidos nele são executados no pod de réplica de métricas do Azure Monitor sendo executados no cluster.
- ama-metrics-prometheus-config-node (Avançado) – Quando um configmap com esse nome é criado, os trabalhos de raspagem definidos nele são executados a partir de cada pod DaemonSet do Linux sendo executados no cluster. Para obter mais informações, confira Configuração Avançada.
- ama-metrics-prometheus-config-node-windows (Avançado) – Quando um configmap com esse nome é criado, os trabalhos de raspagem definidos nele são executados de cada DaemonSet do Windows. Para obter mais informações, confira Configuração Avançada.
Criar arquivo de configuração do Prometheus
Uma maneira mais fácil de criar os trabalhos de configuração de extração do Prometheus:
- Etapa:1 use um arquivo de configuração (yaml) para criar/definir os trabalhos de extração
- Etapa:2 validar o arquivo de configuração de extração usando uma ferramenta personalizada (conforme especificado neste artigo) e converter esse arquivo de configuração em um configmap
- Etapa:3 implantar o arquivo de configuração de extração como um configmap para seus clusters.
Dessa maneira, é mais fácil criar a configuração yaml (que é extremamente sensível ao espaço) e não adicionar espaços não intencionais criando diretamente a configuração de raspagem dentro do mapa de configurações.
Crie um arquivo de configuração de extração do Prometheus chamado prometheus-config
. Para obter mais informações, confira as dicas e exemplos de configuração, que fornecem mais detalhes sobre como criar a configuração de extração para o Prometheus. Você também pode ver a referência de configuração de extração do Prometheus.io. Seu arquivo de configuração lista as configurações de extrção na seção scrape_configs
e pode, opcionalmente, usar a seção global para definir as configurações globais scrape_interval
, scrape_timeout
e external_labels
.
Dica
As alterações na seção global afetarão as configurações padrão e a configuração personalizada.
Aqui está um exemplo de arquivo de configuração de extração do Prometheus:
global:
scrape_interval: 30s
scrape_configs:
- job_name: my_static_config
scrape_interval: 60s
static_configs:
- targets: ['my-static-service.svc.cluster.local:1234']
- job_name: prometheus_example_app
scheme: http
kubernetes_sd_configs:
- role: service
relabel_configs:
- source_labels: [__meta_kubernetes_service_name]
action: keep
regex: "prometheus-example-service"
Validar o arquivo de configuração de extração
O agente usa uma ferramenta promconfigvalidator
personalizada para validar a configuração do Prometheus fornecida a ele por meio do configmap. Se a configuração não for válida, a configuração personalizada fornecida será rejeitada pelo agente do complemento. Depois de ter o arquivo de configuração do Prometheus, você pode usar opcionalmente a ferramenta promconfigvalidator
para validar a configuração, antes de criar um configmap que será consumido pelo agente.
A ferramenta promconfigvalidator
é enviada dentro do(s) pod(s) adicional(is) de métricas do Azure Monitor. Você pode usar qualquer um dos pods ama-metrics-node-*
no namespace kube-system
do cluster para baixar a ferramenta para validação. Use kubectl cp
para baixar a ferramenta e sua configuração:
for podname in $(kubectl get pods -l rsName=ama-metrics -n=kube-system -o json | jq -r '.items[].metadata.name'); do kubectl cp -n=kube-system "${podname}":/opt/promconfigvalidator ./promconfigvalidator; kubectl cp -n=kube-system "${podname}":/opt/microsoft/otelcollector/collector-config-template.yml ./collector-config-template.yml; chmod 500 promconfigvalidator; done
Depois de copiar o executável e o yaml, localize o caminho do arquivo de configuração do Prometheus que você criou. Em seguida, substitua <config path>
no comando e execute o validador com o comando:
./promconfigvalidator/promconfigvalidator --config "<config path>" --otelTemplate "./promconfigvalidator/collector-config-template.yml"
Executar o validador gera o arquivo de configuração mesclado merged-otel-config.yaml
, se nenhum caminho for fornecido com o parâmetro opcional output
. Não use esse arquivo mesclado gerado automaticamente como configuração para o agente coletor de métricas, pois ele é usado apenas para fins de validação e depuração de ferramentas.
Implantar o arquivo de configuração como um configmap
Seu arquivo de configuração personalizado do Prometheus é consumido como um campo denominado prometheus-config
dentro do complemento de métricas do(a) configmap(s) ama-metrics-prometheus-config
(ou) ama-metrics-prometheus-config-node
(ou) ama-metrics-prometheus-config-node-windows
no namespace kube-system
. Você pode criar um configmap a partir do arquivo de configuração de extração que você criou acima, renomeando o arquivo de configuração do Prometheus para prometheus-config
(sem a extensão do arquivo) e executando um ou mais dos seguintes comandos, dependendo do configmap que você deseja criar para sua configuração personalizada do(s) trabalho(s) de extração.
Ex: para criar o configmap a ser usado pelo replicsset
kubectl create configmap ama-metrics-prometheus-config --from-file=prometheus-config -n kube-system
Isso cria um configmap nomeado ama-metrics-prometheus-config
no namespace kube-system
. O pod de réplica de métricas do Azure Monitor é reiniciado em 30 a 60 segundos para aplicar a nova configuração. Para ver se há algum problema com a validação, o processamento ou a mesclagem da configuração, você pode ver os ama-metrics
pods de réplica
Ex: para criar o configmap a ser usado pelo DaemonSet do Linux
kubectl create configmap ama-metrics-prometheus-config-node --from-file=prometheus-config -n kube-system
Isso cria um configmap nomeado ama-metrics-prometheus-config-node
no namespace kube-system
. Cada pod DaemonSet do Linux de métricas do Azure Monitor é reiniciado em 30 a 60 segundos para aplicar a nova configuração. Para ver se há algum problema com a validação, processamento ou mesclagem da configuração, você pode ver os pods deamonset do ama-metrics-node
linux
Ex; para criar o configmap a ser usado pelo DaemonSet do Windows
kubectl create configmap ama-metrics-prometheus-config-node-windows --from-file=prometheus-config -n kube-system
Isso cria um configmap nomeado ama-metrics-prometheus-config-node-windows
no namespace kube-system
. Cada pod DaemonSet do Windows de métricas do Azure Monitor é reiniciado em 30 a 60 segundos para aplicar a nova configuração. Para ver se há algum problema com a validação, processamento ou mesclagem da configuração, você pode ver os pods deamonset do ama-metrics-win-node
windows
Verifique se o arquivo de configuração do Prometheus se chama prometheus-config
, antes de executar o comando a seguir, já que o nome do arquivo é usado como o nome da configuração do configmap.
Isso cria um configmap nomeado ama-metrics-prometheus-config
no namespace kube-system
. O pod de métricas do Azure Monitor é reiniciado para aplicar a nova configuração. Para ver se há algum problema com a validação, processamento ou mesclagem da configuração, você pode ver os ama-metrics
pods.
Veja um exemplo do configmap ama-metrics-prometheus-config
aqui.
Solução de problemas
Se você criou com sucesso o configmap (ama-metrics-prometheus-config ou ama-metrics-prometheus-config-node) no namespace kube-system e ainda não vê os destinos personalizados sendo extraídos, verifique se há erros nos logs do pod de réplica para ama-metrics-prometheus-config configmap ou os logos do pod DaemonSet para o configmap ama-metrics-prometheus-config-node) usando os logs do kubect e verifique se não há erros na seção Iniciar a Configuração da Mesclagem Padrão e Personalizada do Prometheus com o prefixo prometheus-config-mergerger
Observação
Configuração avançada: configurar os trabalhos de extração personalizados do Prometheus para o DaemonSet
O pod de réplica ama-metrics
consome a configuração personalizada do Prometheus e extrair os destinos especificados. Para um cluster com um grande número de nós e pods e um grande volume de métricas para extrair, alguns dos destinos de extração personalizados aplicáveis podem ser descarregados do único pod ama-metrics
de Replica para o pod ama-metrics
DaemonSet.
O ama-metrics-prometheus-config-node configmap é semelhante ao configmap do conjunto de réplicas e pode ser criado para ter configurações de extração estática em cada nó. A configuração de raspagem deve ter como destino apenas um único nó e não deve usar anotações de descoberta/pod de serviço. Caso contrário, cada nó tentará coletar todos os destinos e fazer muitas chamadas para o servidor de API do Kubernetes.
Os destinos de extração personalizados podem seguir o mesmo formato usando static_configs
com destinos e usando a variável de ambiente $NODE_IP
e especificando a porta a ser extraída. Cada pod do DaemonSet pega a configuração, extrai as métricas e as envia para esse nó.
Exemplo:- A seguinte configuração node-exporter
é um dos destinos padrão para os pods do DaemonSet. Ele usa a variável de ambiente $NODE_IP
, que já está definida para cada contêiner de complemento ama-metrics
para direcionar uma porta específica no nó.
- job_name: nodesample
scrape_interval: 30s
scheme: http
metrics_path: /metrics
relabel_configs:
- source_labels: [__metrics_path__]
regex: (.*)
target_label: metrics_path
- source_labels: [__address__]
replacement: '$NODE_NAME'
target_label: instance
static_configs:
- targets: ['$NODE_IP:9100']