How to install Prometheus in Kubernetes cluster?

Prometheus på EKS: En Komplet Guide til Overvågning

08/03/2006

Rating: 4.4 (13191 votes)

At opretholde en sund og performant applikationsinfrastruktur er afgørende i den moderne cloud-native verden. Når du kører dine workloads på en platform som Amazon EKS (Elastic Kubernetes Service), bliver behovet for en dybdegående og pålidelig overvågningsløsning endnu mere kritisk. Prometheus er blevet de facto-standarden for overvågning og alarmering i Kubernetes-økosystemet. Denne artikel er en omfattende guide, der viser dig, hvordan du implementerer en komplet overvågningsstak ved hjælp af Prometheus på din EKS-klynge. Vi vil fokusere på at bruge Prometheus Operator, som markant forenkler implementering og administration, installeret via Helm, pakkehåndteringen til Kubernetes.

How do I deploy Prometheus on Amazon EKS?
Indholdsfortegnelse

Hvad er Prometheus Operator?

Før vi dykker ned i installationen, er det vigtigt at forstå, hvad Prometheus Operator er, og hvorfor det er den foretrukne metode til at køre Prometheus på Kubernetes. Traditionelt kunne konfiguration og administration af Prometheus være en kompleks opgave, der involverede manuelle ændringer i statiske konfigurationsfiler. Prometheus Operator ændrer dette fundamentalt ved at introducere Kubernetes Custom Resource Definitions (CRDs).

