Condividi tramite


Creare e convalidare un file di configurazione personalizzato per le metriche Prometheus in Monitoraggio di Azure

Oltre alle destinazioni di scorporo predefinite che l'agente Prometheus di Monitoraggio di Azure scorpora per impostazione predefinita, usare la procedura seguente per fornire più configurazione di scorporo all'agente usando una configmap. L'agente Prometheus di Monitoraggio di Azure non riconosce o elabora i CRD degli operatori per la configurazione di scorporo, ma utilizza invece la configurazione nativa di Prometheus come definito in Configurazione di Prometheus.

Le tre configmap che possono essere usate per lo scorporo di destinazione personalizzato sono:

  • ama-metrics-prometheus-config (scelta consigliata): quando viene creato un file configmap con questo nome, i processi di scorporo definiti vengono eseguiti dal pod di replica delle metriche di Monitoraggio di Azure in esecuzione nel cluster.
  • ama-metrics-prometheus-config-node (avanzate): quando viene creato un file configmap con questo nome, i processi di scorporo definiti vengono eseguiti da ogni pod DaemonSet Linux in esecuzione nel cluster. Per altre informazioni, vedere Configurazioni avanzate.
  • ama-metrics-prometheus-config-node-windows (avanzate): quando viene creato un file configmap con questo nome, i processi di scorporo definiti vengono eseguiti da ogni DaemonSet Windows. Per altre informazioni, vedere Configurazioni avanzate.

Creare il file di configurazione di Prometheus

Un modo più semplice per creare processi di configurazione di scorporo di Prometheus:

  • Passaggio:1 usare un file di configurazione (yaml) per creare/definire processi di scorporo
  • Passaggio:2 convalidare il file di configurazione di scorporo usando uno strumento personalizzato (come specificato in questo articolo) e quindi convertire il file di configurazione in configmap
  • Passaggio:3 distribuire il file di configurazione di scorporo come configmap nei cluster.

In questo modo è più semplice creare la configurazione yaml (estremamente sensibile allo spazio) e non aggiungere spazi indesiderati creando direttamente la configurazione di scorporo all'interno della mappa di configurazione.

Creare un file di configurazione di scorporo di Prometheus denominato prometheus-config. Per altre informazioni, vedere suggerimenti ed esempi di configurazione che offrono altri dettagli sulla creazione della configurazione di scorporo di Prometheus. Inoltre è possibile fare riferimento alla guida di configurazione di scorporo di Prometheus. Il file di configurazione elenca le configurazioni di scorporo nella sezione scrape_configs e può facoltativamente usare la sezione globale per l’impostazione globale di scrape_interval, scrape_timeout e external_labels.

Suggerimento

Le modifiche apportate alla sezione globale influiranno sulle configurazioni predefinite e sulla configurazione personalizzata.

Di seguito è riportato un file di configurazione di scorporo di Prometheus di esempio:

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"

Convalidare il file di configurazione di scorporo

L'agente usa uno strumento personalizzato promconfigvalidator per convalidare la configurazione di Prometheus assegnata tramite configmap. Se la configurazione non è valida, la configurazione personalizzata specificata viene rifiutata dall'agente addon. Dopo aver creato il file di configurazione di Prometheus, è possibile usare facoltativamente lo strumento promconfigvalidator per convalidare la configurazione prima di creare una configmap utilizzata dall'agente.

Lo strumento promconfigvalidator viene fornito all'interno dei pod di componenti aggiuntivi delle metriche di Monitoraggio di Azure. È possibile usare uno qualsiasi dei pod ama-metrics-node-* nello spazio dei nomi kube-system nel cluster per scaricare lo strumento per la convalida. Usare kubectl cp per scaricare lo strumento e la relativa configurazione:

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

Dopo aver copiato il file eseguibile e yaml, individuare il percorso del file di configurazione Prometheus creato. Quindi sostituire <config path> nel comando ed eseguire il validator con il comando:

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

L'esecuzione del validator genera il file di configurazione unito merged-otel-config.yaml, se non viene fornito alcun percorso con il parametro facoltativo output. Non utilizzare questo file unito e generato automaticamente come configurazione per l'agente di raccolta delle metriche, poiché viene utilizzato solo per scopi di debug e convalida dello strumento.

Distribuire il file di configurazione come configmap

Il file di configurazione di Prometheus personalizzato viene utilizzato come campo denominato prometheus-config all'interno di configmap di componenti aggiuntivi metriche ama-metrics-prometheus-config (o) ama-metrics-prometheus-config-node (o) ama-metrics-prometheus-config-node-windows nello spazio dei nomi kube-system. È possibile creare una configmap dal file di configurazione di scorporo creato in precedenza, rinominando il file di configurazione di Prometheus in prometheus-config (senza estensione di file) ed eseguendo uno o più dei comandi seguenti, a seconda della configmap da creare per i processi di scorporo personalizzati.

