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.
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. Napříkladkubernetes_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 true hodnotu . |
|
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 konfiguračních map 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. Objekty ConfigMap jsou globální seznam a pro agenta může být použit pouze jeden objekt ConfigMap. Nemůžete mít jiné objekty ConfigMap, které přerušují kolekce.
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.
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"]
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 v clusterech jiných než Azure Red Hat OpenShift v3.x uložte soubor YAML a použijte aktualizované objekty ConfigMap spuštěním příkazu kubectl apply -f <configmap_yaml_file.yaml
.
V případě Azure Red Hat OpenShift v3.x upravte a uložte aktualizované objekty ConfigMap 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.