Condividi tramite


Inviare le metriche prometheus all'area di lavoro Log Analytics con Informazioni dettagliate sui contenitori

Questo articolo descrive come inviare metriche prometheus dal cluster Kubernetes monitorato da Informazioni dettagliate sui contenitori a un'area di lavoro Log Analytics. Prima di eseguire questa configurazione, è necessario assicurarsi di rimuovere le metriche di Prometheus dal cluster usando il servizio gestito di Monitoraggio di Azure per Prometheus, che è il metodo consigliato per il monitoraggio dei cluster. Usare la configurazione descritta in questo articolo solo se si vogliono anche inviare gli stessi dati a un'area di lavoro Log Analytics in cui è possibile analizzarla usando query di log e avvisi di ricerca log.

Questa configurazione richiede la configurazione del componente aggiuntivo di monitoraggio per l'agente di Monitoraggio di Azure, che corrisponde a quella usata da Informazioni dettagliate contenitore per inviare dati a un'area di lavoro Log Analytics. Richiede l'esposizione dell'endpoint delle metriche Prometheus tramite gli esportatori o i pod e quindi la configurazione dell'addon di monitoraggio per l'agente di Monitoraggio di Azure usato da Informazioni dettagliate sul contenitore, come illustrato nel diagramma seguente.

Diagram of container monitoring architecture sending Prometheus metrics to Azure Monitor Logs.

Impostazioni di raschiatura prometheus (per le metriche archiviate come log)

Lo scarto attivo delle metriche da Prometheus viene eseguito da una delle due prospettive seguenti e le metriche vengono inviate all'area di lavoro Log Analytics configurata:

  • Cluster-wide: definito nella sezione ConfigMap [Prometheus data_collection_settings.cluster].
  • A livello di nodo: definito nella sezione ConfigMap [Prometheus_data_collection_settings.node].
Endpoint Ambito Esempio
Annotazione pod A livello di cluster prometheus.io/scrape: "true"
prometheus.io/path: "/mymetrics"
prometheus.io/port: "8000"
prometheus.io/scheme: "http"
Servizio Kubernetes A livello di cluster http://my-service-dns.my-namespace:9100/metrics
http://metrics-server.kube-system.svc.cluster.local/metrics
URL/endpoint Per nodo e/o cluster a livello di cluster http://myurl:9101/metrics

Quando si specifica un URL, Informazioni dettagliate contenitore elimina solo l'endpoint. Quando si specifica il servizio Kubernetes, il nome del servizio viene risolto con il server DNS del cluster per ottenere l'indirizzo IP. Il servizio risolto viene quindi eliminato.

