Skip to main content
  • »
  • KUBERNETES »
  • Obserwowalność klastra Kubernetes za pomocą aplikacji Prometheus i Grafana w chmurze NSIS Cloud
  • NSIS Cloud

Obserwowalność klastra Kubernetes za pomocą aplikacji Prometheus i Grafana w chmurze NSIS Cloud

Złożone systemy wdrażane w Kubernetes korzystają z wielu zasobów Kubernetes. Takie wdrożenia często składają się z wielu przestrzeni nazw, podów i wielu innych obiektó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 aplikacji Prometheus i Grafana.

Co zostanie omówione?

  • Instalacja aplikacji Prometheus

  • Instalacja aplikacji Grafana

  • Dostęp do aplikacji Prometheus jako źródła danych dla aplikacji Grafana

  • Dodanie dashboardu obserwowalności klastra

Wymagania wstępne

Nr 1 Hosting

Wymagane jest konto hostingowe NSIS z interfejsem Horizon https://horizon.cloudferro.com.

Nr 2 Klaster utworzony w NSIS Cloud chmurze

Dostępny klaster Kubernetes. Wskazówki dotyczące tworzenia klastra Kubernetes można znaleźć w artykule Jak utworzyć klaster Kubernetes przy użyciu NSIS OpenStack Magnum.

Nr 3 Znajomość Helm

Aby uzyskać więcej informacji na temat korzystania z Helm i instalowania na Kubernetes aplikacji za pomocą Helm, zapoznaj się z artykułem Wdrażanie Helm Charts na klastrach Magnum Kubernetes w chmurze NSIS

Nr 4 Dostęp do interfejsu wiersza poleceń kubectl

Instrukcje dotyczące aktywacji kubectl znajdują się w artykule Jak uzyskać dostęp do klastra Kubernetes po wdrożeniu przy użyciu Kubectl na NSIS OpenStack Magnum?.

1. Instalacja aplikacji Prometheus i Grafany za pomocą Helm

Prometheus to zestaw narzędzi open source do monitorowania i ostrzegania, 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. Prometheus zapewnia język zapytań o nazwie PromQ w celu wydajnego dostępu do tych danych. W tym 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 chart Helm Prometheus:

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

Po prawidłowym wykonaniu powyższych poleceń wynik powinien być podobny do poniższego:

Zauważ, że dla uproszczenia wdrażamy chart Helm w domyślnej przestrzeni nazw. W środowisku produkcyjnym można rozważyć użycie dedykowanej przestrzeni nazw.

chart uruchamia w tle kilka podów Prometheus oraz jeden Grafany, co 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             2m41s
prometheus-grafana-7586584d85-24x5z                      3/3     Running   6 (30s ago)   2m46s
prometheus-kube-prometheus-operator-766f7cf6db-dp9bj     1/1     Running   0             2m46s
prometheus-kube-state-metrics-65d9b47fc5-xnlc2           1/1     Running   0             2m46s
prometheus-prometheus-kube-prometheus-prometheus-0       2/2     Running   0             2m41s
prometheus-prometheus-node-exporter-7qxdn                1/1     Running   0             2m47s
prometheus-prometheus-node-exporter-dr6rg                1/1     Running   0             2m46s
prometheus-prometheus-node-exporter-mb685                1/1     Running   0             2m47s
prometheus-prometheus-node-exporter-rm6jn                1/1     Running   0             2m46s
prometheus-prometheus-node-exporter-rwrrt                1/1     Running   0             2m47s

Podobnie wdrożono również kilka dedykowanych usług Kubernetes. Usługa prometheus-kube-prometheus-prometheus udostępnia dashboard 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 przejdź do przeglądarki i wpisz adres localhost:9090, aby zobaczyć wynik podobny do poniższego:

../_images/image2023-11-7_13-17-10_nsis_pl1.png

Zauważ, że gdy zaczniesz wpisywać ciąg znaków kube w wynikach wyszukiwania, autouzupełnianie sugeruje niektóre dostępne metryki z klastra Kubernetes. Wraz z instalacją chart Helm, metryki te zostały udostępnione aplikacji Prometheus, więc są przechowywane w bazie danych Prometheus i można je przeszukiwać.

