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