Slajd 1/15
Własny dashboard z RouterOS
Cel slajdu: Przedstawienie celu warsztatu: dashboard z trzech liczników SNMP w kilkunastu krokach.

Trzy liczniki, jeden dashboard

Warsztat prowadzi od zweryfikowanych metryk do gotowego dashboardu: miernik obciążenia CPU, wykres zajętości RAM oraz czas pracy routera z nazwą urządzenia. Każdy krok opisuje dokładnie, co kliknąć, w którym miejscu ekranu i po co.

  • Punkt startu: Działający stos ze slajdów Grafana oraz zadanie snmp-routeros w stanie up dla routera MikroTik; bez danych nie ma czego rysować
  • Trzy liczniki: hrProcessorLoad w procentach, procent RAM z tabeli hrStorage oraz sysUpTime w godzinach po dzieleniu
  • Bonus: Nazwa urządzenia sysName jako tytułowy panel tekstowy; wartość to etykieta, nie liczba
  • Efekt: Zapisany dashboard z czterema panelami, eksportowany do JSON i przenośny między Grafanami
Licznik SNMP w panelu: Metryka pobierana przez eksporter z urządzenia, przeliczona zapytaniem PromQL na czytelne jednostki.
Zrzut ekranu: slajd 1
Zrzut: docelowy dashboard czterech paneli.
Cel warsztatuCPU %GaugehrProcessorLoadRAM %wykreshrStorageUptimeStatsysUpTimesysNamenazwa w tytulelegenda
Slajd 2/15
Plan warsztatu
Cel slajdu: Przedstawienie siedmiu kroków od weryfikacji metryk po eksport dashboardu.

Siedem kroków do gotowego obrazu

Najpierw weryfikujesz metryki w trybie Explore, potem tworzysz dashboard i dokładasz panele pojedynczo, na końcu dodajesz zmienną routera, uczysz się pracy z dwoma routerami naraz oraz eksportujesz całość do pliku JSON. Każdy krok kończy się czymś widocznym.

  • Kroki 1-2: Weryfikacja trzech zapytań w Explore (liczby na ekranie) oraz utworzenie pustego dashboardu ze źródłem Prometheus
  • Kroki 3-5: Panele CPU (Gauge), RAM (wykres) i czasu pracy ze Stat (Stat) z jednostkami i progami; po każdym panel Apply
  • Krok 6: Zmienna instance z listą routerów, dzięki czemu dashboard działa dla każdego urządzenia bez edycji paneli
  • Dodatek: Dwa routery na jednym wykresie albo osobno: porównanie linii, lista wyboru oraz powielanie paneli (slajd 14)
  • Krok 7: Zapis dyskietką, eksport do JSON przyciskiem Share, alert na CPU oraz lista typowych problemów
Tryb Explore: Swobodne zapytania bez zapisywania; miejsce testów przed budową paneli.
Zrzut ekranu: slajd 2
Zrzut: siedem kroków na jednej stronie.
Plan warsztatu1-2. StartExplorenowy dashboard3-5. PaneleCPU, RAMuptime6. Zmiennalista routerówinstance7. KoniecJSON, alertproblemy
Slajd 3/15
Trzy liczniki i ich jednostki
Cel slajdu: Przypomnienie metryk modułu routeros z typami i jednostkami po przeliczeniu.

Co mierzymy i w czym pokazujemy

Moduł routeros dostarcza surowe metryki SNMP. Panel pokazuje je po przeliczeniu: procenty dla CPU i RAM, godziny dla czasu pracy oraz tekst dla nazwy. Zapamiętaj pary metryka-jednostka, bo wrócą w każdym panelu.

  • hrProcessorLoad: Gauge w procentach z etykietą procesora; wartość przykładowa 9..14 na nieobciążonym routerze; przeliczeń brak
  • RAM: Stosunek hrStorageUsed do hrStorageSize dla opisu main memory razy 100; wynik w procentach; filtr opisu obowiązkowy
  • sysUpTime: Licznik setnych sekund; dzielenie przez 100 daje sekundy, dzielenie przez 3600 daje godziny pracy od restartu
  • sysName: Tekst w etykiecie o tej samej nazwie; panel Stat pokazuje go przez legendę Display name, nie przez wartość, bo wartość to 1
