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']