Compartilhar via


Criar e validar arquivo de configuração personalizado para métricas do Prometheus no Azure Monitor

Além dos destinos de raspagem padrão que o agente do Azure Monitor Prometheus raspa por padrão, use as etapas a seguir para fornecer mais configuração de raspagem ao agente usando um configmap. O agente do Azure Monitor Prometheus não entende nem processa CRDs do operador para configuração de raspagem, 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 personalizada são:

  • ama-metrics-prometheus-config (Recomendado) - Quando um configmap com esse nome é criado, os trabalhos de raspagem definidos nele são executados a partir do pod de réplica de métricas do monitor do Azure em execução no cluster.
  • ama-metrics-prometheus-config-node (Avançado) - Quando um configmap com esse nome é criado, os trabalhos de scrape definidos nele são executados a partir de cada pod do Linux DaemonSet em execução no cluster. Para obter mais informações, consulte Configuração avançada.
  • ama-metrics-prometheus-config-node-windows (Avançado) - Quando um configmap com esse nome é criado, os trabalhos de scrape definidos nele são executados a partir de cada DaemonSet do Windows . Para obter mais informações, consulte Configuração avançada.

Criar arquivo de configuração do Prometheus

Uma maneira mais fácil de criar trabalhos de configuração de raspagem do Prometheus:

  • Passo:1 Use um arquivo de configuração (yaml) para criar/definir trabalhos de raspagem
  • Passo:2 Valide o arquivo de configuração de raspagem usando uma ferramenta personalizada (conforme especificado neste artigo) e, em seguida, converta esse arquivo de configuração para configmap
  • Passo:3 Implante o arquivo de configuração de raspagem como configmap em seus clusters.

Fazer isso é mais fácil de criar yaml config (que é extremamente sensível ao espaço), e não adicionar espaços não intencionais criando diretamente scrape config dentro do mapa de configuração.

Crie um arquivo de configuração de raspagem do Prometheus chamado prometheus-config. Para obter mais informações, consulte dicas de configuração e exemplos que fornecem mais detalhes sobre a criação de configuração de raspagem para Prometheus. Você também pode consultar Prometheus.io referência de configuração de raspagem. Seu arquivo de configuração lista as configurações de raspagem na seção de seção scrape_configs e, opcionalmente, pode usar a seção global para definir o global scrape_interval, scrape_timeout, e external_labels.

Gorjeta

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 raspagem 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 raspagem

O agente usa uma ferramenta personalizada promconfigvalidator para validar a configuração do Prometheus dada a ele através do configmap. Se a configuração não for válida, a configuração personalizada fornecida será rejeitada pelo agente addon. Depois de ter seu arquivo de configuração Prometheus, você pode , opcionalmente , usar a promconfigvalidator ferramenta para validar sua configuração antes de criar um configmap que o agente consome.

A promconfigvalidator ferramenta é fornecida dentro do(s) pod(s) de complemento de métricas do Azure Monitor. Você pode usar qualquer um ama-metrics-node-* dos pods no kube-system namespace em seu 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> o comando e execute o validador com o comando:

./promconfigvalidator/promconfigvalidator --config "<config path>" --otelTemplate "./promconfigvalidator/collector-config-template.yml"

A execução do validador gera o arquivo merged-otel-config.yaml de configuração mesclado 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 do coletor de métricas, pois ele é usado apenas para fins de validação e depuração de ferramentas.

Implantar arquivo de configuração como configmap

Seu arquivo de configuração personalizado do Prometheus é consumido kube-system como um campo chamado prometheus-config dentro do addon metrics configmap(s) ama-metrics-prometheus-config (ou) ama-metrics-prometheus-config-node (ou) ama-metrics-prometheus-config-node-windows no namespace. Você pode criar um configmap a partir do arquivo de configuração de raspagem criado acima, renomeando seu arquivo de configuração Prometheus para prometheus-config (sem extensão de arquivo) e executando um ou mais dos seguintes comandos, dependendo de qual configmap você deseja criar para o(s) seu(s) trabalho(s) de raspagem personalizado(s).

Ex;- para criar configmap para ser usado por 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 kube-system namespace. 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, processamento ou mesclagem de configuração, você pode examinar os ama-metrics pods de réplica

Ex;- para criar configmap para ser usado pelo linux DaemonSet

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 kube-system namespace. Todas as métricas do Azure Monitor Linux DaemonSet pod reinicia em 30-60 segundos para aplicar a nova configuração. Para ver se há algum problema com a validação, processamento ou fusão de configuração, você pode olhar para os ama-metrics-node pods deamonset do linux

Ex;- para criar configmap para ser usado pelo Windows DaemonSet

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 kube-system namespace. Todas as métricas do Azure Monitor do Windows DaemonSet pod são reiniciadas em 30 a 60 segundos para aplicar a nova configuração. Para ver se há algum problema com a validação, processamento ou mesclagem de configuração, você pode olhar para os ama-metrics-win-node pods deamonset do Windows

Certifique-se de que o arquivo de configuração Prometheus é nomeado prometheus-config antes de executar o seguinte comando, pois o nome do arquivo é usado como o nome da configuração configmap.

Isso cria um configmap nomeado ama-metrics-prometheus-config no kube-system namespace. 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 de configuração, você pode olhar para os ama-metrics pods.

Um exemplo do ama-metrics-prometheus-config configmap está aqui.

Resolução de Problemas

Se você criou com êxito 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 raspados, verifique se há erros nos logs de pod de réplica para ama-metrics-prometheus-config configmap ou DaemonSet pod logs para ama-metrics-prometheus-config-node configmap) usando logs kubectl e certifique-se de que não há erros no Comece a mesclar a seção Default e Custom Prometheus Config com o prefixo prometheus-config-merger

Nota

Configuração avançada: configurar trabalhos de raspagem personalizados do Prometheus para o DaemonSet

O ama-metrics pod de réplica consome a configuração personalizada do Prometheus e raspa os destinos especificados. Para um cluster com um grande número de nós e pods e um grande volume de métricas para raspar, alguns dos alvos de raspagem personalizados aplicáveis podem ser descarregados do único ama-metrics pod de réplica para o ama-metrics pod 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 raspagem estáticas em cada nó. A configuração de raspagem deve ter como alvo apenas um único nó e não deve usar anotações de descoberta/pod de serviço. Caso contrário, cada nó tenta raspar todos os destinos e faz muitas chamadas para o servidor de API do Kubernetes.

Os destinos de raspagem personalizados podem seguir o mesmo formato usando static_configs com destinos e usando a $NODE_IP variável de ambiente e especificando a porta a ser raspada. Cada pod do DaemonSet pega a configuração, raspa as métricas e as envia para esse nó.

Exemplo:- A configuração a seguir node-exporter é um dos destinos padrão para os pods DaemonSet. Ele usa a $NODE_IP variável de ambiente, que já está definida para cada ama-metrics contêiner de complemento 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']

Próximos passos