Jednostka panelu: Format wyświetlania wyniku (procenty, godziny, tekst); ustawia się ją niezależnie od zapytania.
Zrzut ekranu: slajd 3
Zrzut: metryki z jednostkami po przeliczeniu.
Metryki warsztatuhrProcessorLoad{...} -> % (Gauge, bez dzielenia)hrStorageUsed/hrStorageSize*100 -> % (wykres)sysUpTime/100/3600 -> godziny (Stat)sysName -> tekst (Stat, Display name)BezpośrednioCPU, nazwaZ dzieleniemczas, RAM
Slajd 4/15
Krok 1: weryfikacja w Explore
Cel slajdu: Sprawdzenie trzech zapytań przed budową jakiegokolwiek panelu.

Najpierw liczby, potem obrazki

Na lewym pasku bocznym kliknij pozycję Explore: ikona ma kształt róży kompasu i leży pod Dashboards, a po najechaniu myszą pokazuje napis Explore. Na górze ekranu z listy źródeł danych wybierz Prometheus. Na środku ekranu jest duże pole zapytania z napisem Expression: kliknij w nie, wklej pierwsze wyrażenie i kliknij niebieski przycisk Run query po prawej. Pod polem pojawi się wynik: wiersz tabeli z etykietami serii i liczbą. Powtórz wklejanie dla wyrażenia drugiego i trzeciego.

  • Krok 1, wejście: Lewy pasek, róża kompasu Explore; u góry ekranu lista źródeł danych, kliknij i wybierz Prometheus
  • Krok 2, pole: Środek ekranu, białe pole Expression; kliknij w nie kursorem i wklej całe wyrażenie bez zmian
  • Krok 3, start: Niebieski przycisk Run query po prawej stronie pola; Grafana pyta Prometheusa i rysuje wynik pod spodem
  • Krok 4, odczyt: Tabela pod polem pokazuje jeden wiersz: etykiety serii (job, instance) oraz liczbę; przełącznik Table i Graph zmienia widok
  • Krok 5, czas: Selektor czasu w prawym górnym rogu ustaw na ostatnią godzinę; przy krótszym zakresie wynik bywa pusty
  • Krok 6, powtórka: Przycisk Add query dokłada kolejne pole albo podmieniasz treść; tak sprawdzasz wyrażenie drugie i trzecie
Weryfikacja metryki: Wykonanie zapytania w Explore przed budową panelu; rozdziela problemy danych od problemów wizualizacji.
Zrzut ekranu: slajd 4
Zrzut: wynik zapytania w Explore z serią.
Test trzech zapytańpole Expression: kliknij, wklej, Run queryhrProcessorLoad{job=...} -> np. 9stosunek main memory *100 -> np. 24 %sysUpTime{job=...}/100/3600 -> np. 506 hSeria jestbuduj paneldalejSerii brakjob? etykiety?czas?
Slajd 5/15
Krok 2: nowy dashboard
Cel slajdu: Utworzenie pustego dashboardu z podpiętym źródłem Prometheus.

Pusta kartka ze źródłem danych

W lewym pasku kliknij Dashboards, aby otworzyć listę dashboardów. W prawym górnym rogu listy kliknij niebieski przycisk New i z menu wybierz New dashboard. Na pustej stronie kliknij duży przycisk Add visualization na środku; w oknie Select data source kliknij kafelek Prometheus. Otworzy się edytor pierwszego panelu z pustym wykresem.

  • Ścieżka: Lewy pasek Dashboards, przycisk New u góry, pozycja New dashboard, przycisk Add visualization, kafelek Prometheus
  • Po co źródło od razu: Pierwszy panel zapamiętuje źródło i kolejne je dziedziczą, więc wybierasz je tylko raz na dashboard
  • Układanie: Gotowe panele przeciągasz myszą za pasek tytułu; siatka sama wyrównuje szerokości i wysokości do linii
  • Zapis roboczy: Ikona dyskietki Save dashboard u góry zapisuje stan pośredni; dashboard dojrzewa razem z warsztatem