Ambito Chiave Tipo di dati Valore Descrizione
A livello di cluster Specificare uno dei tre metodi seguenti per raschiare gli endpoint per le metriche.
urls String Matrice delimitata da virgole Endpoint HTTP (indirizzo IP o percorso URL valido specificato). Ad esempio: urls=[$NODE_IP/metrics]. ($NODE_IP è un parametro specifico di Informazioni dettagliate contenitore e può essere usato invece di un indirizzo IP del nodo. Deve essere tutto maiuscolo.
kubernetes_services String Matrice delimitata da virgole Matrice di servizi Kubernetes per raschiare le metriche da kube-state-metrics. I nomi di dominio completi devono essere usati qui. Ad esempio, kubernetes_services = ["http://metrics-server.kube-system.svc.cluster.local/metrics",http://my-service-dns.my-namespace.svc.cluster.local:9100/metrics]
monitor_kubernetes_pods Booleano true o false Se impostato su true nelle impostazioni a livello di cluster, l'agente di Informazioni dettagliate contenitore elimina i pod Kubernetes nell'intero cluster per le annotazioni Prometheus seguenti:
prometheus.io/scrape:
prometheus.io/scheme:
prometheus.io/path:
prometheus.io/port:
prometheus.io/scrape Booleano true o false Abilita lo scraping del pod e monitor_kubernetes_pods deve essere impostato su true.
prometheus.io/scheme String http Per impostazione predefinita, lo smanchiamento su HTTP.
prometheus.io/path String Matrice delimitata da virgole Percorso della risorsa HTTP da cui recuperare le metriche. Se il percorso delle metriche non /metricsè , definirlo con questa annotazione.
prometheus.io/port String 9102 Specificare una porta da cui eseguire lo scraping. Se la porta non è impostata, il valore predefinito è 9102.
monitor_kubernetes_pods_namespaces String Matrice delimitata da virgole Elenco di spazi dei nomi consentito per lo scarto delle metriche dai pod Kubernetes.
Ad esempio, monitor_kubernetes_pods_namespaces = ["default1", "default2", "default3"]
A livello di nodo urls String Matrice delimitata da virgole Endpoint HTTP (indirizzo IP o percorso URL valido specificato). Ad esempio: urls=[$NODE_IP/metrics]. ($NODE_IP è un parametro specifico di Informazioni dettagliate contenitore e può essere usato invece di un indirizzo IP del nodo. Deve essere tutto maiuscolo.
A livello di nodo o a livello di cluster interval String 60 s Il valore predefinito dell'intervallo di raccolta è di un minuto (60 secondi). È possibile modificare la raccolta per [ prometheus_data_collection_settings.node] e/o [prometheus_data_collection_settings.cluster] in unità temporali come s, m e h.
A livello di nodo o a livello di cluster fieldpass
fielddrop
String Matrice delimitata da virgole È possibile specificare determinate metriche da raccogliere o meno dall'endpoint impostando l'elenco consenti (fieldpass) e non consentito (fielddrop). È prima necessario impostare l'elenco elementi consentiti.

Configurare Config Mappe per specificare la configurazione dello scrapeus prometheus (per le metriche archiviate come log)

Per configurare il file di configurazione ConfigMap per il cluster, seguire questa procedura. Config Mappe è un elenco globale e può essere applicato un solo ConfigMap all'agente. Non è possibile avere un'altra configurazione Mappe sovraruolere le raccolte.

  1. Scaricare il file YAML configmap del modello e salvarlo come container-azm-ms-agentconfig.yaml. Se è già stato distribuito un oggetto ConfigMap nel cluster e si vuole aggiornarlo con una configurazione più recente, è possibile modificare il file ConfigMap usato in precedenza.

  2. Modificare il file YAML ConfigMap con le personalizzazioni per raschiare le metriche di Prometheus.

    Per raccogliere i servizi Kubernetes a livello di cluster, configurare il file ConfigMap usando l'esempio seguente:

    prometheus-data-collection-settings: |- ​
    # Custom Prometheus metrics data collection settings
    [prometheus_data_collection_settings.cluster] ​
    interval = "1m"  ## Valid time units are s, m, h.
    fieldpass = ["metric_to_pass1", "metric_to_pass12"] ## specify metrics to pass through ​
    fielddrop = ["metric_to_drop"] ## specify metrics to drop from collecting
    kubernetes_services = ["http://my-service-dns.my-namespace:9102/metrics"]
    
  3. Eseguire il comando kubectl seguente: kubectl apply -f <configmap_yaml_file.yaml>.

    Esempio: kubectl apply -f container-azm-ms-agentconfig.yaml.

La modifica della configurazione può richiedere alcuni minuti prima di rendere effettiva la modifica. Tutti i pod ama-logs nel cluster verranno riavviati. Al termine dei riavvii, viene visualizzato un messaggio simile al seguente e include il risultato configmap "container-azm-ms-agentconfig" created.

Verificare la configurazione

Per verificare che la configurazione sia stata applicata correttamente a un cluster, usare il comando seguente per esaminare i log da un pod agente: kubectl logs ama-logs-fdf58 -n=kube-system.

Se si verificano errori di configurazione dai pod dell'agente di Monitoraggio di Azure, l'output mostra errori simili all'esempio seguente:

***************Start Config Processing******************** 
config::unsupported/missing config schema version - 'v21' , using defaults

Sono disponibili anche errori relativi all'applicazione delle modifiche di configurazione per la revisione. Sono disponibili le opzioni seguenti per eseguire ulteriori operazioni di risoluzione dei problemi relativi alle modifiche di configurazione e alla raschiatura delle metriche di Prometheus:

  • Da un pod agente registra usando lo stesso kubectl logs comando.

  • Da dati in tempo reale. I log dei dati in tempo reale mostrano errori simili all'esempio seguente:

    2019-07-08T18:55:00Z E! [inputs.prometheus]: Error in plugin: error making HTTP request to http://invalidurl:1010/metrics: Get http://invalidurl:1010/metrics: dial tcp: lookup invalidurl on 10.0.0.10:53: no such host
    
  • Dalla tabella KubeMonAgentEvents nell'area di lavoro Log Analytics. I dati vengono inviati ogni ora con gravità dell'avviso per gli errori di eliminazione e la gravità dell'errore per gli errori di configurazione. Se non sono presenti errori, la voce nella tabella contiene dati con informazioni di gravità, che non segnalano errori. La proprietà Tags contiene altre informazioni sul pod e sull'ID contenitore in cui si è verificato l'errore e anche la prima occorrenza, l'ultima occorrenza e il conteggio nell'ultima ora.

  • Per Azure Red Hat OpenShift v3.x e v4.x, controllare i log dell'agente di Monitoraggio di Azure eseguendo una ricerca nella tabella ContainerLog per verificare se la raccolta di log di openshift-azure-logging è abilitata.

Gli errori impediscono all'agente di Monitoraggio di Azure di analizzare il file, causandone il riavvio e l'uso della configurazione predefinita. Dopo aver corretto gli errori in ConfigMap nei cluster diversi da Azure Red Hat OpenShift v3.x, salvare il file YAML e applicare la configurazione aggiornata Mappe eseguendo il comando kubectl apply -f <configmap_yaml_file.yaml.

Per Azure Red Hat OpenShift v3.x, modificare e salvare la configurazione aggiornata Mappe eseguendo il comando oc edit configmaps container-azm-ms-agentconfig -n openshift-azure-logging.

Eseguire query sui dati delle metriche di Prometheus

Per visualizzare le metriche di Prometheus raschiate da Monitoraggio di Azure ed eventuali errori di configurazione/scraping segnalati dall'agente, vedere Eseguire query sui dati delle metriche di Prometheus.

Visualizzare le metriche di Prometheus in Grafana

Informazioni dettagliate contenitore supporta la visualizzazione delle metriche archiviate nell'area di lavoro Log Analytics nei dashboard di Grafana. È stato fornito un modello che è possibile scaricare dal repository del dashboard di Grafana. Usare il modello per iniziare e farvi riferimento per informazioni su come eseguire query su altri dati dai cluster monitorati per visualizzarli nei dashboard personalizzati di Grafana.

Passaggi successivi