Introductie
Organisaties die steeds vaker Kubernetes aannemen om hun containers te beheren, hebben een oplossing nodig om de gezondheid van hun gedistribueerde systeem te controleren. Om deze reden kom je bij Prometheus – een krachtige open-source tool om containerized applicaties te monitoren in je K8s-omgeving.
In deze zelfstudie leer je hoe je de Prometheus-stack installeert en configureert om alle pods van je DOKS-cluster te monitoren, evenals metrische gegevens van de Kubernetes-clusterstatus. Vervolgens verbind je Prometheus met Grafana om alle metingen te visualiseren en query’s uit te voeren met behulp van de PromQL-taal. Ten slotte configureer je persistente opslag voor je Prometheus-instantie om al je DOKS-cluster- en applicatiemetrieken op te slaan.
Inhoudsopgave
- Vereisten
- Stap 1 – Het installeren van de Prometheus-stack
- Stap 2 – Prometheus en Grafana configureren
- Stap 3 – PromQL (Prometheus Query-taal)
- Stap 4 – Metingen visualiseren met Grafana
- Stap 5 – Configuratie van Persistente Opslag voor Prometheus
- Stap 6 – Configuratie van Persistente Opslag voor Grafana
- Conclusie
Vereisten
Om deze handleiding te voltooien, heb je nodig:
- A Git client to clone the Starter Kit repository.
- Helm voor het beheren van Prometheus stack-releases en upgrades.
- Kubectl voor interactie met Kubernetes.
- Curl voor het testen van de voorbeelden (back-endapplicaties).
- Emojivoto Voorbeeldapp ingezet in de cluster. Volg de stappen in het README-bestand van de repository.
Zorg ervoor dat het kubectl
-context is geconfigureerd om naar uw Kubernetes-cluster te wijzen. Raadpleeg Stap 3 – Het DOKS-cluster maken uit de DOKS-installatiehandleiding.
Stap 1 – Het installeren van de Prometheus Stack
In deze stap installeert u de kube-prometheus
-stack, die een opiniated volledige monitoring stack voor Kubernetes is. Het bevat de Prometheus Operator, kube-state-metrics
, vooraf gebouwde manifesten, Node Exporters, Metrics API, Alerts Manager en Grafana.
U gaat de Helm-pakketbeheerder gebruiken om deze taak uit te voeren. Het Helm-chart is beschikbaar hier voor studie.
Eerst kloont u de Starter Kit-repository en wijzigt u de directory naar uw lokale kopie.
Vervolgens voegt u het Helm-repository toe en geeft u de beschikbare charts weer:
De output ziet er vergelijkbaar uit als volgt:
NAME CHART VERSION APP VERSION DESCRIPTION
prometheus-community/alertmanager 0.18.1 v0.23.0 The Alertmanager handles alerts sent by client ...
prometheus-community/kube-prometheus-stack 35.5.1 0.56.3 kube-prometheus-stack collects Kubernetes manif...
...
Het interessante chart is prometheus-community/kube-prometheus-stack
dat Prometheus, Promtail, Alertmanager en Grafana op het cluster zal installeren. Bezoek alstublieft de kube-prometheus-stack-pagina voor meer details over dit chart.
Vervolgens opent en inspecteert u het bestand 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
dat wordt verstrekt in de Starter Kit-repository met een editor naar keuze (bij voorkeur met YAML-lintondersteuning). Standaard zijn de metrieken van kubeSched
en etcd
uitgeschakeld – deze componenten worden beheerd door DOKS
en zijn niet toegankelijk voor Prometheus. Merk op dat de opslag is ingesteld op emptyDir
. Dit betekent dat de opslag verloren gaat als de Prometheus-pods opnieuw worden gestart (dit wordt later opgelost in de Configuratie van Persistent Storage voor Prometheus-sectie).
[OPTIONEEL] Als u Stap 4 – Het toevoegen van een toegewijde node voor observability hebt gevolgd van de gids voor het opzetten van een door DigitalOcean beheerde Kubernetes-cluster, moet u het bestand 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
in de Starter Kit-repository bewerken en de affinity
-secties voor zowel Grafana als Prometheus uitcommentariëren.
Uitleg voor de bovenstaande configuratie:
preferredDuringSchedulingIgnoredDuringExecution
– de planner probeert een node te vinden die aan de regel voldoet. Als er geen overeenkomstige node beschikbaar is, plant de planner de pod toch in.voorkeur.matchExpressies
– selector gebruikt om een specifieke node te matchen op basis van een criterium. Het bovenstaande voorbeeld vertelt de planner om workloads (bijv. Pods) op nodes te plaatsen die zijn gelabeld met sleutel –voorkeur
en waarde –observability
.
Tenslotte, installeer de kube-prometheus-stack
, gebruikmakend van Helm
:
A specific version of the Helm chart is used. In this case 35.5.1
was picked, which maps to the 0.56.3
version of the application (see output from Step 2.). It’s a good practice to lock on a specific version. This helps to have predictable results and allows versioning control via Git.
–create-namespace \
Controleer nu de status van de Prometheus stack Helm release:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
kube-prom-stack monitoring 1 2022-06-07 09:52:53.795003 +0300 EEST deployed kube-prometheus-stack-35.5.1 0.56.3
De output ziet er vergelijkbaar uit als volgt. Let op de waarde van de kolom STATUS
– deze moet uitgevoerd
zeggen.
Zie welke Kubernetes resources beschikbaar zijn voor Prometheus:
NAME READY STATUS RESTARTS AGE
pod/alertmanager-kube-prom-stack-kube-prome-alertmanager-0 2/2 Running 0 3m3s
pod/kube-prom-stack-grafana-8457cd64c4-ct5wn 2/2 Running 0 3m5s
pod/kube-prom-stack-kube-prome-operator-6f8b64b6f-7hkn7 1/1 Running 0 3m5s
pod/kube-prom-stack-kube-state-metrics-5f46fffbc8-mdgfs 1/1 Running 0 3m5s
pod/kube-prom-stack-prometheus-node-exporter-gcb8s 1/1 Running 0 3m5s
pod/kube-prom-stack-prometheus-node-exporter-kc5wz 1/1 Running 0 3m5s
pod/kube-prom-stack-prometheus-node-exporter-qn92d 1/1 Running 0 3m5s
pod/prometheus-kube-prom-stack-kube-prome-prometheus-0 2/2 Running 0 3m3s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 3m3s
service/kube-prom-stack-grafana ClusterIP 10.245.147.83 <none> 80/TCP 3m5s
service/kube-prom-stack-kube-prome-alertmanager ClusterIP 10.245.187.117 <none> 9093/TCP 3m5s
service/kube-prom-stack-kube-prome-operator ClusterIP 10.245.79.95 <none> 443/TCP 3m5s
service/kube-prom-stack-kube-prome-prometheus ClusterIP 10.245.86.189 <none> 9090/TCP 3m5s
service/kube-prom-stack-kube-state-metrics ClusterIP 10.245.119.83 <none> 8080/TCP 3m5s
service/kube-prom-stack-prometheus-node-exporter ClusterIP 10.245.47.175 <none> 9100/TCP 3m5s
service/prometheus-operated ClusterIP None <none> 9090/TCP 3m3s
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/kube-prom-stack-prometheus-node-exporter 3 3 3 3 3 <none> 3m5s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/kube-prom-stack-grafana 1/1 1 1 3m5s
deployment.apps/kube-prom-stack-kube-prome-operator 1/1 1 1 3m5s
deployment.apps/kube-prom-stack-kube-state-metrics 1/1 1 1 3m5s
NAME DESIRED CURRENT READY AGE
replicaset.apps/kube-prom-stack-grafana-8457cd64c4 1 1 1 3m5s
replicaset.apps/kube-prom-stack-kube-prome-operator-6f8b64b6f 1 1 1 3m5s
replicaset.apps/kube-prom-stack-kube-state-metrics-5f46fffbc8 1 1 1 3m5s
NAME READY AGE
statefulset.apps/alertmanager-kube-prom-stack-kube-prome-alertmanager 1/1 3m3s
statefulset.apps/prometheus-kube-prom-stack-kube-prome-prometheus 1/1 3m3s
Je zou de volgende resources moeten hebben ingezet: prometheus-node-exporter
, kube-prome-operator
, kube-prome-alertmanager
, kube-prom-stack-grafana
, en kube-state-metrics
. De output ziet er vergelijkbaar uit als volgt:
Vervolgens kun je verbinding maken met Grafana (gebruikmakend van standaard referenties: admin/prom-operator
– zie prom-stack-values-v35.5.1 bestand), door door te sturen naar de lokale machine:
Je zou NIET Grafana moeten blootstellen aan het openbare netwerk (bijv. maak geen ingangsmapping of LB-service) met standaard aanmeldgegevens
.
De installatie van Grafana wordt geleverd met verschillende dashboards. Open een webbrowser op localhost:3000. Eenmaal binnen, kunt u naar Dashboard -> Bladeren gaan en verschillende dashboards kiezen.
In het volgende gedeelte ontdekt u hoe u Prometheus kunt instellen om doelen voor monitoring te ontdekken. Als voorbeeld wordt de voorbeeldtoepassing Emojivoto
gebruikt. U leert ook wat een ServiceMonitor
is.
Stap 2 – Prometheus en Grafana configureren
U heeft Prometheus en Grafana al in het cluster ingezet. In deze stap leert u hoe u een ServiceMonitor
kunt gebruiken. Een ServiceMonitor is een van de voorkeursmethoden om Prometheus te vertellen hoe een nieuw doel voor monitoring ontdekt kan worden.
De in Stap 5 van de Vereisten-sectie gecreëerde Emojivoto-implementatie biedt standaard de /metrics
-eindpunt aan op poort 8801
via een Kubernetes-service.
Vervolgens ontdekt u de Emojivoto-services die verantwoordelijk zijn voor het blootstellen van metrische gegevens voor Prometheus om te consumeren. De betreffende services worden emoji-svc
en voting-svc
genoemd (let op: het gebruikt de emojivoto
-namespace):
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
emoji-svc ClusterIP 10.245.135.93 <none> 8080/TCP,8801/TCP 22h
voting-svc ClusterIP 10.245.164.222 <none> 8080/TCP,8801/TCP 22h
web-svc ClusterIP 10.245.61.229 <none> 80/TCP 22h
De uitvoer ziet er ongeveer als volgt uit:
Vervolgens voert u een port-forward
uit om de metrieken te inspecteren:
De blootgestelde metrieken kunnen worden gevisualiseerd door te navigeren met een webbrowser naar localhost of via curl:
Het uitvoer ziet er vergelijkbaar uit als het volgende:
go_gc_duration_seconds{quantile="0"} 5.317e-05
go_gc_duration_seconds{quantile="0.25"} 0.000105305
go_gc_duration_seconds{quantile="0.5"} 0.000138168
go_gc_duration_seconds{quantile="0.75"} 0.000225651
go_gc_duration_seconds{quantile="1"} 0.016986437
go_gc_duration_seconds_sum 0.607979843
go_gc_duration_seconds_count 2097
# TYPE go_gc_duration_seconds summary
Om de metrieken voor de voting-svc
service te inspecteren, stop de doorsturing van poort emoji-svc
en voer dezelfde stappen uit voor de tweede service.
- Vervolgens, verbind Prometheus met de Emojivoto metriekenservice. Er zijn verschillende manieren om dit te doen:
- <static_config> – maakt het mogelijk om een lijst van doelen en een gemeenschappelijke labelset voor hen te specificeren.
- <kubernetes_sd_config> – maakt het mogelijk om schraapdoelen op te halen uit de Kubernetes’ REST API en altijd gesynchroniseerd te blijven met de clusterstatus.
Prometheus Operator – vereenvoudigt Prometheus monitoring binnen een Kubernetes cluster via CRD’s.
Vervolgens, zult u gebruik maken van de ServiceMonitor
CRD blootgesteld door de Prometheus Operator om een nieuw doel voor monitoring te definiëren.
Verander eerst de directory (indien nog niet) waar de Starter Kit Git repository gekloond was:
Vervolgens opent u het bestand 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
in de Starter Kit repository met een teksteditor naar keuze (bij voorkeur met YAML lint-ondersteuning). Verwijder alstublieft de opmerkingen rond de sectie additionalServiceMonitors
. De uitvoer ziet er ongeveer als volgt uit:
- Uitleg voor de bovenstaande configuratie:
selector -> matchExpressions
– verteltServiceMonitor
welke service moet worden bewaakt. Het zal alle services targeten met de label sleutel app en de waardenemoji-svc
envoting-svc
. De labels kunnen worden opgehaald door te draaien:kubectl get svc --show-labels -n emojivoto
namespaceSelector
– hier wilt u overeenkomen met de namespace waarinEmojivoto
is ingezet.
endpoints -> port
– verwijst naar de poort van de service om te bewaken.
Tenslotte, pas de wijzigingen toe met Helm:
Vervolgens, controleer of het Emojivoto
doel is toegevoegd aan Prometheus voor scraping. Maak een port forwarding voor Prometheus op poort 9090
:
Open een webbrowser op localhost:9090. Navigeer vervolgens naar de pagina Status -> Targets en inspecteer de resultaten (let op het pad serviceMonitor/monitoring/emojivoto-monitor/0
):
Er zijn 2 items onder de ontdekte doelen omdat de implementatie van Emojivoto
bestaat uit 2 services die het metriek eindpunt blootleggen.
In de volgende stap zul je PromQL ontdekken samen met enkele eenvoudige voorbeelden om je op weg te helpen en de taal te leren.
Stap 3 – PromQL (Prometheus Query Language)
In deze stap leer je de basisprincipes van de Prometheus Query Language (PromQL). PromQL helpt je bij het uitvoeren van queries op verschillende metrieken die afkomstig zijn van alle Pods en applicaties van je DOKS-cluster.
PromQL is een DSL of Domein Specifieke Taal die specifiek is gebouwd voor Prometheus en stelt je in staat om te zoeken naar metrieken. De algehele expressie bepaalt de uiteindelijke waarde, terwijl geneste expressies waarden voor argumenten en operanden vertegenwoordigen. Voor meer diepgaande uitleg kun je terecht op de officiële PromQL pagina.
Vervolgens ga je een van de Emojivoto
-metrieken inspecteren, namelijk de emojivoto_votes_total
, die het totale aantal stemmen vertegenwoordigt. Het is een tellerwaarde die toeneemt bij elke aanvraag tegen het Emojivoto
-stemmen eindpunt.
Eerst maak je een poortdoorstuurschakeling voor Prometheus op poort 9090
:
Vervolgens open je de expressiebrowser.
emojivoto_votes_total{container="voting-svc", emoji=":100:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 20
emojivoto_votes_total{container="voting-svc", emoji=":bacon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 17
emojivoto_votes_total{container="voting-svc", emoji=":balloon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 21
emojivoto_votes_total{container="voting-svc", emoji=":basketball_man:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beach_umbrella:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beer:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 11
In het query-invoerveld plak je emojivoto_votes_total
en druk je op enter. De uitvoer ziet er ongeveer zo uit:
Navigeer naar de Emojivoto
applicatie en klik op de homepage op de 100 emoji om ervoor te stemmen.
emojivoto_votes_total{container="voting-svc", emoji=":100:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 21
emojivoto_votes_total{container="voting-svc", emoji=":bacon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 17
emojivoto_votes_total{container="voting-svc", emoji=":balloon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 21
emojivoto_votes_total{container="voting-svc", emoji=":basketball_man:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beach_umbrella:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beer:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 11
Navigeer naar de pagina met queryresultaten van stap 3 en klik op de Uitvoeren knop. U zou de teller voor de 100 emoji met één moeten zien toenemen. De uitvoer ziet er vergelijkbaar uit:
PromQL groepeert vergelijkbare gegevens in wat een vector wordt genoemd. Zoals hierboven te zien is, heeft elke vector een reeks kenmerken die hem van elkaar onderscheiden. U kunt resultaten groeperen op basis van een interessant kenmerk. Als u bijvoorbeeld alleen geïnteresseerd bent in verzoeken die afkomstig zijn van de voting-svc
service, typt u het volgende in het queryveld:
emojivoto_votes_total{container="voting-svc", emoji=":100:", endpoint="prom", instance="10.244.6.91:8801", job="voting-svc", namespace="emojivoto", pod="voting-6548959dd7-hssh2", service="voting-svc"} 492
emojivoto_votes_total{container="voting-svc", emoji=":bacon:", endpoint="prom", instance="10.244.6.91:8801", job="voting-svc", namespace="emojivoto", pod="voting-6548959dd7-hssh2", service="voting-svc"} 532
emojivoto_votes_total{container="voting-svc", emoji=":balloon:", endpoint="prom", instance="10.244.6.91:8801", job="voting-svc", namespace="emojivoto", pod="voting-6548959dd7-hssh2", service="voting-svc"} 521
De uitvoer ziet er vergelijkbaar uit (let op dat het alleen de resultaten selecteert die overeenkomen met uw criteria):
Het bovenstaande resultaat toont het totale aantal verzoeken voor elke Pod van de Emojivoto
implementatie die metrieken genereert (die uit 2 bestaat).
Dit is slechts een zeer eenvoudige kennismaking met wat PromQL is en waartoe het in staat is. Maar het kan veel meer dan dat, zoals het tellen van metrieken, het berekenen van het tarief over een vooraf gedefinieerd interval, enzovoort. Bezoek alstublieft de officiële PromQL pagina voor meer functies van de taal.
In de volgende stap leert u hoe u Grafana kunt gebruiken om metrieken te visualiseren voor de voorbeeldtoepassing Emojivoto
.
Stap 4 – Visualiseren van Metingen met Grafana
Hoewel Prometheus enige ingebouwde ondersteuning heeft voor het visualiseren van gegevens, is een betere manier om dit te doen via Grafana, een open-source platform voor monitoring en observatie dat je in staat stelt de staat van je cluster te visualiseren en te verkennen.
De officiële pagina beschrijft het als volgt:
Vraag gegevens op, visualiseer ze, stel waarschuwingen in en begrijp je gegevens, ongeacht waar ze zijn opgeslagen.
Er zijn geen extra stappen nodig om Grafana te installeren, omdat Stap 1 – Het Prometheus-stack installeren Grafana voor je heeft geïnstalleerd. Het enige wat je hoeft te doen is een poort doorsturen zoals hieronder en direct toegang krijgen tot de dashboards (standaardreferenties: admin/prom-monitor
):
Om alle Emojivoto
-metingen te zien, ga je een van de standaard geïnstalleerde dashboards van Grafana gebruiken.
Navigeer naar de Grafana Dashboards-sectie.
Zoek vervolgens naar het dashboard Algemeen/Kubernetes/Rekenbronnen/Namespace(Pods) en open het.
Selecteer tot slot de Prometheus-datasource en voeg de namespace emojivoto
toe.
U kunt experimenteren en meer panelen toevoegen in Grafana om andere gegevensbronnen te visualiseren, en ze ook groeperen op basis van scope. Ook kunt u de beschikbare dashboards voor Kubernetes verkennen vanuit het Grafana kube-mixin project.
In de volgende stap gaat u persistente opslag configureren voor Prometheus met behulp van DigitalOcean blokopslag om uw DOKS en applicatiemetrics te behouden bij het opnieuw opstarten van servers of bij clusterstoringen.
Stap 5 – Het configureren van Persistente Opslag voor Prometheus
In deze stap leert u hoe u persistente opslag inschakelt voor Prometheus zodat metriekgegevens behouden blijven bij het opnieuw opstarten van servers, of in geval van clusterstoringen.
Eerst heeft u een opslagklasse nodig om verder te gaan. Voer het volgende commando uit om te controleren welke beschikbaar is.
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
do-block-storage (default) dobs.csi.digitalocean.com Delete Immediate true 4d2h
De uitvoer zou er ongeveer als volgt uit moeten zien. Let op dat DigitalOcean Blokopslag beschikbaar is om te gebruiken.
Vervolgens, wijzig de directory (indien nog niet gedaan) waar de Starter Kit Git repository is gekloond:
Vervolgens, open het bestand 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
dat wordt verstrekt in de Starter Kit repository met een teksteditor naar keuze (bij voorkeur met YAML-lintondersteuning). Zoek naar de regel storageSpec
en haal de vereiste sectie voor Prometheus uit commentaar. De definitie van storageSpec
moet er als volgt uitzien:
- Verklaringen voor de bovenstaande configuratie:
volumeClaimTemplate
– definieert een nieuwe PVC.storageClassName
– definieert de opslagklasse (moet dezelfde waarde gebruiken als uitvoer van de opdrachtkubectl get storageclass
).
resources
– stelt de waarde van de opslagaanvragen in. In dit geval wordt een totale capaciteit van 5 Gi aangevraagd voor het nieuwe volume.
Tenslotte, pas de instellingen toe met Helm:
Na het voltooien van de bovenstaande stappen, controleer de status van de PVC:
NAME STATUS VOLUME CAPACITY ACCESS MODES AGE
kube-prome-prometheus-0 Bound pvc-768d85ff-17e7-4043-9aea-4929df6a35f4 5Gi RWO do-block-storage 4d2h
A new Volume should appear in the Volumes web page from your DigitalOcean account panel:
De uitvoer ziet er vergelijkbaar uit met het volgende. De kolom STATUS
zou Bound
moeten weergeven.
Stap 6 – Configuratie van Persistent Storage voor Grafana
In deze stap leer je hoe je persistente opslag inschakelt voor Grafana, zodat de grafieken behouden blijven bij serverherstarts of bij clusterstoringen. Je zal een Persistent Volume Claim (PVC) van 5 Gi definiëren, met behulp van de DigitalOcean Block Storage. De volgende stappen zijn hetzelfde als Stap 5 – Configuratie van Persistente Opslag voor Prometheus.
Eerst open je het bestand 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
dat wordt verstrekt in de Starter Kit repository, met een teksteditor naar keuze (bij voorkeur met YAML-lintondersteuning). De sectie voor persistentieopslag voor Grafana zou er als volgt uit moeten zien:
Vervolgens pas je de instellingen toe met Helm:
Na het voltooien van de bovenstaande stappen, controleer je de status van de PVC:
NAME STATUS VOLUME CAPACITY ACCESS MODES AGE
kube-prom-stack-grafana Bound pvc-768d85ff-17e7-4043-9aea-4929df6a35f4 5Gi RWO do-block-storage 4d2h
A new Volume should appear in the Volumes web page from your DigitalOcean account panel:
De uitvoer ziet er vergelijkbaar uit met het volgende. De kolom STATUS
moet Bound
weergeven.
Beste Praktijken voor PV Dimensionering
- Om de benodigde grootte voor het volume te berekenen op basis van je behoeften, volg je alstublieft het advies en de formule uit de officiële documentatie:
- Prometheus slaat gemiddeld slechts 1-2 bytes per monster op. Dus, om de capaciteit van een Prometheus-server te plannen, kunt u de ruwe formule gebruiken:
benodigde_schijfruimte = retentietijd_seconden * geïnjecteerde_monsters_per_seconde * bytes_per_monster
Om het tempo van geïnjecteerde monsters te verlagen, kunt u ofwel het aantal tijdreeksen verminderen dat u schraapt (minder doelen of minder reeksen per doel), of u kunt het schraapinterval verhogen. Het verminderen van het aantal reeksen is echter waarschijnlijk effectiever, vanwege de compressie van monsters binnen een reeks.
Volg alstublieft de Operationele Aspecten sectie voor meer details over het onderwerp.
In deze tutorial heb je geleerd hoe je de Prometheus-stack installeert en configureert, vervolgens Grafana gebruikt om nieuwe dashboards te installeren en DOKS-cluster applicatiemetrics te visualiseren. Je hebt ook geleerd hoe je metrische queries uitvoert met PromQL. Ten slotte heb je persistent storage geconfigureerd en ingeschakeld voor Prometheus om je clustermetingen op te slaan.
- Meer informatie
- Kubernetes Log Monitoring en Retentie met Grafana Loki en DigitalOcean Spaces
- Best Practices bij het Monitoren van een Kubernetes-cluster met Prometheus, Grafana en Loki
Stel DOKS Cluster Monitoring in met Helm en Prometheus Operator