Kort sagt er Prometheus Operator en controller, der overvåger et sæt af specifikke Kubernetes-ressourcer (CRD'er) og automatisk konfigurerer og administrerer Prometheus-instanser baseret på disse ressourcer. Dette gør din overvågning dynamisk og Kubernetes-native. I stedet for at redigere en YAML-fil manuelt, definerer du blot ressourcer som ServiceMonitor eller PodMonitor, og operatøren tager sig af resten.

Fordele ved at bruge Prometheus Operator

  • Forenklet konfiguration: Du administrerer din overvågningskonfiguration ved hjælp af simple Kubernetes-objekter. Det er nemmere at vedligeholde, versionere og integrere i GitOps-workflows.
  • Automatiseret administration: Operatøren håndterer automatisk opgaver som skalering af Prometheus-servere, rullende opdateringer og konfigurationsændringer uden nedetid.
  • Forbedret sikkerhed: Den giver indbyggede sikkerhedsfunktioner, herunder godkendelse og autorisation, som hjælper med at sikre dine Prometheus-instanser.
  • Skalerbar og udvidelig: Det er nemt at udvide overvågningskapaciteterne ved at integrere med andre værktøjer som Grafana, Alertmanager og et væld af 'exporters' for forskellige tjenester.

Forståelse af Prometheus Operator CRD'er

Kernen i Prometheus Operators funktionalitet er dens CRD'er. At forstå, hvad hver af disse gør, giver dig mulighed for bedre at optimere din overvågningsstak. Her er de mest almindelige:

CRD NavnBeskrivelse
PrometheusDefinerer den ønskede tilstand for en Prometheus-implementering, herunder antal replikaer, datalagring og version.
AlertmanagerDefinerer den ønskede tilstand for en Alertmanager-implementering, der håndterer alarmer sendt fra Prometheus.
ServiceMonitorAngiver deklarativt, hvordan en gruppe af Kubernetes-tjenester (Services) skal overvåges. Operatøren genererer automatisk den relevante scrape-konfiguration for Prometheus.
PodMonitorLigner ServiceMonitor, men angiver deklarativt, hvordan grupper af pods skal overvåges direkte, uden om en service.
PrometheusRuleDefinerer et sæt af alarmerings- og/eller registreringsregler for Prometheus. Operatøren sikrer, at disse regler indlæses i de relevante Prometheus-instanser.
AlertmanagerConfigGiver mulighed for deklarativt at specificere dele af Alertmanager-konfigurationen, såsom routing af alarmer til specifikke modtagere.

Trin-for-trin guide til implementering på EKS

Nu hvor vi har den teoretiske forståelse på plads, lad os gå videre til den praktiske implementering. Denne guide antager, at du allerede har en kørende Amazon EKS-klynge og har kubectl konfigureret til at kommunikere med den. Du skal også have Helm v3 installeret.

Trin 1: Tilføj Helm Repository

Den mest populære og velholdte Helm-pakke til Prometheus Operator er kube-prometheus-stack fra prometheus-community-repositoriet. Først tilføjer vi dette repository til vores Helm-konfiguration:

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update

Trin 2: Installer kube-prometheus-stack

Med repositoriet tilføjet kan vi nu installere pakken. Denne pakke installerer ikke kun Prometheus Operator, men også en komplet overvågningsstak, der inkluderer Prometheus, Alertmanager, Grafana, kube-state-metrics og node-exporter. Vi installerer den i et dedikeret namespace, f.eks. monitoring.

Opret først namespacet:

kubectl create namespace monitoring

Installer derefter Helm-pakken. Vi giver den et release-navn, f.eks. prom-stack.

helm install prom-stack prometheus-community/kube-prometheus-stack --namespace monitoring

Giv installationen et par minutter til at downloade alle container-images og starte de forskellige komponenter. Processen vil oprette en række Deployments, StatefulSets, Services og andre Kubernetes-ressourcer.

How do I deploy Prometheus on Amazon EKS?
Helm is a package manager for Kubernetes clusters. For more information about Helm and how to install it, see Deploy applications with Helm on Amazon EKS. After you configure Helm for your Amazon EKS cluster, you can use it to deploy Prometheus with the following steps. Create a Prometheus namespace. Add the prometheus-community chart repository.

Trin 3: Verificer installationen

Når Helm-kommandoen er færdig, kan du verificere, at alle pods kører korrekt i monitoring-namespacet:

kubectl get pods -n monitoring

Du bør se en liste af pods, der inkluderer navne som prom-stack-grafana, prom-stack-kube-prometheus-st-prometheus-0, prom-stack-kube-state-metrics, og en prometheus-node-exporter-pod for hver node i din klynge.

Adgang til dine dashboards

Med stakken kørende er det tid til at visualisere de data, der bliver indsamlet. Helm-pakken installerer og konfigurerer Grafana til automatisk at bruge den nye Prometheus-instans som datakilde.

Adgang til Grafana

Grafana-tjenesten er som standard ikke eksponeret eksternt. Den nemmeste måde at få adgang til den på er ved at bruge kubectl port-forward. Find navnet på Grafana-servicen:

kubectl get svc -n monitoring

Navnet vil typisk være noget i stil med prom-stack-grafana. Brug dette navn til at forwarde en lokal port til servicen:

kubectl port-forward svc/prom-stack-grafana 3000:80 -n monitoring

Åbn nu din browser og gå til http://localhost:3000. Du vil blive mødt af Grafana's login-side.

  • Brugernavn:admin
  • Adgangskode:prom-stack

Du vil blive bedt om at ændre adgangskoden ved første login. Når du er logget ind, kan du udforske de mange præ-installerede dashboards, der giver dyb indsigt i din klynges tilstand, herunder CPU/hukommelsesforbrug, netværksstatistikker og meget mere.

Adgang til Prometheus UI

Du kan også tilgå Prometheus' eget webinterface på samme måde. Dette er ofte nyttigt til debugging af scrape-targets eller til at køre komplekse PromQL-forespørgsler. Find Prometheus-servicen (typisk prom-stack-kube-prometheus-st-prometheus) og brug port-forward:

kubectl port-forward svc/prom-stack-kube-prometheus-st-prometheus 9090:9090 -n monitoring

Gå derefter til http://localhost:9090 i din browser.

Vigtige overvejelser og bedste praksis

  • Persistens: Som standard bruger Helm-pakken ikke nødvendigvis persistente volumes. For et produktionsmiljø er det afgørende at konfigurere Prometheus til at gemme sine metrikdata på et persistent volume (f.eks. Amazon EBS). Dette sikrer, at dine historiske data ikke går tabt, hvis en Prometheus-pod genstarter. Dette konfigureres typisk i en custom values.yaml-fil under installationen.
  • Sikkerhed i produktion: At bruge port-forward er fint til test og udvikling. I produktion bør du ikke eksponere dine dashboards direkte. Brug i stedet en Kubernetes Ingress med TLS og autentificering for at give sikker adgang.
  • Ressourceforbrug: Prometheus kan være ressourcekrævende, især i store klynger med mange targets. Sørg for at allokere tilstrækkelig CPU og hukommelse til dine Prometheus- og Grafana-pods og indstil passende resource requests og limits.
  • Label-matching: Husk, at en ServiceMonitor finder de tjenester, den skal overvåge, baseret på labels. Sørg for, at spec.selector.matchLabels i din ServiceMonitor-definition matcher de labels, der er sat på dine applikationers services.

Ofte Stillede Spørgsmål (FAQ)

Hvorfor bruge Prometheus Operator i stedet for en manuel installation?
Prometheus Operator automatiserer hele livscyklussen for din overvågningsstak. Den gør konfiguration, skalering og opdateringer markant nemmere og mindre fejlbehæftede ved at udnytte Kubernetes' egne API'er og mønstre.
Hvad er forskellen på en ServiceMonitor og en PodMonitor?
En ServiceMonitor er designet til at finde og scrape endpoints, der er eksponeret via en Kubernetes Service. Dette er den mest almindelige metode. En PodMonitor omgår servicen og scraper pod'ens IP-adresse direkte. Det kan være nyttigt i specifikke scenarier, f.eks. når en service ikke eksisterer for de pods, du vil overvåge.
Skal jeg eksponere min Prometheus-server offentligt?
Nej, generelt er dette en dårlig praksis fra et sikkerhedsperspektiv. Prometheus-serveren indeholder detaljerede oplysninger om din infrastruktur. Den bør kun fungere som en intern datakilde for Grafana. Hvis du har brug for ekstern adgang, skal den sikres grundigt via en Ingress med stærk autentificering og autorisation.
Hvordan overvåger jeg mine egne applikationer?
For at overvåge dine egne applikationer skal du først eksponere metrikker i Prometheus-format (typisk via et /metrics endpoint). Derefter opretter du en ServiceMonitor-ressource, der matcher labels på din applikations Kubernetes Service. Operatøren vil derefter automatisk konfigurere Prometheus til at begynde at indsamle data fra din applikation.

Konklusion

Ved at følge denne guide har du med succes implementeret en kraftfuld, skalerbar og Kubernetes-native overvågningsløsning på din Amazon EKS-klynge. Kombinationen af Prometheus Operator og Helm fjerner en stor del af den operationelle byrde, der historisk har været forbundet med at administrere en omfattende overvågningsinfrastruktur. Du har nu et solidt fundament for at opnå dyb indsigt i dine applikationers og din klynges ydeevne og sundhed, hvilket giver dig mulighed for proaktivt at identificere og løse problemer, før de påvirker dine brugere.

Hvis du vil læse andre artikler, der ligner Prometheus på EKS: En Komplet Guide til Overvågning, kan du besøge kategorien Teknologi.

Go up