Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Além dos alvos de captura padrão que o agente do Prometheus do Azure Monitor executa por padrão, use as etapas a seguir para fornecer mais configurações de captura ao agente utilizando 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, as tarefas de coletas definidas nele são executadas a partir do pod de réplica de métricas do Azure Monitor que está rodando 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 as tarefas 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 scrape 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 extraçã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 examinar os pods de réplica ama-metrics
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 do Azure Monitor metrics Linux DaemonSet é reiniciado em 30 a 60 segundos para aplicar a nova configuração. Para verificar se há algum problema com a validação, o processamento ou a mesclagem da configuração, você pode examinar os pods do deamonset do Linux ama-metrics-node
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 do Windows DaemonSet de métricas do Azure Monitor é reiniciado em 30 a 60 segundos para aplicar a nova configuração. Para verificar se há algum problema com a validação, o processamento ou a mesclagem da configuração, você pode examinar os pods deamonset do Windows ama-metrics-win-node
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, o processamento ou a mesclagem da configuração, você pode examinar os pods ama-metrics
.
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 tarefas de extração personalizadas 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']