Blog Viewer

Monitoring PowerVM - Grafana i nextract_plus

By Michal Wiktorek posted 26 days ago

  

English version of this article: https://community.ibm.com/community/user/power/blogs/michal-wiktorek/2024/11/06/powervm-performance-monitoring-grafana

Tekst został utworzony dla społeczności Poland Power User Group

Wstęp

W tym artykule chciałbym podzielić się swoimi poradami do Grafana, na potrzeby monitorowania statystyk platformy IBM Power.

Opieram się tutaj na użyciu Grafana z Data Source do bazy InfluxDB, która jest zasilana skryptami nextract_plus autorstwa Nigela Griffithsa, jednak zawarte porady mogą być przydatne również w wielu innych zastosowaniach.

Jeżeli interesuje Cię temat monitorowania statystyk wydajnościowych platformy Power, zdecydowanie polecam Ci zapoznanie się z "Nextract Plus", ponieważ narzędzie daje potężne możliwości, przy minimalnych kosztach.

Więcej informacji możesz znaleźć na stronie: https://www.ibm.com/support/pages/nextract-plus-hmc-rest-api-performance-statistics

Warto wspomnieć też o innym świetnym narzędziu, (również autorstwa  Nigela Griffithsa) czyli o njmon, które również może wysyłać statystyki do bazy InfluxDB, ale z poziomu systemu operacyjnego AIX/Linux z użyciem agenta. 
Jeżeli znasz i lubisz narzędzie NMON, powinna Ci się spodobać możliwość prezentowania danych w Grafana: https://www.ibm.com/support/pages/njmon-intro-and-update

Uwaga: wszelkie dane pokazane w artykule są zmyślone i nie pochodzą z żadnego prawdziwego środowiska IT.

Założeniem tego artykułu była pomoc w tworzeniu własnych, dostosowanych do indywidualnych potrzeb dashboardów w Grafana. Nie opieram się tu o gotowe dashboardy, które są dostępne na stronach Grafany.

Filtrowanie serwerów i LPAR-ów pod względem typu i lokalizacji

W przypadku dużego środowiska IT, gdzie działa wiele serwerów fizycznych różnego typu i w różnych serwerowniach, bardzo użyteczne jest użycie filtrowania z wykorzystaniem zmiennych. Poświęciłem trochę czasu i nerwów na wymyślenie sensownego sposobu do filtrowania LPAR-ów i maszyn, dlatego chciałbym ułatwić innym życie, dzieląc się kilkoma poradami.

Myślę, że używanie takiego filtrowania w dashboardach może bardzo ułatwić codzienną pracę z monitorowaniem platformy Power.

Aby zilustrować, jak można ustawić filtr dla serwerów i LPAR-ów, prezentuję przykład zmyślonego środowiska. Nazwy te zostaną użyte w kolejnych przykładach dla zmiennych w Grafana.
Przyjąłem scenariusz w którym cała platforma Power dzieli się na serwery różnego typu, w różnych Data Center, z podziałem na środowisko produkcyjne i testowe:

Fikcyjny przykład podziału różnych serwerów Power
Fikcyjny przykład podziału różnych serwerów Power

Domyślnie w bazie InfluxDB nie istnieje informacja o tym, gdzie znajduje się dany serwer, ani czy jest produkcyjny lub testowy. Z pewnością bardzo użyteczna byłaby możliwość wykazania utylizacji serwerów, np. tylko w jednym Data Center, lub tylko z jednego środowiska. Bez wykorzystania zmiennych w Grafana niestety nie jest to takie proste, a ustawianie ręcznie nazw serwerów/LPARów w panelach Grafany może być bardzo uciążliwe.

Celem jest uzyskanie takiego panelu wyboru w dashboardzie, jak poniżej. Wybranie odpowiedniego Data Center, oraz typu środowiska i klasy maszyny, powinno automatycznie ograniczać widoczne wykresy dashboardu, tylko do odpowiednich maszyn oraz LPARów

Panel wyboru parametrów
Panel wyboru parametrów

Przykład dashboardu z wybranym DC, środowiskiem oraz typem serwerów
Przykład dashboardu z wybranym DC, środowiskiem oraz typem serwerów

Aby uzyskać taki efekt, dla danego dashboardu należy wybrać Settings, pozycję Variables i utworzyć nowe zmienne. Należy zwrócić uwagę że niektóre będą zmiennymi typu "custom" a inne typu "Query", które będą odpytywać bazę InfluxDB.

Zaleznosci zmiennych
Zaleznosci zmiennych