../_images/image2023-11-7_13-22-56_nsis_pl1.png

Możesz wybrać jedną z metryk i nacisnąć przycisk Execute, 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. Dokładniejsze omówienie możliwości Prometheus GUI i składni PromQL wykracza poza zakres tego artykułu.

../_images/image2023-11-7_13-40-1_nsis_pl1.png

2. Uruchomienie aplikacji Grafana

Następnym krokiem jest podłączenie do aplikacji Grafana. Podczas instalacji pakietu Prometheus zainstalowaliśmy już repozytorium Grafanę, więc repozytorium aplikacji Grafana zostało również dodane do naszej lokalnej pamięci podręcznej. Pozostaje nam już tylko podłączyć się do aplikacji Grafana.

Pamiętaj, że jeśli chcesz zachować w przeglądarce aktywną sesję Prometheus z poprzedniego kroku, musisz uruchomić inny terminal Linux, aby kontynuować pracę z poniższą instrukcją instalacji.

Wygeneruj hasło dostępu do grafany.

kubectl get secret prometheus-grafana \
   -o jsonpath="{.data.admin-password}" | base64 -d

Teraz, podobnie jak w przypadku pakietu Prometheus, możemy uzyskać dostęp do dashboardu Grafana lokalnie w przeglądarce za pomocą polecenia port-forward:

kubectl port-forward svc/prometheus-grafana 3000:80

Następnie uzyskaj dostęp do dashboardu Grafana, wpisując w przeglądarce adres localhost:3000:

../_images/image2023-11-7_14-24-1_nsis_pl1.png

Wpisz login: admin i hasło wygenerowane automatycznie we wcześniejszym kroku.

3. Dodanie pakietu Prometheus jako źródło danych dla aplikacji Grafana

W tym kroku skonfigurujemy aplikację Grafana tak, aby używała naszej instalacji Prometheus jako źródła danych.

Aby kontynuować, kliknij menu Home w lewym górnym rogu interfejsu użytkownika Grafana, wybierz opcję Connections, a następnie Data sources:

../_images/image2023-11-7_14-47-56_nsis_pl1.png

Następnie wybierz opcję Add data source i wybierz Prometheus jako typ źródła danych. Zostanie wyświetlony następujący ekran:

../_images/image2023-11-7_14-54-8_nsis_pl1.png

Wystarczy zmienić wartość w polu „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 Save and test. Jeśli wszystko poszło prawidłowo, zobaczysz następujący ekran:

../_images/image2023-11-7_15-1-591.png

4. Dodanie dashboardu obserwowalności klastra

Moglibyśmy zbudować dashboard obserwowalności Kubernetes od podstaw, ale wolimy wykorzystać przygotowany przez nas dashboard.

Dashboard

Aby kontynuować, wybierz sekcję Dashboards z menu rozwijanego w lewym górnym rogu i kliknij Import:

../_images/image2023-11-7_15-15-23_nsis_pl1.png

Następnie w polu Import Dashboard zaimportuj ten plik który jest dashboardem obserwowalności Kubernetes.

../_images/image2023-11-7_15-16-10_nsis_pl1.png

Następnie zostanie wyświetlony kolejny ekran jak poniżej. Naciśnij przycisk Import:

../_images/importdashboard_nsis_pl1.png

W rezultacie dashboard obserwowalności Grafana Kubernetes zostanie wypełniony:

../_images/image2023-11-7_15-38-40_nsis_pl1.png

Co można zrobić dalej?

Możesz znaleźć i zaimportować wiele innych pulpitów nawigacyjnych obserwowalności Kubernetes,przeglądając stronę https://grafana.com/grafana/dashboards/. Niektóre przykłady to pulpity nawigacyjne z identyfikatorami 315, 15758, 15761 lub wiele innych.

Inne podejście do tworzenia dashboardu Kubernetes jest przedstawione w artykule

Korzystanie z dashboardu w celu uzyskania dostępu do klastra Kubernetes po wdrożeniu OpenStack Magnum w NSIS Cloud