Dashboard: Zapisany zestaw paneli ze wspólnym źródłem, zakresem czasu i zmiennymi; jednostka pracy w Grafanie.
Zrzut ekranu: slajd 5
Zrzut: pusty dashboard ze źródłem Prometheus.
Start dashboarduDashboards -> New -> New dashboardAdd visualization, źródło: Prometheusprzeciągnij za tytuł, siatka wyrównaSave: nazwa np. RouterOS SNMPKonwencja nazwRouterOS SNMPjasna, po urządzeniu
Slajd 6/15
Panel 1: miernik CPU
Cel slajdu: Budowa panelu Gauge z progami dla obciążenia procesora, klik po kliku.

Wskazówka, która czerwienieje

W edytorze panelu z kroku 2 spójrz w prawą kolumnę na sekcję Visualisation i kliknij w niej Gauge. W dolnej części ekranu w zakładce Query znajdź pole Expression, wklej zapytanie o hrProcessorLoad i kliknij przycisk Run queries nad polem, aby zobaczyć liczbę. Potem w prawej kolumnie ustaw jednostkę, obliczenie i progi.

  • Zapytanie: Zakładka Query, pole Expression, wklej hrProcessorLoad{job="snmp-routeros"}, Run queries; metryka już jest w procentach
  • Typ i jednostka: Prawa kolumna, Visualisation Gauge; Standard options, pole Unit wpisz Percent (0-100)
  • Obliczenie: Sekcja Value options, pole Calculation wybierz Last, czyli ostatnia próbka zamiast średniej
  • Progi: Sekcja Thresholds: bazowy zielony zostaje, Add threshold z wartością 70 i kolorem bursztynowym, kolejny 90 czerwony
  • Tytuł i zapis: Panel options, Title wpisz CPU routera; niebieski Apply zapisuje panel, dyskietka zapisuje dashboard
Miernik (Gauge): Wizualizacja ostatniej wartości z progami kolorów; służy procentom i stanom.
Zrzut ekranu: slajd 6
Zrzut: miernik CPU z progami 70 i 90.
Miernik CPUVisualisation: Gauge (prawa kolumna)Expression: hrProcessorLoad... + Run queriesUnit: Percent, Calculation: LastThresholds: 70 bursztyn, 90 czerwień0-70zielonyspokój70-90bursztynuwaga90+czerwonydziałaj
Slajd 7/15
Panel 2: wykres RAM
Cel slajdu: Budowa wykresu procentu zajętości pamięci z legendą.

Linia, która zdradza wycieki

Na dashboardzie kliknij Add i Visualization, aby otworzyć edytor. W zakładce Query w pole Expression wklej cały dwuwiersz ze stosunkiem dla main memory i kliknij Run queries, aby zobaczyć linię. Po prawej w Standard options ustaw jednostkę, a w Legend wpisz tekst z etykietą urządzenia.

  • Zapytanie: Wklej stosunek hrStorageUsed do hrStorageSize dla main memory razy 100; Run queries rysuje linię
  • Typ i jednostka: Visualisation Time series; Standard options, Unit Percent; sekcja Legend, tryb Custom z nazwą urządzenia
  • Zakres: Selektor czasu u góry (ostatnie 6 godzin) przy pobieraniu co minutę daje czytelny trend bez szumu
  • Tytuł i zapis: Panel options, Title RAM routera w procentach; Apply dokłada panel obok miernika CPU
Szereg czasowy (Time series): Wykres wartości w czasie; podstawa analiz trendów i wycieków.
Zrzut ekranu: slajd 7
Zrzut: wykres RAM z rosnącym trendem.
Wykres pamięciAdd -> Visualization -> Time seriesstosunek ... main memory ... * 100Unit: Percent, Legend: urządzeniezakres: ostatnie 6 godzinTrend płaskistabilniedobrzeTrend w góręwyciek?restart
Slajd 8/15
Panel 3 i 4: czas i nazwa
Cel slajdu: Budowa dwóch paneli Stat: godzin pracy oraz nazwy urządzenia.

Liczby, które mówią same

Dodajesz dwa panele typu Stat przyciskiem Add, Visualization. W pierwszym zapytanie dzieli licznik na godziny i ustawiasz jednostkę hours. W drugim zapytanie o nazwę łączysz z legendą z etykiety, bo sama wartość metryki tekstowej to jedynka.

  • Uptime: Expression sysUpTime{job="snmp-routeros"} / 100 / 3600, Run queries; Visualisation Stat; Standard options, Unit wpisz hours
  • Nazwa: Nowy panel; Expression sysName{job="snmp-routeros"}; Standard options, Display name wpisz tekst etykiety sysName; Stat styles, Text mode wybierz Name
  • Po co legenda: Wartość metryki tekstowej to zawsze 1, więc bez legendy panel pokazuje jedynkę zamiast nazwy
  • Układ i zapis: Przeciągnij nazwę na górę dashboardu, czas obok niej; po każdym panelu Apply, na końcu dyskietka