Ad esempio: creare configmap da usare da replicsset

kubectl create configmap ama-metrics-prometheus-config --from-file=prometheus-config -n kube-system

Verrà creata una configmap denominata ama-metrics-prometheus-config nello spazio dei nomi kube-system. Il pod di replica delle metriche di Monitoraggio di Azure viene riavviato in 30-60 secondi per applicare la nuova configurazione. Per verificare se sono presenti problemi di convalida, elaborazione o unione della configurazione, è possibile esaminare i pod di replica ama-metrics

Ad esempio: creare configmap da usare per DaemonSet linux

kubectl create configmap ama-metrics-prometheus-config-node --from-file=prometheus-config -n kube-system

Verrà creata una configmap denominata ama-metrics-prometheus-config-node nello spazio dei nomi kube-system. Tutte le metriche di Monitoraggio di Azure riavviano il pod DaemonSet Linux in 30-60 secondi per applicare la nuova configurazione. Per verificare se sono presenti problemi di convalida, elaborazione o unione della configurazione, è possibile esaminare i pod DaemonSet linux ama-metrics-node

Ad esempio: per creare configmap da usare da DaemonSet Windows

kubectl create configmap ama-metrics-prometheus-config-node-windows --from-file=prometheus-config -n kube-system

Verrà creata una configmap denominata ama-metrics-prometheus-config-node-windows nello spazio dei nomi kube-system. Tutte le metriche di Monitoraggio di Azure riavviano il pod DaemonSet Windows in 30-60 secondi per applicare la nuova configurazione. Per verificare se sono presenti problemi di convalida, elaborazione o unione della configurazione, è possibile esaminare i pod DaemonSet Windows ama-metrics-win-node

Assicurarsi che il file di configurazione Prometheus sia denominato prometheus-config prima di eseguire il comando seguente, perché il nome file viene usato come nome dell'impostazione configmap.

Verrà creata una configmap denominata ama-metrics-prometheus-config nello spazio dei nomi kube-system. Il pod delle metriche di Monitoraggio di Azure viene riavviato per applicare la nuova configurazione. Per verificare se sono presenti problemi di convalida, elaborazione o unione della configurazione, è possibile esaminare i pod ama-metrics.

Un esempio di configmap ama-metrics-prometheus-config può essere consultato qui.

Risoluzione dei problemi

Se è stata creata correttamente la configmap (ama-metrics-prometheus-config o ama-metrics-prometheus-config-node) nello spazio dei nomi kube-system e ancora non vengono visualizzate le destinazioni personalizzate che vengono scorporate, verificare la presenza di errori nei log del pod di replica per configmap ama-metrics-prometheus-config o pod DaemonSet per configmap ama-metrics-prometheus-config-node) usando log kubectl e assicurarsi che non siano presenti errori nella sezione Avviare l'unione della configurazione predefinita e personalizzata di Prometheus con prefisso prometheus-config-merge

Nota

Installazione avanzata: configurare processi di scorporo Prometheus personalizzati per DaemonSet

Il pod di replica ama-metrics utilizza la configurazione personalizzata di Prometheus e scorpora le destinazioni specificate. Per un cluster con un numero elevato di nodi e pod e un volume elevato di metriche da scorporare, alcune delle destinazioni di scorporo personalizzate applicabili possono essere scaricate dal pod di replica singola ama-metrics al pod DaemonSet ama-metrics.

La configmap Ama-metrics-prometheus-config-node è simile alla configmap del set di repliche e può essere creata per avere configurazioni di scorporo statiche in ogni nodo. La configurazione di scorporo deve avere come destinazione solo un singolo nodo e non deve usare annotazioni pod/individuazione del servizio. In caso contrario, ogni nodo tenta di scorporare tutte le destinazioni ed effettua molte chiamate al server API Kubernetes.

Le destinazioni di scorporo personalizzate possono seguire lo stesso formato usando static_configs con le destinazioni e usando la variabile di ambiente $NODE_IP e specificando la porta da scorporo. Ogni pod del DaemonSet accetta la configurazione, scorpora le metriche e le invia per tale nodo.

Esempio: la configurazione seguente node-exporter è una delle destinazioni predefinite per i pod DaemonSet. Usa la variabile di ambiente $NODE_IP, già impostata per ogni contenitore di componenti aggiuntivi ama-metrics per specificare una porta specifica nel nodo.

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

Passaggi successivi