Osobiście polecam utworzenie osobnego dashboardu ze statystykami dla maszyn fizycznych, oraz osobnego dashboardu dla statystyk LPAR-ów. Danych możliwych do zebrania jest na tyle dużo, że prezentowanie wszystkiego w jednym miejscu może sprawić, że dashboard będzie wymagać przewijania ekranu i straci na prostocie.
W przypadku dashboardu tylko ze statystykami maszyny, zmienną LPAR oczywiście można pominąć.

UWAGA, wszystkie teksty zawarte w polach "CUSTOM OPTIONS" i "QUERY" muszą być pisane ciągiem. Nigdzie nie powinno być znaków końca linii. W artykule niestety musiałem zawinąć tekst, więc może to wprowadzać w błąd

Zmienna "DATACENTER" typu custom

Serwery można podzielić na lokalizację za pomocą "CUSTOM TYPE". Bardzo istotna jest poprawna składnia. Wszelkie nazwy oczywiście należy zamienić na odpowiadające prawdziwym maszynom w danym środowisku.

Poprawna składnia powinna wyglądać następująco: GROUP1 : item1|item2|item3, GROUP2 : item4|item5|item6

Warto zwrócić uwagę na znaki spacji i brak użycia znaków końca linii. Wszystko musi być w jednym wierszu.

DC1 : Server1_S1022|Server2_S1022|Server3_S1022|Server10_E1050|Server11_E1050|Server20_E1080|Server21_E1080, DC2 : Server4_S1022|Server5_S1022|Server6_S1022|Server12_E1050|Server13_E1050|Server22_E1080|Server23_E1080, DC3 : Server7_S1022|Server8_S1022|Server9_S1022|Server14_E1050|Server15_E1050|Server24_E1080|Server25_E1080

Przykład w Grafana:

DATACENTER variable

Warto pamiętać by opcja Multi-value była zaznaczona, co pozwoli na wybór wielu pozycji. Podgląd wyniku powinien się pojawić na dole strony (Preview of values)

Zmienna "ENV" typu custom

Zasady są takie same jak w przykładzie dla DATACENTER

TEST : Server1_S1022|Server2_S1022|Server4_S1022|Server5_S1022|Server7_S1022|Server8_S1022|Server10_E1050|Server12_E1050|Server14_E1050,PROD : Server3_S1022|Server6_S1022|Server9_S1022|Server11_E1050|Server13_E1050|Server15_E1050|Server20_E1080|Server22_E1080|Server24_E1080|Server21_E1080|Server23_E1080|Server25_E1080

Przykład w Grafana:

ENV variable

Zmienna "TYPE" typu custom

Zasady takie same jak w przykładach powyżej

Scale-out : Server1_S1022|Server4_S1022|Server7_S1022|Server2_S1022|Server5_S1022|Server8_S1022|Server3_S1022|Server6_S1022|Server9_S1022,Midrange : Server10_E1050|Server12_E1050|Server14_E1050|Server11_E1050|Server13_E1050|Server15_E1050,Enterprise : Server20_E1080|Server22_E1080|Server24_E1080|Server21_E1080|Server23_E1080|Server25_E1080

Przykład w Grafana:

TYPE variable

Zapytanie "SERVERNAME"

W tym przypadku zmienna jest typu QUERY i korzysta z informacji w bazie InfluxDB. Należy zwrócić uwagę na warunki które są użyte w zapytaniu, czyli "DATACENTER:pipe", "TYPE:pipe" i , "ENV:pipe". Użycie takiego zapytania pozwala ograniczyć dane tylko do tych, które są wybrane w panelu filtrowania. 

SHOW TAG VALUES WITH KEY = "servername" WHERE servername =~/^*(${DATACENTER:pipe})$*/ AND servername =~/^*(${TYPE:pipe})$*/ AND servername =~/^*(${ENV:pipe})$*/

Przykład w Grafana:

SERVERNAME query

Zapytanie "LPAR"

To zapytanie wyświetla nazwy LPARów, ale ale jedynie te które pasują do danego serwera. Zapytanie wyświetla tylko najnowsze nazwy, aby nie dublować nazw (np. po migracji LPAR-a miedzy maszynami) i jest ograniczone tylko do LPAR-ów z ostatnich 30 dni, by nie wyświetlać przestarzałych danych. Oczywiście można zrezygnować z tego ostatniego warunku.

SELECT last("name") FROM "lpar_details" WHERE ("servername" =~ /^$SERVERNAME$/) AND time > now() - 30d GROUP BY "lparname"

Przykład w Grafana:

LPAR variable

Wszystkie zmienne

