Odesílání metrik Prometheus do pracovního prostoru služby Log Analytics pomocí přehledů kontejnerů

Tento článek popisuje, jak odesílat metriky Prometheus z clusteru Kubernetes monitorovaného službou Container Insights do pracovního prostoru služby Log Analytics. Před provedením této konfigurace byste se měli nejprve ujistit, že z clusteru sešrotujete metriky Prometheus pomocí spravované služby Azure Monitor pro Prometheus, což je doporučená metoda monitorování clusterů. Konfiguraci popsanou v tomto článku použijte jenom v případě, že chcete stejná data odeslat také do pracovního prostoru služby Log Analytics, kde je můžete analyzovat pomocí dotazů protokolu a upozornění prohledávání protokolů.

Tato konfigurace vyžaduje konfiguraci doplňku monitorování pro agenta Azure Monitoru, což je totéž, co služba Container Insights používá k odesílání dat do pracovního prostoru služby Log Analytics. Vyžaduje zveřejnění koncového bodu metriky Prometheus prostřednictvím exportérů nebo podů a následná konfigurace doplňku monitorování pro agenta azure Monitoru používaného službou Container Insights, jak je znázorněno na následujícím diagramu.

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

Nastavení scrapování Prometheus (pro metriky uložené jako protokoly)

Aktivní scrapování metrik z Nástroje Prometheus se provádí z jednoho ze dvou pohledů níže a metriky se odesílají do nakonfigurovaného pracovního prostoru služby Log Analytics:

  • V celém clusteru: Definováno v části ConfigMap [Prometheus data_collection_settings.cluster].
  • Široký uzel: Definovaný v části ConfigMap [Prometheus_data_collection_settings.node].
Koncový bod Obor Příklad
Poznámka podu Cluster v celém clusteru prometheus.io/scrape: "true"
prometheus.io/path: "/mymetrics"
prometheus.io/port: "8000"
prometheus.io/scheme: "http"
Služba Kubernetes Cluster v celém clusteru http://my-service-dns.my-namespace:9100/metrics
http://metrics-server.kube-system.svc.cluster.local/metrics
Adresa URL/koncový bod Pro jednotlivé uzly nebo clustery http://myurl:9101/metrics

Když zadáte adresu URL, nástroj Container Insights se zřetědí jenom koncový bod. Po zadání služby Kubernetes se název služby přeloží na server DNS clusteru, aby získal IP adresu. Vyřešená služba se pak zřetědí.

Obor Klíč Datový typ Hodnota Popis
Cluster v celém clusteru Zadejte jednu z následujících tří metod pro výstřižky koncových bodů pro metriky.
urls String Pole oddělené čárkami Koncový bod HTTP (zadaná IP adresa nebo platná cesta URL). Například: urls=[$NODE_IP/metrics]. ($NODE_IP je konkrétní parametr Container Insights a dá se použít místo IP adresy uzlu. Musí být velkými písmeny.)
kubernetes_services String Pole oddělené čárkami Pole služeb Kubernetes pro výstřižky metrik z metrik kube-state-metrics Tady musí být použity plně kvalifikované názvy domén. Příklad: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 Logická hodnota true nebo false Když je v nastavení pro celý cluster nastavený true , agent Container Insights v celém clusteru v celém clusteru vyřadí pody Kubernetes pro následující poznámky Prometheus:
prometheus.io/scrape:
prometheus.io/scheme:
prometheus.io/path:
prometheus.io/port:
prometheus.io/scrape Logická hodnota true nebo false Povolí výstřižky podu a monitor_kubernetes_pods musí být nastavena na truehodnotu .
prometheus.io/scheme String http Výchozí hodnota pro výstřižky přes PROTOKOL HTTP.
prometheus.io/path String Pole oddělené čárkami Cesta prostředku HTTP, ze které se mají načíst metriky. Pokud cesta metrik není /metrics, definujte ji pomocí této poznámky.
prometheus.io/port String 9102 Zadejte port, ze které se má vystřihot. Pokud port není nastavený, výchozí hodnota je 9102.
monitor_kubernetes_pods_namespaces String Pole oddělené čárkami Seznam povolených oborů názvů pro výstřižky metrik z podů Kubernetes
Například monitor_kubernetes_pods_namespaces = ["default1", "default2", "default3"]
Široký uzel urls String Pole oddělené čárkami Koncový bod HTTP (zadaná IP adresa nebo platná cesta URL). Například: urls=[$NODE_IP/metrics]. ($NODE_IP je konkrétní parametr Container Insights a dá se použít místo IP adresy uzlu. Musí být velkými písmeny.)
Široké uzly nebo clustery interval String 60 s Výchozí interval kolekce je jedna minuta (60 sekund). Kolekci pro [prometheus_data_collection_settings.node] nebo [prometheus_data_collection_settings.cluster] můžete upravit na časové jednotky, jako jsou s, m a h.
Široké uzly nebo clustery fieldpass
fielddrop
String Pole oddělené čárkami Určité metriky, které se mají shromažďovat, nebo ne z koncového bodu můžete určit nastavením povolení (fieldpass) a zakázáním (fielddrop) výpisu. Nejprve musíte nastavit seznam povolených.

