Monitorování Kubernetes pomocí Grafany a Promethea: podrobný průvodce
Monitorování Kubernetes pomocí Grafany a Promethea: podrobný průvodce
Kubernetes se stal základní vrstvou pro moderní nasazování aplikací, avšak jeho dynamická, distribuovaná povaha činí komplexní pozorovatelnost povinným požadavkem pro úspěšný provoz. Musíte rozumět stavu svých uzlů, výkonu podů a stavu clusteru, abyste zajistili spolehlivost a předešli nákladným výpadkům. Tento průvodce nabízí jasnou cestu krok za krokem k osvojení monitorování Kubernetes pomocí Grafany a Promethea, přeměňující surové metriky na užitečné poznatky, které vám umožní proaktivně spravovat vaši infrastrukturu.
Co se naučíte
Na konci tohoto průvodce pochopíte, jak nasadit kompletní, produkčně připravený monitorovací stack ve vašem clusteru Kubernetes s využitím průmyslového standardu kube-prometheus-stack. Budete schopni připojit Grafanu k Prometheovi, importovat hotové dashboardy pro okamžitou vizualizaci a získat jasný plán pro nastavení alertů a vizualizací podle vašich konkrétních potřeb. Nejdůležitější závěr: Helm chart kube-prometheus-stack je nejrychlejší a nejspolehlivější způsob, jak realizovat plnohodnotné monitorování Kubernetes.
Průmyslový standard monitorovacího stacku pro Kubernetes
Kombinace Promethea a Grafany je de facto standardem pro monitorování Kubernetes. Podle průmyslových dat přibližně 75 % organizací používajících Kubernetes volí Promethea a Grafanu pro své potřeby pozorovatelnosti. To není jen trend; je to důkaz síly a flexibility této sady open-source nástrojů.
- Prometheus je projekt Cloud Native Computing Foundation (CNCF), navržený pro spolehlivost a škálovatelnost. Funguje tak, že sbírá metriky z různých cílů (např. podů vaší aplikace nebo uzlů Kubernetes) v daných intervalech a ukládá je do databáze časových řad. Poté můžete tato data dotazovat pomocí PromQL (dotazovacího jazyka Promethea), výkonného a flexibilního jazyka pro agregaci a analýzu metrik.
- Grafana je vizualizační vrstva. Bezproblémově se integruje s Prometheem a přeměňuje surová nasbíraná data na krásné, interaktivní dashboardy a grafy v reálném čase. Tato vizuální reprezentace výrazně usnadňuje identifikaci trendů, odhalování anomálií a odstraňování problémů s výkonem na první pohled. Grafana může také sloužit jako jednotné rozhraní pro další zdroje dat, ale pro Kubernetes je Prometheus jejím nejdůležitějším partnerem.
Předpoklady pro nastavení
Než začnete, ujistěte se, že máte nainstalované a nakonfigurované následující nástroje. Tento průvodce předpokládá existenci funkčního clusteru Kubernetes, ať už se jedná o lokální vývojové prostředí, jako je Minikube, nebo produkční cluster v cloudu.
- Funkční cluster Kubernetes: Potřebujete cluster pro nasazení monitorovacího stacku. Pro lokální testování jsou skvělé Minikube nebo Kind.
- Helm: Správce balíčků Kubernetes je nezbytný pro nasazení
kube-prometheus-stack. Ujistěte se, že máte nainstalovaný Helm v3.2+ na vašem lokálním počítači. - kubectl: Nástroj příkazového řádku Kubernetes musí být nakonfigurován pro interakci s vaším clusterem.
Postupné nasazení: použití kube-prometheus-stack
Nejefektivnější a doporučený způsob, jak nasadit Promethea a Grafanu pro monitorování Kubernetes, je použít Helm chart kube-prometheus-stack. Tento chart je udržován komunitou Promethea a spojuje všechny potřebné komponenty do jednoho snadno spravovatelného balíčku. Zahrnuje:
- Prometheus Operator: Spravuje instance Promethea a Alertmanageru.
- Prometheus: Hlavní metrický server.
- Alertmanager: Zpracovává alerty odesílané Prometheem.
- Grafana: Vizualizační platforma.
- Node Exporter: Sbírá metriky na úrovni uzlů (CPU, paměť, disk) z vašich uzlů Kubernetes.
- kube-state-metrics: Generuje metriky o stavu objektů Kubernetes, jako jsou pody, deploymenty a služby.
1. Přidání Helm repozitáře komunity Prometheus
Nejprve přidejte oficiální Helm repozitář a aktualizujte jej, abyste získali nejnovější verze chartů.
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
2. Instalace stacku
Stack můžete nainstalovat jedním Helm příkazem a přizpůsobit jej pomocí různých parametrů. Tento příklad vytvoří namespace monitoring a zahrnuje trvalé úložiště pro data Promethea a Grafany.
helm install prometheus prometheus-community/kube-prometheus-stack \
--namespace monitoring \
--create-namespace \
--set grafana.service.type=NodePort \
--set grafana.service.nodePort=30094 \
--set grafana.adminPassword=admin \
--set prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.accessModes=["ReadWriteOnce"] \
--set prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.resources.requests.storage=50Gi \
--set prometheus.prometheusSpec.retention=30d
grafana.adminPassword=admin: Nastavuje administrátorské heslo pro Grafanu. V produkci jej změňte.--set grafana.service.type=NodePort: Zpřístupňuje Grafanu z vnějšku clusteru přes NodePort pro snadný přístup.prometheus.prometheusSpec.retention=30d: Nastavuje dobu uchovávání dat Promethea na 30 dní, což je nezbytné pro dlouhodobou analýzu trendů.
3. Ověření instalace
Ujistěte se, že všechny pody v namespace monitoring běží.
kubectl get pods -n monitoring
Výstup by měl zobrazovat několik podů se statusem Running, včetně podů pro Grafanu, Promethea, Alertmanager, node-exporter a kube-state-metrics.
Připojení Grafany k vašemu zdroji dat Prometheus
Helm chart kube-prometheus-stack často automaticky nakonfiguruje Promethea jako zdroj dat v Grafaně. Je však lepší připojení zkontrolovat.
Přístup k rozhraní Grafany
Pro přístup k webovému rozhraní Grafany můžete použít port forwarding pro lokální testování nebo otevřít službu pomocí LoadBalancer nebo Ingress pro produkci.
Možnost A: Port forwarding (pro rychlý lokální přístup)
Toto je nejjednodušší způsob, jak dočasně získat přístup k vašemu dashboardu.
kubectl port-forward -n monitoring svc/prometheus-grafana 3000:80
Nyní otevřete prohlížeč a přejděte na adresu http://localhost:3000.
⚠️ Důležité: Port forwarding je vhodný pouze pro lokální testování a vývoj. Pro trvalé produkční nastavení byste měli Grafanu zpřístupnit pomocí služby typu
LoadBalancernebo Ingress Controller.
Možnost B: LoadBalancer (doporučeno pro cloudová prostředí)
Pokud pracujete u cloudového poskytovatele, jako je UpCloud, AWS nebo GCP, můžete jednoduše změnit službu Grafany na použití LoadBalancer.
kubectl patch svc prometheus-grafana -n monitoring -p '{"spec": {"type": "LoadBalancer"}}'
Poté získejte externí IP adresu:
kubectl get svc -n monitoring prometheus-grafana
Otevřete Grafanu na adrese http://<EXTERNÍ-IP>:80.
Přihlášení
Použijte výchozí přihlašovací údaje:
- Uživatelské jméno:
admin - Heslo: Heslo, které jste zadali při instalaci (např.
adminneboprom-operator).
Po přihlášení přejděte do Configuration > Data Sources, abyste se ujistili, že zdroj dat Prometheus existuje a funguje. Klikněte na něj a použijte tlačítko Test pro ověření připojení.
Vytváření dashboardů: od hotových po vlastní
Po připojení Grafany k Prometheovi můžete začít vizualizovat metriky Kubernetes. Nejrychlejší způsob, jak získat cenné poznatky, je importovat hotové dashboardy z komunity Grafany.
Import hotových dashboardů
Grafana nabízí rozsáhlou knihovnu komunitních dashboardů, které lze importovat podle jejich jedinečných identifikátorů.
- Najeďte kurzorem na ikonu
+na bočním panelu a vyberte Import. - Zadejte ID dashboardu do pole "Find and import dashboards". Dva nejvíce doporučované dashboardy:
- 1860: Node Exporter Full — poskytuje podrobné metriky o uzlech vašeho clusteru, včetně CPU, paměti, disku a sítě.
- 8588: Kubernetes Deployment Statefulset Daemonset — nabízí přehled vašich Kubernetes workloadů.
- Klikněte na Load, poté vyberte váš zdroj dat Prometheus a klikněte na Import.
Tyto dashboardy vám poskytnou okamžitý komplexní přehled o stavu clusteru bez psaní PromQL dotazů.
Vytváření vlastních dashboardů s PromQL
I když jsou hotové dashboardy skvělým výchozím bodem, často je potřeba vytvářet vlastní zobrazení přizpůsobená vašim konkrétním aplikacím. Zde přichází na řadu PromQL.
Pro vytvoření nového dashboardu klikněte na ikonu + a vyberte New Dashboard. Poté klikněte na Add visualization a vyberte váš zdroj dat Prometheus.
Zde je několik základních PromQL dotazů pro monitorování Kubernetes:
- Využití CPU na pod:
sum(rate(container_cpu_usage_seconds_total{namespace!="kube-system", pod!=""}[5m])) by (pod) - Využití paměti na pod:
sum(container_memory_working_set_bytes{namespace!="kube-system", pod!=""}) by (pod) / 1024 / 1024 / 1024 - Status podů podle fáze:
Tento dotaz je ideální pro panel Stat, který vám umožní na první pohled vidět, zda všechny pody běží.sum(kube_pod_status_phase) by (phase)
Nastavení alertů a upozornění
Monitorování je jen polovina úspěchu; musíte také dostávat upozornění, když se něco pokazí. To je úkolem Alertmanageru, který je součástí kube-prometheus-stack.
Nastavení pravidel alertů
Alertmanager můžete nakonfigurovat tak, aby odesílal upozornění do různých kanálů, jako je Slack, e-mail nebo PagerDuty. Běžné a efektivní nastavení je odesílání alertů do vyhrazeného Slack kanálu.
- Nejprve vytvořte příchozí webhook ve vašem Slack workspace.
- Poté upravte konfiguraci Alertmanageru. To lze provést poskytnutím vlastního souboru
values.yamlběhem aktualizace Helmu nebo úpravou secretu přímo. - Aktualizujte sekci
alertmanagerve vašem souboruvalues.yamls uvedením trasy a příjemce odkazujícího na URL vašeho Slack webhooku:
alertmanager:
config:
route:
receiver: 'slack-notifications'
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
receivers:
- name: 'slack-notifications'
slack_configs:
- api_url: 'https://hooks.slack.com/services/your/webhook/url'
send_resolved: true
title: '{{ .CommonLabels.alertname }} ({{ .Status | toUpper }})'
text: >-
{{ range .Alerts }}
*Alert:* {{ .Labels.alertname }}
*Závažnost:* {{ if .Labels.severity }}{{ .Labels.severity }}{{ else }}neuvedeno{{ end }}
*Stručný popis:* {{ if .Annotations.summary }}{{ .Annotations.summary }}{{ else }}neuvedeno{{ end }}
*Popis:* {{ if .Annotations.description }}{{ .Annotations.description }}{{ else }}neuvedeno{{ end }}
{{- end }}
Po aplikování těchto změn pomocí helm upgrade budou alerty odesílány do vašeho Slack kanálu.
Nejlepší postupy pro produkční monitorování
Aby byl váš monitorovací stack spolehlivý a škálovatelný v produkčním prostředí, dodržujte tato klíčová doporučení.
- Nastavte trvalé úložiště: Při nasazování do produkce vždy zapněte trvalé úložiště jak pro Promethea, tak pro Grafanu. To zaručí, že vaše metriky a konfigurace dashboardů přežijí restartování podů a aktualizace clusteru. V
kube-prometheus-stackje to řízeno nastavenímipersistenceastorageSpecv Helm chartu. - Optimalizujte výkon dotazů: Dotazy s vysokou kardinalitou mohou zpomalit vaše dashboardy i samotného Promethea. Pro udržení výkonu vždy agregujte PromQL dotazy u zdroje. Například místo dotazu
container_cpu_usage_seconds_totalagregujte podle namespace:sum by (namespace) (rate(container_cpu_usage_seconds_total[5m])). To snižuje množství dat, která musí Grafana zpracovat. - Nastavte vhodné doby uchovávání: Výchozí doba uchovávání pro Promethea je 15 dní. Upravte ji podle svých potřeb. Delší doba uchovávání (např. 30–60 dní) je užitečná pro dlouhodobou analýzu trendů, ale bude vyžadovat více místa pro ukládání.
- Spravujte konfiguraci jako kód: Jak se vaše potřeby monitorování vyvíjejí, budete pravděpodobně upravovat dashboardy a pravidla alertů. Exportujte své dashboardy ve formátu JSON a ukládejte je do systému správy verzí (např. Git) spolu s pravidly alertů. Tato praxe, známá jako GitOps, činí vaše nastavení monitorování reprodukovatelným a auditovatelným.
- Nastavte intervaly sběru: Výchozí interval sběru pro Promethea je 30 sekund. Pro kritické metriky s vysokou rychlostí změn můžete chtít sbírat data častěji, ale mějte na paměti, že to zvyšuje zátěž na Promethea a API server vašeho clusteru. Tyto intervaly můžete nastavit v Helm hodnotách.
Často kladené otázky
1. Jaký je nejjednodušší způsob monitorování Kubernetes pomocí Grafany a Promethea?
Nejjednodušší a doporučená metoda je použít Helm chart kube-prometheus-stack. Ten spojuje Promethea, Grafanu, Alertmanager, node-exporter a kube-state-metrics do jednoho balíčku a můžete jej nasadit pomocí několika příkazů.
2. Je nutné používat kube-state-metrics pro monitorování Kubernetes?
Ano, kube-state-metrics je kriticky důležitá komponenta, která generuje metriky o stavu objektů Kubernetes, jako je počet připravených podů nebo status deploymentu. Bez ní byste neměli viditelnost stavu vašich Kubernetes zdrojů na vyšší úrovni.
3. Jak urychlit načítání mých Kubernetes dashboardů?
Pomalé dashboardy jsou často způsobeny neefektivními PromQL dotazy. Klíčovým řešením je agregovat dotazy pro snížení kardinality. Například místo zobrazení dat pro každý pod je sumarizujte na úrovni namespace pomocí dotazů jako sum by (namespace) (rate(...)).
4. Jaký je nejlepší způsob, jak dostávat alerty z mého monitorování Kubernetes? Prometheus pracuje s Alertmanagerem, který může odesílat upozornění do různých kanálů. Populární a jednoduchá metoda je nastavit Alertmanager na odesílání alertů do Slack kanálu přes příchozí webhook. To zajišťuje alerty v reálném čase s možností okamžité reakce.
5. Musím ručně instalovat Node Exporter na každý uzel?
Ne. Při nasazení Helm chartu kube-prometheus-stack automaticky nasadí DaemonSet Node Exporter. To zaručuje, že pod Node Exporter běží na každém uzlu vašeho clusteru, což umožňuje Prometheovi sbírat metriky na úrovni uzlů, jako je využití CPU, paměti a disku, bez jakéhokoli ručního zásahu.
Zdroje
- UpCloud Global. (2025). Monitoring on UpCloud with Prometheus: Part 3.
- Ubuntu Documentation. (2026). How to use Prometheus with Canonical Kubernetes.
- Sfeir Institute. (2026). Create Effective Grafana Dashboards for Kubernetes Monitoring.
- Ory. (2025). Monitoring.
- GitHub - AkramGalal. (2025). deploying-prometheus-grafana-K8s-using-helm.
- Go Packages. (2025). kube-prometheus.
- GitHub - dotdc. (2026). grafana-dashboards-kubernetes.
- Scaleway. (2025). Kubernetes Kapsule cluster monitoring with Prometheus & Grafana.
- Mirantis. (2025). How to Set Up Prometheus & Grafana in K8s with Alertmanager & Slack Alerts.
- Microsoft Learn. (2025). Using ConfigMap to customize Prometheus metric collection in Azure Monitor.
- GitHub - Rurutia1027. (2025). Hands-on-Lab.K8s-Monitoring.
— Editorial Team
Zatím žádné komentáře.