Zestaw wszystkich zmiennych powinien wyglądać tak jak na poniższych screenie. Może się pojawić znak "WARNING" w przypadku gdy zmienna nie jest użyta w dashboardzie, lub przez inną zmienna.

All variables

Zapytania w panelach

W panelach Grafana, powinny zostać zastosowane nazwy zmiennych zamiast bezpośrednio wpisanych nazw LPAR-ów lub maszyn, tak jak na poniższych przykładach: 

SELECT "currentVirtualProcessors" FROM "lpar_processor" WHERE ("lparname" =~ /^$LPAR$/) AND $timeFilter GROUP BY "lparname"
SELECT "availableProcUnits" FROM "server_processor" WHERE ("servername" =~ /^$SERVERNAME$/) AND $timeFilter GROUP BY "servername"

To wszystko, jeśli chodzi o filtrowanie serwerów. Pewnym utrudnieniem jest to, że zmienne trzeba wprowadzić dla każdego dashboardu osobno, dlatego warto klonować dashboardy zamiast tworzyć je od zera. Warto pamiętać, by aktualizować informacje gdy np. w danym środowisku pojawi się nowy serwer fizyczny lub zostanie przeniesiony między lokalizacjami.

Niektóre zmiany mogą być niewidoczne aż do czasu gdy dashboard zostanie zapisany.
Często się też zdarza, że przeglądarka pamięta stare nazwy w filtrach - należy wtedy spróbować wyczyścić cache przeglądarki (CLTR + F5).

Ustawianie legendy w panelu Grafany - Time series graph

W przypadku wykresu "Time Series", warto wykorzystać możliwość sortowania po wartościach legendy. Dzięki temu można łatwo sprawdzić np. które LPAR-y najmocniej utylizują CPU lub mają najwyższe peaki. W tym celu należy zmienić legendę na formę tabeli i kliknąć żądane wartości:

Legend


Przykład legendy posortowanej po kolumnie "Max":

Legend MAX

Stacked czy unstacked?

Bardzo przydatną rzeczą w grafanie jest możliwość tworzenia STACK Group, które są niezależne od ogólnych ustawień STACK panelu.  Pozwala to na zsumowanie wybranych danych, przy zachowaniu wartości stałych.

Przykładowo np. można chcieć zsumować dane utylizacji wielu LPAR-ów, na wielu maszynach i jednocześnie by wykres zrobił osobny stos dla TOTAL CPU maszynych fizycznych oraz osobny dla wartości utylizacji LPAR-ów, ale bez łączenia ich ze sobą. 

W tym celu wystarczy dodać w opcji "OVERRIDE" dla wybranego zapytania STACK i nazwać grupę odopowiednią nazwą, np. TOTAL dla zapytań o dane wszystkich CPU maszyn, oraz UTIL dla zapytań o dane utylizacji:

Stack

Zmiana edytora zapytań InfluxQL na edytor tekstowy (RAW)

Edytor zapytań na pewno jest dużym ułatwieniem, jednak pracując z Grafaną i Influxdb warto uczyć się i robić bardziej skomplikowane zapytania z użyciem "RAW MODE". Aby przełączyć się pomiędzy trybami należy kliknać ikonę ołówka przy zapytaniu.

Query editor
Query editor

Text editor mode (RAW)
Text editor mode (RAW)

Używanie TAG-ów

Warto zwrócić uwagę że w QUERY, w polu "Alias by" można używać tagi, np.

  • tag_servername
  • tag_lparname
  • tag_viosname

Można ich użyć, jeżeli w zapytaniu wcześniej zostały zastosowane odpowiednie nazwy przy GROUP BY. 
Odpowiednie nazwy zostaną wyświetlone w legendzie, co jest również bardzo użyteczne.

Text editor mode (RAW)
Text editor mode (RAW)

Zakończenie

Mam nadzieję, że tekst był dla ciebie przydatny. Jeśli temat jest dla ciebie interesujący i chciałbyś więcej porad lub jesteś zainteresowany przykładami dashboardów do monitorowania platformy Power, napisz do mnie :)

Jeżeli interesują Cię treści o tej tematyce lub chcesz wymienić się doświadczeniami z zakresu technologii IBM Power, AIX, IBM i, Linux on Power z innymi osobami z Polski, zapraszam do dołączenia do grupy "Poland Power User Group"
Aby dołączyć do Grupy, wystarczy utworzyć konto IBMid + kliknąć "Join Group", po wejściu na poniższy link:

https://community.ibm.com/community/user/power/communities/globalgrouphome?CommunityKey=864bdb4f-30d1-4382-99e0-018fc17a0aff

0 comments
57 views

Permalink