Prometheus
Spickzettel für Monitoring-System Prometheus.
Links:
TODO
- Artikel: "My Philosophy on Alerting"
- PromQL Cheatsheet
Prometheus in Docker
Quelle: Vortrag "Monitoring mit Prometheus" von Michael Stapelberg
-
Verzeichnis für lokalen Prometheus anlegen:
mkdir prometheus cd prometheus
-
Prometheus in Docker starten:
docker run -p 9090:9090 prom/prometheus
-
Konfigurations-Seite von Prometheus öffnen: http://localhost:9090/config
-
Prometheus wieder stoppen
-
Default-Konfiguration in Zwischenablage kopieren und in
prometheus.yml
abspeichern:vi prometheus.yml
-
Evtl. Konfiguration ändern (z.B. Target hinzufügen, Details siehe Doku "Configuration").
-
Prometheus mit Konfiguration starten:
docker run -v $(pwd):/prometheus -p 9090:9090 prom/prometheus --config.file=/prometheus/prometheus.yml
-
Grafana in Docker starten:
docker run -p 3030:3000 grafana/grafana
- Hinweis: Ich verwende Port 3030, weil ich 3000 oft in node-Projekten verwenden. Der Port kann natürlich beliebig gewählt werden.
-
Grafana öffnen: http://localhost:3030 (User / Passwort:
admin
/admin
) -
Data Source einrichten:
- Unter Configuration -> Data Sources auf "Add data source" drücken.
- "Prometheus" auswählen
- URL eintragen (mit IP von Host-Rechner) - z.B.
http://192.168.0.10:9090
- Ganz unten auf "Save & Test" drücken
- Nun kann man Dashboards anlegen oder per Explore Metriken abfragen (letzteres geht natürlich auch direkt in Prometheus).
Prometheus in Kubernetes
kube-prometheus bietet einfache Installation eines kompletten Stack mit:
- prometheus-operator - Ein k8s-custom-controller für Prometheus. Erzeugt Prometheus-Instanzen in k8s. Bietet spezielle k8s-API-Resources, so dass man Prometheus nativ in k8s konfigurieren kann.
- Sammeln aller Basis-Metriken (via node_exporter und kube-state-metrics)
- Grafana
- Das alles vorkonfiguriert mit üblichen Alerts und Dashboards
kube-prometheus in minikube ausprobieren
Quelle: kube-prometheus
Minikube aktualisieren:
brew upgrade minikube
Minikube starten:
minikube delete && minikube start --kubernetes-version=v1.18.1 --memory=6g --bootstrapper=kubeadm --extra-config=kubelet.authentication-token-webhook=true --extra-config=kubelet.authorization-mode=Webhook --extra-config=scheduler.address=0.0.0.0 --extra-config=controller-manager.address=0.0.0.0
Kubernetes-eigenen metrics-server deaktivieren:
minikube addons disable metrics-server
kube-prometheus clonen:
git clone https://github.com/coreos/kube-prometheus.git
kube-prometheus in minikube deployen:
cd kube-prometheus
kubectl create -f manifests/setup
until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done
kubectl create -f manifests/
Dashboards anschauen:
-
Prometheus:
kubectl --namespace monitoring port-forward svc/prometheus-k8s 9090
Dann erreichbar unter: http://localhost:9090
-
Grafana:
kubectl --namespace monitoring port-forward svc/grafana 3000
Dann erreichbar unter: http://localhost:3000 (Default Grafana user:password:
admin:admin
) -
Alert Manager:
kubectl --namespace monitoring port-forward svc/alertmanager-main 9093
Dann erreichbar unter: http://localhost:9093
Optional: kube-prometheus wieder löschen:
kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup
kube-prometheus in kube-Cluster installieren
Webhook-Authentifizierung erlauben:
kops set cluster spec.kubelet.authenticationTokenWebhook=true
kops set cluster spec.kubelet.authorizationMode=Webhook
- Evtl. muss man vorher
export KOPS_FEATURE_FLAGS=SpecOverrideFlag
setzen.
kube-prometheus clonen:
git clone https://github.com/coreos/kube-prometheus.git
kube-prometheus im Cluster deployen:
cd kube-prometheus
kubectl create -f manifests/setup
until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done
kubectl create -f manifests/