Panel tekstowy (Stat): Duża wartość lub tekst z ostatniej próbki; służy nazwom, czasom i stanom.
Zrzut ekranu: slajd 8
Zrzut: panele czasu pracy i nazwy urządzenia.
Czas i nazwaStat: sysUpTime/100/3600, Unit: hoursStat: sysName, Display name z etykietyText mode: Name (nie Value)nazwa na górze dashboardusysUpTimegodzinyStatsysNametekstlegenda
Slajd 9/15
Zmienna routera
Cel slajdu: Dodanie listy rozwijanej z urządzeniami na górze dashboardu.

Jeden dashboard na wszystkie routery

Otwórz swój dashboard i kliknij ikonę koła zębatego Dashboard settings w prawym górnym rogu. Z lewego menu ustawień wybierz Variables i kliknij niebieski przycisk New variable. Wypełnij cztery pola formularza, kliknij Apply na dole, wróć strzałką do dashboardu i zapisz go dyskietką. Potem w każdym panelu podmień sztywny adres na zmienną.

  • Krok 1, nowy formularz: Koło zębate u góry, z lewej Variables, przycisk New variable; otwiera się formularz z polami Name, Type, Data source i Query
  • Krok 2, cztery pola: Name wpisz instance, Type zostaw Query, Data source wybierz Prometheus, Query wklej label_values(instance); podgląd na dole pokazuje adresy routerów
  • Krok 3, zapis: Kliknij Apply na dole formularza, strzałką wróć do dashboardu; nad panelami pojawia się lista rozwijana z routerami
  • Krok 4, panele: Edycja każdego panelu (strzałka przy tytule, Edit): w zapytaniu dopisz filtr instance="$instance" zamiast sztywnego adresu; Apply w panelu
  • Krok 5, test: Z listy nad dashboardem wybierz drugi router; wszystkie cztery panele przeładowują się same
  • Opcja Multi: Wróć do edycji zmiennej i włącz przełącznik Multi; wtedy zaznaczysz kilka routerów naraz i porównasz linie
Zmienna (Variable): Wartość wybierana z listy, podstawiana do zapytań; jeden dashboard obsługuje wiele urządzeń.
Zrzut ekranu: slajd 9
Zrzut: lista rozwijana routerów nad panelami.
Lista routerówkoło zębate -> Variables -> New variableName: instance, Query: label_values(instance)Apply, strzałka wstecz, dyskietka Savepanele: filtr instance="$instance" + ApplyJeden routerwybór4 paneleWieleMultiporównanie
Slajd 10/15
Zapis i eksport JSON
Cel slajdu: Zapisanie dashboardu oraz wyeksportowanie definicji do pliku.

Dashboard jako plik w repozytorium

Kliknij dyskietkę Save dashboard u góry, wpisz nazwę i wybierz folder General, potwierdź Save. Potem kliknij przycisk Share (strzałka w górę obok dyskietki), zakładkę Export i Save to file, aby pobrać JSON. Import to Dashboards, New, Import i wklejenie pliku.

  • Save: Dyskietka na górze ekranu, nazwa i folder General, przycisk Save; bez zapisu odświeżenie strony kasuje pracę
  • Export: Przycisk Share obok dyskietki, zakładka Export, Save to file pobiera JSON z panelami, zapytaniami i zmiennymi
  • Import: Lewy pasek Dashboards, New, Import, przycisk Upload JSON file albo wklejenie treści; Grafana pyta tylko o źródło Prometheus
  • Wersjonowanie: JSON w repozytorium pokazuje w historii, kto i kiedy zmienił próg albo zapytanie
Definicja JSON: Tekstowy opis dashboardu; przenośny między Grafanami i wersjonowany jak kod.
Zrzut ekranu: slajd 10
Zrzut: przyciski Save, Share i Export.
Plik zamiast klikaniaSave: nazwa + folder GeneralShare -> Export -> Save to file (.json)Import: wgraj JSON, wybierz źródłorepozytorium: historia progów i zapytańRegułaeksport po każdej zmianieJSON do repo
Slajd 11/15
Alert na CPU
Cel slajdu: Utworzenie reguły alarmowej z panelu miernika procesora.

