Obserwowalność klastra Kubernetes za pomocą Prometheus i Grafana na NSIS
Złożone systemy wdrożone w Kubernetes korzystają z wielu zasobów Kubernetes. Takie wdrożenia często składają się z wielu przestrzeni nazw, kapsuł i wielu innych podmiotów, które przyczyniają się do zużycia zasobów klastra.
Aby umożliwić odpowiedni wgląd w sposób wykorzystania zasobów klastra i umożliwić optymalizację ich wykorzystania, potrzebna jest funkcjonalna konfiguracja obserwowalności klastra.
W tym artykule przedstawimy wykorzystanie popularnego stosu obserwowalności typu open source składającego się z Prometheus i Grafana.
Co będziemy omawiać?
Zainstaluj Prometheus
Zainstaluj Grafanę
Dostęp do Prometheus jako źródła danych dla Grafany
Dodaj pulpit nawigacyjny obserwowalności klastra
Wymagania wstępne
Nr 1 Hosting
Potrzebne jest konto hostingowe NSIS z interfejsem Horizon https://horizon.cloudferro.com.
Nr 2 Klaster utworzony na chmurze
Dostępny jest klaster Kubernetes. Wskazówki dotyczące tworzenia klastra Kubernetes można znaleźć w Jak utworzyć klaster Kubernetes przy użyciu NSIS OpenStack Magnum.
Nr 3 Znajomość sterów
Aby uzyskać więcej informacji na temat korzystania z Helm i instalowania aplikacji z Helm na Kubernetes, zapoznaj się z Wdrażanie Helm Charts na klastrach Magnum Kubernetes w chmurze NSIS Cloud
Nr 4 Dostęp do wiersza poleceń kubectl
Instrukcje dotyczące aktywacji kubectl znajdują się w: Jak uzyskać dostęp do klastra Kubernetes po wdrożeniu przy użyciu Kubectl na NSIS OpenStack Magnum?.
1. Zainstaluj Prometheus z Helm
Prometheus to zestaw narzędzi do monitorowania i ostrzegania o otwartym kodzie źródłowym, szeroko stosowany w domenach administracji systemami i DevOps. Prometheus jest dostarczany z bazą danych szeregów czasowych, która może przechowywać metryki generowane przez różne inne systemy i narzędzia programowe. Zapewnia on język zapytań o nazwie PromQL w celu wydajnego dostępu do tych danych. W naszym przypadku użyjemy Prometheus, aby uzyskać dostęp do metryk generowanych przez nasz klaster Kubernetes.
Będziemy korzystać z dystrybucji Prometheus dostarczonej za pośrednictwem Bitnami, więc pierwszym krokiem jest pobranie Bitnami do naszego lokalnego cache repozytorium Helm. Aby to zrobić, wpisz następujące polecenie:
helm repo add bitnami https://charts.bitnami.com/bitnami
Następnie pobierz wykres Prometheus Helm:
helm install prometheus bitnami/kube-prometheus
Po prawidłowym zastosowaniu powyższych poleceń wynik powinien być podobny do poniższego:
NAME: prometheus
LAST DEPLOYED: Thu Nov 2 09:22:38 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: kube-prometheus
CHART VERSION: 8.21.2
APP VERSION: 0.68.0
Zauważ, że dla uproszczenia wdrażamy wykres Helm w domyślnej przestrzeni nazw. W przypadku produkcji można rozważyć użycie dedykowanej przestrzeni nazw.
Za kulisami, kilka kapsuł Prometheus jest uruchamianych przez wykres, który można zweryfikować w następujący sposób:
kubectl get pods
...
NAME READY STATUS RESTARTS AGE
alertmanager-prometheus-kube-prometheus-alertmanager-0 2/2 Running 0 2m39s
prometheus-kube-prometheus-blackbox-exporter-5cf8597545-22wxc 1/1 Running 0 2m51s
prometheus-kube-prometheus-operator-69584c98f-7wwrg 1/1 Running 0 2m51s
prometheus-kube-state-metrics-db4f67c5c-h77lb 1/1 Running 0 2m51s
prometheus-node-exporter-8twzf 1/1 Running 0 2m51s
prometheus-node-exporter-sc8d7 1/1 Running 0 2m51s
prometheus-prometheus-kube-prometheus-prometheus-0 2/2 Running 0 2m39s
Podobnie, wdrożono również kilka dedykowanych usług Kubernetes. Usługa prometheus-kube-prometheus-prometheus udostępnia pulpit nawigacyjny Prometheus. Aby uzyskać dostęp do tej usługi w przeglądarce na domyślnym porcie 9090, wpisz następujące polecenie:
kubectl port-forward svc/prometheus-kube-prometheus-prometheus 9090:9090
Następnie wejdź do przeglądarki przez localhost:9090, aby zobaczyć wynik podobny do poniższego:
Zauważ, że gdy zaczniesz wpisywać kube w wynikach wyszukiwania, autouzupełnianie sugeruje niektóre metryki dostępne z naszego klastra Kubernetes. Wraz z instalacją wykresu Helm, metryki te zostały udostępnione Prometheusowi, więc są przechowywane w bazie danych Prometheus i można o nie pytać.
Możesz wybrać jedną z metryk i nacisnąć przycisk Wykonaj, aby przetworzyć zapytanie o statystyki tej metryki. Na przykład wstaw następujące wyrażenie
kube_pod_info{namespace="default"}
aby zapytać o wszystkie pody w domyślnej przestrzeni nazw. (Dalsze omówienie możliwości Prometheus GUI i składni PromQL wykracza poza zakres tego artykułu).
2. zainstalować Grafanę
Następnym krokiem jest instalacja Grafany. Dodaliśmy już repozytorium Bitnami podczas instalacji Prometheusa, więc repozytorium Grafany również zostało dodane do naszej lokalnej pamięci podręcznej. Pozostaje nam już tylko zainstalować Grafanę.
Pamiętaj, że jeśli chcesz zachować aktywną sesję przeglądarki Prometheus z poprzedniego kroku, będziesz musiał uruchomić inny terminal Linux, aby kontynuować poniższą instrukcję instalacji.
Domyślnie Grafana chart zostanie zainstalowana z losowym, automatycznie wygenerowanym hasłem administratora. Możemy nadpisać jedno z ustawień Helm, aby zdefiniować własne hasło, w tym przypadku: ownpassword, dla uproszczenia demo:
helm install grafana bitnami/grafana --set admin.password=ownpassword
Jeśli wolisz pozostać przy ustawieniach domyślnych, zamiast powyższego polecenia użyj następujących poleceń, aby zainstalować wykres i wyodrębnić automatycznie wygenerowane hasło:
helm install grafana bitnami/grafana
echo "Password: $(kubectl get secret grafana-admin --namespace default -o jsonpath="{.data.GF_SECURITY_ADMIN_PASSWORD}" | base64 -d)"
W wyniku instalacji wykresu zostanie wygenerowany pojedynczy pod. Przed wykonaniem kolejnych kroków należy poczekać, aż ta kapsuła będzie gotowa:
kubectl get pods
NAME READY STATUS RESTARTS AGE
...
grafana-fb6877dbc-5jvjc 1/1 Running 0 65s
...
Teraz, podobnie jak w przypadku Prometheusa, możemy uzyskać dostęp do dashboardu Grafany lokalnie w przeglądarce za pomocą polecenia port-forward:
kubectl port-forward svc/grafana 8080:3000
Następnie uzyskaj dostęp do pulpitu nawigacyjnego Grafana, wpisując localhost:8080 w przeglądarce:
Wpisz login: admin i hasło ownpassword (lub hasło wygenerowane automatycznie we wcześniejszym kroku).
3. Dodaj Prometheus jako źródło danych do Grafana
W tym kroku skonfigurujemy Grafanę tak, aby używała naszej instalacji Prometheus jako źródła danych.
Aby kontynuować, kliknij menu Home w lewym górnym rogu Grafana UI, wybierz Connections, a następnie Data sources:
Następnie wybierz Add data source i wybierz Prometheus jako typ źródła danych. Pojawi się następujący ekran:
Wystarczy zmienić pole „Prometheus server URL” na http://prometheus-kube-prometheus-prometheus.default.svc.cluster.local:9090, które reprezentuje adres usługi Prometheus Kubernetes odpowiedzialnej za udostępnianie metryk.
Naciśnij przycisk Zapisz i przetestuj. Jeśli wszystko poszło dobrze, zobaczysz następujący ekran:
4. Dodaj pulpit nawigacyjny obserwowalności klastra
Moglibyśmy zbudować dashboard obserwowalności Kubernetes od podstaw, ale wolimy wykorzystać jeden z już dostępnych dashboardów open-source.
Aby kontynuować, wybierz sekcję Dashboards z rozwijanego menu w lewym górnym rogu i kliknij Import:
Następnie w polu import via grafana.com wpisz 10000, który jest identyfikatorem dashboardu obserwowalności Kubernetes z marketplace grafana.com reprezentowanego w: https://grafana.com/grafana/dashboards/10000-kubernetes-cluster-monitoring-via-prometheus/.
Następnie pojawi się kolejny ekran, jak poniżej. Zmień źródło danych na Prometheus i naciśnij przycisk Import:
W rezultacie pulpit nawigacyjny obserwowalności Grafana Kubernetes zostanie wypełniony:
Co robić dalej
Przeglądając stronę https://grafana.com/grafana/dashboards/, można znaleźć i zaimportować wiele innych pulpitów nawigacyjnych dla obserwowalności Kubernetes. Niektóre przykłady to dashboardy o ID: 315, 15758, 15761 lub wiele innych.
Poniższy artykuł przedstawia inne podejście do tworzenia pulpitu nawigacyjnego Kubernetes: