Podręcznik użytkownika systemu EZD RP

Instrukcja instalacji Grafana Loki

Instalację Grafana Loki należy przeprowadzić na serwerze, na którym wcześniej zainstalowano EZD RP. W trakcie procesu instalacyjnego wykorzystywane będzie repozytorium git.eadministracja.nask.pl. Poniżej przedstawiona została instalacja z wykorzystaniem Ranchera.

1. Przygotowanie namespace o nazwie loki

W sekcji Cluster należy wybrać zakładkę Projects/Namespaces, a następnie kliknąć przycisk Create Namespace.

W polu Name wprowadzamy nazwę loki (należy używać wyłącznie tej nazwy) i klikamy przycisk Create.

Pojawi się przestrzeń nazw (namespace) o nazwie loki.

W polu na górze strony wybieramy przestrzeń nazw (namespace) loki.

2. Instalacja certyfikatu dla domeny, na której już działa EZD RP, w namespace loki

W sekcji Storage należy wybrać zakładkę Secrets, a następnie kliknąć przycisk Create.

Wybieramy TLS Certificate.

W wyświetlonym oknie podajemy niezbędne dane: w polu Name wpisujemy certyfikat, a do sekcji Private KeyCertificate wklejamy zawartość klucza prywatnego i publicznego.

3. Weryfikacja storage

W sekcji Storage klikamy zakładkę StorageClasses i sprawdzamy, jaki rodzaj storage jest wykorzystywany na naszym klastrze.

Jeśli ustawiony jest local-path, możemy pominąć ten punkt.

Natomiast jeśli jest to NFS (Network File System), musimy ustawić go jako domyślny. W tym celu klikamy ikonę menu podręcznego (trzy kropki).

Następnie spośród dostępnych opcji wybieramy Set as Default.

Ikona potwierdzenia sygnalizuje udaną zmianę ustawień.

W następnym kroku trzeba sprawdzić, czy na serwerze, na którym działa NFS, jest ustawiony parametr no_root_squash.

sudo nano /etc/exports

Dodajemy no_root_squash.

Aby wprowadzić zmiany, można korzystać z edytorów takich jak vi, vim, nano. W naszym przypadku użyliśmy nano. W edytorze poruszamy się za pomocą strzałek oraz skrótów klawiaturowych widocznych na dole ekranu edytora. Zmiany zapisujemy przy użyciu skrótu Ctrl+x.

Następnie restartujemy serwer NFS.

sudo systemctl restart nfs-server

4. Instalacja

W sekcji Apps należy wybrać zakładkę Charts, a następnie w polu filtrowania wpisać loki. Wybieramy pozycję loki-stack.

W kolejnym kroku klikamy przycisk Install.

Następnie weryfikujemy namespace loki. W polu Name wprowadzamy nazwę loki (należy używać wyłącznie tej nazwy) i klikamy przycisk Next.

W polu Domain for grafana installation wpisujemy nazwę domeny z przedrostkiem grafana (np. grafana.twoja_domena.pl dla certyfikatu twoja_domena.pl) i wpisujemy nazwę certyfikatu TLS (certyfikat), którą wcześniej podaliśmy w zakładce Storage > Credentials. Następnie klikamy przycisk Install.

Modyfikacja paramertów retencji i wielkości logów

W zakładce Edit YAML możemy ustawić retencję oraz wielkości plików dla logów i metryk.

Odszukujemy parametr odpowiedzialny za retencję logów to retention_period (wartość należy podawać w godzinach, domyślne ustawienie to 168 godziny, czyli 7 dni): retention_period: 168h

Parametr dla metryk retention podajemy w dniach (domyślne ustawienie to 7 dni): retention: 7d

Wielkość PVC (Persistent Volume Claim) dla logów i metryk wynosi domyślnie 10 GiB.

Logi
Loki:
size: 10Gi

Metryki
prometheus:
size: 10Gi

Jeśli instalacja opierała się na NFS, należy usunąć dodany wcześniej parametr no_root_squash.

sudo nano /etc/exports

Usuwamy parametr no_root_squash.

Aby wprowadzić zmiany, należy edytować pliki, używając takich edytorów jak vi, vim, nano. W naszym przypadku wykorzystaliśmy nano. W edytorze poruszamy się za pomocą strzałek oraz skrótów klawiaturowych widocznych na dole ekranu edytora. Zmiany zapisujemy przy użyciu skrótu Ctrl+x.

Następnie restartujemy serwer NFS.

sudo systemctl restart nfs-server

5. Konfiguracja DNS

Wpis DNS:
grafana

Przykład wpisu do hostów :
x.x.x.x grafana.twoja_domena.pl

Po dodaniu wpisu do DNS, upewniamy się, czy adres działa w naszej przeglądarce.

6. Pobranie hasła do logowania

W sekcji Storage należy wybrać zakładkę Secrets, a następnie w polu filtrowania wpisać loki. Wybieramy pozycję loki-stack.

Następnie w sekcji Storage wybieramy zakładkę Secrets i przy pozycji loki-grafana klikamy ikonę menu podręcznego (trzy kropki), a anstępnie opcję Edit Config.

Kopiujemy hasło z pola Wartość dla klucza admin-password.

7. Logowanie do Grafana

W przeglądarce otwieramy naszą stronę (np. grafana.twoja_domena.pl) i logujemy się do systemu, używając danych użytkownika: „admin” oraz hasło podane w punkcie 5.

8. Dashboard namespace (stan aplikacji)

Widok pulpitu przestrzeni nazw (dashborad namespace) pozwala szczegółowo sprawdzić stan aplikacji.


1. Przestrzeń nazw (namespace), w której zainstalowana jest aplikacja.
2. Zakresu czasowy, z którego dashboard pobiera dane.
3. Czas automatycznego odświeżania danych na dashboardzie.
4. Liczba obiektów typu Deployment utrzymujących pożądany stan komponentów aplikacji w klastrze.
5. Liczba obiektów typu StatefulSet.
6. Liczba obiektów typu DaemonSet.
7. Łączna liczba podów utworzonych przez Deployment, StatefulSet i/lub DaemonSet.
8. Liczba gotowych do pracy podów.
9. Liczba podów oczekujących na uruchomienie lub działających nieprawidłowo.
10. Liczba podów w trakcie usuwania.
11. Liczba zewnętrznych wolumenów danych używanych przez aplikację.
12. Liczba wolumenów w prawidłowym stanie.
13. Liczba wolumenów w trakcie tworzenia.
14. Liczba uszkodzonych wolumenów.
15. Liczba adresów domenowych (ingressów) wykorzystywanych przez aplikację.
16. Łączna pojemność wolumenów.
17. Procentowe wykorzystanie pojemności wolumenów.
18. Zużycie pamięci przez aplikację w gigabajtach.
19. Zużycie procesora przez aplikację w milicore.
20. Liczba logowań użytkowników (w wybranym zakresie czasowym z punktu 2).
21. Liczba błędów występujących w aplikacji (w wybranym zakresie czasowym z punktu 2).
22. Tabela przedstawiająca stan podów aplikacji. Poszczególne kolumny określają:

  • pod – lista podów powołanych do życia,
  • Status – status poda (Up/Down),
  • Age – czas, jaki upłynął od powołania poda,
  • Restarts – liczba restartów od czasu powołania poda (dotyczy restartów wywołanych przez mechanizmy klastra Kubernetes, takie jak przeciążenie poda, błąd w pracy, brak odpowiedzi), ręczny restart poda zeruje licznik restartów,
  • pod_ip – adres IP poda na klastrze,
  • memory_limit – limit pamięci ustawiony dla poda,
  • % memory – procent wykorzystania limitu pamięci przez poda w danym momencie (w chwili otwarcia lub odświeżenia dashboardu),
  • cpu_limit – limit procesora ustawiony dla poda,
  • % cpu – procent wykorzystania limitu procesora przez poda w danym momencie (w chwili otwarcia lub odświeżenia dashboardu),
  • image – obraz Dockera i jego wersja dla poda.

23. Zużycie pamięci przez wszystkie pody (w wybranym zakresie czasowym z punktu 2).
24. Suma zużycia pamięci przez pody (w wybranym zakresie czasowym z punktu 2).
25. Zużycie procesora przez wszystkie pody (w wybranym zakresie czasowym z punktu 2).
26. Suma zużycia procesora przez wszystkie pody (w wybranym zakresie czasowym z punktu 2).

9. Dashboard EZDRP Cluster (stan klastra Kubernetes)

1. Liczba maszyn (nodów) wchodzących w skład klastra Kubernetes.
2. Liczba maszyn o stanie Ready – działających poprawnie.
3. Liczba wszystkich przestrzeni nazw (namespaces) na klastrze, również systemowych.
4. Wiek klastra.
5. Wykorzystanie pamięci na poszczególnych maszynach.
6. Wykorzystanie procesorów na poszczególnych maszynach.
7. Zajętość dysków na poszczególnych maszynach.

10. Dashboard EZDRP Logs – wyszukiwanie proste

1. Zakres czasu, w którym szukamy logów.
2. Wybór przestrzeni nazw (namespace).
3. Wybór deploymentu, z którego chcemy zobaczyć logi. Wybór deploymentu jest istotny, ponieważ może on zarządzać kilkoma zreplikowanymi podami, co spowoduje wyświetlenie dzienników ze wszystkich podów wchodzących w skład tego deploymentu.
4. Szukane słowo lub np. numer błędu zgłoszonego przez aplikację (to pole może być puste – wtedy wyświetlone zostaną wszystkie wpisy)
5. Histogram występowania logów na osi czasu.
6. Łączna liczba wszystkich logów.
7. Treść logów.

11. Zakładka Explore – zaawansowane wyszukiwanie logów

Klikamy ikonę menu głównego, a następnie zakładkę Explore.

Sprawdzamy, czy wybrane jest właściwe źródło danych, czyli Loki. Klikamy przycisk Code, umożliwiający samodzielne tworzenie zapytań, a następnnie przycisk Label browser.

W kolejnym kroku zaznaczamy kryteria wyszukiwania – namespace oraz pod. Najpierw z listy wybieramy namespace, w którym uruchomiona jest aplikacja. Następnie z listy wybieramy poda, którego logi chcemy wyświetlić, i klikamy przycisk Show logs.

Po wykonaniu opisanych wyżej czynności istnieje możliwość edycji automatycznie wygenerowanego zapytania, co pozwala na swobodne jego dostosowanie w celu osiągnięcia optymalnych wyników wyszukiwania.

Przykłady użycia:

Wszystkie logi z poda ezdrp-api w namespace ezd.

{namespace="ezd",pod=~"ezdrp-api.*"}| json | __error__="" | label_format level=_l | line_format "{{._mt}}"

Wszystkie wpisy ze słowem „error”.

{namespace="ezd",pod=~"ezdrp-api.*"}| json | __error__="" | label_format level=_l | line_format "{{._mt}}" |~ "error"

Możliwość stosowania wyrażeń regularnych, wszystkie wpisy zawierające słowo „error”, „Error” lub „ERROR”.

{namespace="ezd",pod=~"ezdrp-api.*"}| json | __error__="" | label_format level=_l | line_format "{{._mt}}" |~ "error|Error|ERROR"

Możliwość stosowania wyrażeń regularnych, wszystkie wpisy zawierające słowo „error” lub „Error” lub „ERROR” i jednocześnie nie zawierające słowa „Epuap”.

{namespace="ezd",pod=~"ezdrp-api.*"}| json | __error__="" | label_format level=_l | line_format "{{._mt}}" |~ "error|Error|ERROR" !~ "Epuap"

Wszystkie logi z podów zaczynających swoją nazwę od „ezdrp-api” w namespace ezd; w przypadku gdy pody są zreplikowane i występują w więcej niż jednej instancji.

{namespace="ezd",pod=~"ezdrp-api-.*"}| json | __error__="" | label_format level=_l | line_format "{{._mt}}"

Po edycji zapytania można je uruchomić, klikając przycisk Run query w prawym górnym rogu lub używając kombinacji klawiszy Shift+Enter. Samo naciśnięcie klawisza Enter spowoduje przejście do nowej linii i umożliwi tworzenie bardziej zaawansowanych zapytań w bazie Loki.

Po znalezieniu poszukiwanej linii i najechaniu na nią kursorem myszy, z prawej strony pojawią się trzy ikony. Po kliknięciu pierwszej z nich (Show contest), zostaną wyświetlone szczegóły danego wpisu.

W ten sposób uzyskujemy bardzo przydatne informacje dotyczące danego zdarzenia, ponieważ na jednym ekranie zostaje wyświetlone to, co działo się bezpośrednio przed poszukiwanym wpisem (możliwa przyczyna), a poniżej znajduje się opis tego, co miało miejsce później (np. skutek błędu).