Konfigurace konfigurace Mapy pro zadání konfigurace výstřižku Prometheus (pro metriky uložené jako protokoly)

Pomocí následujících kroků nakonfigurujte konfigurační soubor ConfigMap pro váš cluster. Konfigurace Mapy je globální seznam a pro agenta může být použit pouze jeden objekt ConfigMap. Nemůžete mít jinou konfiguraci Mapy přerušovat kolekce.

  1. Stáhněte soubor YAML šablony ConfigMap a uložte ho jako container-azm-ms-agentconfig.yaml. Pokud jste už do clusteru nasadili objekt ConfigMap a chcete ho aktualizovat novější konfigurací, můžete upravit soubor ConfigMap, který jste dříve použili.

  2. Upravte soubor YAML objektu ConfigMap pomocí vlastních nastavení pro scrapování metrik Prometheus.

    Pokud chcete shromažďovat clustery služeb Kubernetes, nakonfigurujte soubor ConfigMap pomocí následujícího příkladu:

    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. Spusťte následující příkaz kubectl: kubectl apply -f <configmap_yaml_file.yaml>.

    Příklad: kubectl apply -f container-azm-ms-agentconfig.yaml.

Než se změny konfigurace projeví, může trvat několik minut. Všechny pody ama-logs v clusteru se restartují. Po dokončení restartování se zobrazí zpráva podobná následující zprávě, která obsahuje výsledek configmap "container-azm-ms-agentconfig" created.

Ověření konfigurace

Pokud chcete ověřit úspěšné použití konfigurace v clusteru, pomocí následujícího příkazu zkontrolujte protokoly z podu agenta: kubectl logs ama-logs-fdf58 -n=kube-system

Pokud dojde k chybám konfigurace z podů agenta služby Azure Monitor, zobrazí se ve výstupu chyby podobné následujícímu příkladu:

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

Chyby související s použitím změn konfigurace jsou také k dispozici ke kontrole. K dispozici jsou následující možnosti pro další řešení potíží se změnami konfigurace a výstřižky metrik Prometheus:

  • Z protokolů podu agenta pomocí stejného kubectl logs příkazu.

  • Z živých dat. Protokoly živých dat zobrazují chyby podobné následujícímu příkladu:

    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
    
  • Z tabulky KubeMonAgentEvents v pracovním prostoru služby Log Analytics. Data se odesílají každou hodinu se závažností upozornění pro chyby výstřižků a závažnosti chyby konfigurace. Pokud nedojde k žádným chybám, obsahuje položka v tabulce data se závažností Informace, která hlásí žádné chyby. Vlastnost Tags obsahuje další informace o podu a ID kontejneru, ke kterému došlo k chybě, a také o prvním výskytu, posledním výskytu a počtu za poslední hodinu.

  • V případě Azure Red Hat OpenShiftu v3.x a v4.x zkontrolujte protokoly agenta služby Azure Monitor vyhledáním tabulky ContainerLog a ověřte, jestli je povolená kolekce protokolů openshift-azure-logging.

Chyby brání agentu Azure Monitoru v analýze souboru, což způsobuje restartování a použití výchozí konfigurace. Po opravě chyb v ConfigMap na jiných clusterech než Azure Red Hat OpenShift v3.x uložte soubor YAML a použijte aktualizovanou konfiguraci Mapy spuštěním příkazu kubectl apply -f <configmap_yaml_file.yaml.

Pro Azure Red Hat OpenShift v3.x upravte a uložte aktualizovanou konfiguraci Mapy spuštěním příkazu oc edit configmaps container-azm-ms-agentconfig -n openshift-azure-logging.

Dotazování dat metrik Prometheus

Pokud chcete zobrazit metriky Prometheus, které služba Azure Monitor hlásí, a případné chyby konfigurace nebo výstřižky hlášené agentem, projděte si data metrik Query Prometheus.

Zobrazení metrik Prometheus v Grafana

Container Insights podporuje zobrazení metrik uložených v pracovním prostoru služby Log Analytics na řídicích panelech Grafana. Poskytli jsme šablonu, kterou si můžete stáhnout z úložiště řídicího panelu Grafany. Pomocí šablony můžete začít a odkazovat na ni, abyste se dozvěděli, jak se dotazovat na další data z monitorovaných clusterů a vizualizovat je na vlastních řídicích panelech Grafana.

Další kroky