Miernik, który sam woła

W lewym pasku kliknij dzwonek Alerting, potem Alert rules i zielony przycisk New alert rule u góry. W sekcji A wklej wyrażenie ze średnim CPU, w sekcji B ustaw próg powyżej 90, w sekcji C czas oczekiwania 5 minut, w sekcji D wybierz kanał. Kliknij Save rule u góry.

  • Reguła: Lewy pasek Alerting (dzwonek), Alert rules, New alert rule; w sekcji A wklej avg(hrProcessorLoad{job="snmp-routeros"})
  • Próg: Sekcja B, operator IS ABOVE, wartość 90; reguła odpala się powyżej progu
  • Czas: Sekcja C, pole For ustaw na 5 minut; odcina chwilowe piki backupu od prawdziwego przeciążenia
  • Kanał i zapis: Sekcja D, Contact point, na przykład e-mail; bez kanału alert istnieje, ale nikt go nie widzi; Save rule u góry
  • Stan: Lista Alert rules pokazuje Normal, Pending i Firing z historią każdego odpalenia
Reguła alarmowa (Alert rule): Cyklicznie oceniane wyrażenie z progiem, czasem trwania i kanałem powiadomień.
Zrzut ekranu: slajd 11
Zrzut: stany reguły Normal, Pending, Firing.
Alarm z paneluAlerting -> Alert rules -> New alert ruleA: avg(hrProcessorLoad), B: IS ABOVE 90C For: 5 minut (bez pików)D Contact point: e-mail, Save ruleNormalponiżejproguPendingpróg5 minutFiringpowiadomdziałaj
Slajd 12/15
Gdy panel milczy
Cel slajdu: Diagnostyka pustych paneli własnego dashboardu w trzech krokach.

Pusty panel to też informacja

Własny panel milczy z trzech powodów: złego zapytania, złej zmiennej albo złego czasu. Wklej zapytanie do Explore, sprawdź filtr zmiennej i poszerz zakres; całość trwa minutę.

  • Krok 1, Explore: Róża kompasu na lewym pasku, źródło Prometheus, pole Expression, Run query; brak serii oznacza problem danych, seria oznacza problem panelu
  • Krok 2, zmienna: Strzałka przy tytule panelu, Edit, sprawdź filtr instance="$instance"; sztywny adres ignoruje listę routerów
  • Krok 3, czas: Selektor czasu w prawym górnym rogu na co najmniej godzinę; 5 minut przy pobieraniu co minutę to za mało kropek
  • Legenda: Edycja panelu sysName: Display name z etykiety i Text mode Name; inaczej panel pokazuje 1
Rozdzielenie winy: Test w Explore rozstrzyga, czy brakuje danych czy konfiguracji panelu.
Zrzut ekranu: slajd 12
Zrzut: puste panele z trzema przyczynami.
Trzy kroki1. Exploreseria?dane?2. Zmiennainstance?lista?3. Czasgodzina+minutawklej zapytanie do Exploreinstance="$instance" w paneluzakres: ostatnia godzinasysName: Display name z etykiety
Slajd 13/15
Zadania samodzielne
Cel slajdu: Rozszerzenie dashboardu o temperaturę, dysk i drugi router.

Odtwórz, potem rozbuduj

Odtwórz cztery panele z warsztatu, a potem dołóż własne: temperaturę z modułu mikrotik, dysk z tabeli hrStorage, drugi router przez zmienną oraz eksport JSON do repozytorium.

  • Zadanie 1: Panel temperatury: w Explore znajdź metrykę zdrowia z modułu mikrotik (nazwa zaczyna się od mtxr), typ Stat z jednostką temperatury
  • Zadanie 2: Wykres zajętości dysku: skopiuj panel RAM, w obu miejscach podmień opis main memory na system disk, zmień tytuł
  • Zadanie 3: Drugi router: dopisz wpis targets w zadaniu snmp-routeros, POST /-/reload, wybierz go z listy zmiennej bez edycji paneli
  • Zadanie 4: Share, Export, Save to file; plik JSON do repozytorium oraz import na czystej Grafanie kolegi z wyborem źródła
Rozbudowa dashboardu: Dokładanie paneli z nowych metryk tego samego modułu bez zmiany zadań pobierania.
Zrzut ekranu: slajd 13
Zrzut: cztery zadania rozszerzające dashboard.
Cztery zadaniaNowe paneletemperaturadyskNowe cele2. routerzmiennametryki są już w bazie - tylko panelewpis targets + reloadJSON do repo, import u kolegi
Slajd 14/15
Dwa routery: razem czy osobno
Cel slajdu: Pokazanie dwóch wariantów pracy z dwoma urządzeniami: wspólny wykres albo widok na jedno wybrane urządzenie.

Jeden wykres albo lista wyboru

Szablon MOJE_MT pokazuje w każdym panelu dwie linie, bo zapytanie bez filtra instancji zwraca po jednej serii z każdego routera. Jeśli taki widok ci odpowiada, zostaw go i tylko podpisz linie. Jeśli wolisz patrzeć na jedno urządzenie naraz, dodaj listę rozwijaną albo powiel panele.

  • Skąd dwie linie: Zapytanie hrProcessorLoad{job="snmp-routeros"} zwraca wektor z dwiema seriami; Grafana rysuje jedną linię na serię, więc oba routery lądują na jednym wykresie
  • Opcja A, razem: Zostaw zapytanie bez filtra albo użyj instance=~"$instance" z włączonymi Multi i Include All; w Legend wpisz {{instance}}, żeby linie miały nazwy routerów
  • Opcja B1, osobno z listy: Zmienna instance jako pojedynczy wybór (bez Multi) plus filtr instance="$instance" w każdym panelu; lista nad dashboardem przełącza całe okno na jeden router
  • Opcja B2, osobno obok siebie: W opcjach panelu Repeat options wskaż variable instance i ustaw Max per row, a Grafana powieli panel na każdy router; albo zbuduj dwa panele ze sztywnymi adresami w filtrze
  • Lista tylko z routerami: W polu Query zmiennej wpisz label_values(hrProcessorLoad{job="snmp-routeros"}, instance), żeby na liście nie było losowych adresów z innych zadań
Dopasowanie regex (=~): Operator wyboru serii pasujących do wyrażenia regularnego; ze zmienną Multi Grafana rozwija go na alternatywę adresów.
Zrzut ekranu: slajd 14
Zrzut: jeden wykres z dwiema liniami routerów obok widoku z listą wyboru urządzenia.
Razem albo osobnoOpcja A: razem1 panel, 2 liniebez filtra albo =~legenda {{instance}}Opcja B: osobnolista $instanceRepeat by variablealbo 2 panelerazem: hrProcessorLoad{job=...} -> 2 linieosobno: ...instance="$instance" -> 1 linialista: label_values(metryka, instance)powielanie: Repeat by variable
Slajd 15/15
Podsumowanie warsztatu
Cel slajdu: Utrwalenie kompetencji, słownik i źródła do dalszej pracy.

Od metryki do dashboardu w kwadrans

Uczestnik potrafi zweryfikować metrykę w Explore, zbudować cztery panele krok po kroku, dodać zmienną routera, wyeksportować JSON oraz ustawić alert. To kompletny cykl pracy z danymi SNMP.

  • Kompetencje: Explore, Gauge, Time series, Stat, zmienne, eksport JSON oraz reguły alarmowe
  • Słownik: PromQL, wektor, etykieta, legenda, zmienna, definicja JSON, próg, reguła alarmowa
  • Źródła: Dokumentacja PromQL i Grafany, moduł routeros ze slajdów Grafana oraz dashboardy 1860 i 11169
  • Dalej: Własne moduły generatorem, agregacje wielu routerów funkcją avg by oraz alerty na RAM i uptime
Cykl pracy z danymi: Weryfikacja, wizualizacja, parametryzacja, eksport i alarmowanie; w tej kolejności.
Zrzut ekranu: slajd 15
Zrzut: podsumowanie kompetencji i źródeł.
Koniec warsztatuPotrafisz4 panelezmienna, JSONDalejmodułyagregacjeprometheus.io/docs/querying/basicsgrafana.com/docs/grafana/latest/dashboardsslajdy 31-41: moduł routeros