Skip to main content
  • »
  • KUBERNETES »
  • Obserwowalność klastra Kubernetes za pomocą Prometheus i Grafana na NSIS

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:

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

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ć.

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

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).

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

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:

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

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:

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

Następnie wybierz Add data source i wybierz Prometheus jako typ źródła danych. Pojawi się następujący ekran:

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

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:

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

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:

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

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/.

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

Następnie pojawi się kolejny ekran, jak poniżej. Zmień źródło danych na Prometheus i naciśnij przycisk Import:

../_images/importdashboard.png

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

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

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:

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