Grafana - jak ukryć parametry, które nie są "user friendly" i zależą od innych parametrów

1

Grafany nie znam, po pobieżnym przejrzeniu zakładek w ustawieniach i googlowaniu dokumentacji przez pół dnia nie znalazłem jakiegoś polecanego rozwiązania. Najbardziej ogólnie jak się da, sprawa wygląda tak:

  • mam N komponentów/aplikacji tego samego typu (obojętne jakiego), teoretycznie z takimi samymi metrykami (w praktyce to jeszcze nie ustaliłem, na czym stoję). W rzeczywistości jest ich o wiele więcej, ale mnie w tej chwili interesuje tylko te N konkretnych
  • każdy z tych komponentów może być zdeployowany do M różnych środowisk
  • chciałbym mieć jeden dashboard, na którym móglibyśmy z zespołem bez zbędnych ceregieli oglądać metryki dla dowolnego z komponentów w dowolnym środowisku

Dostałem do ręki jakiś gotowy uber-dashboard, który może mi pokazać cokolwiek dla dowolnego komponentu, w dowolnym środowisku, który fajnie by było reużyć.... ale na te 2 zmieniające się parametry, które mnie interesują (komponent i środowisko) przypadają z jakiegoś powodu aż 4 zmienne w dashboardzie, wszystkie do wyklikania przez użytkownika :D

  • większość z nich może przyjmować na tyle dużo wartości, że przekopywanie tego za każdym razem ręcznie jest uciążliwe
  • można sobie wybrać dowolną kombinację wszystkich czterech parametrów (+ są wielokrotnego wyboru), ale tylko niektóre dadzą sensowne wyniki - na pierwszy rzut oka przytłaczająca większość kombinacji nie zwracai niczego, lub co gorsza zwraca wyniki pozbawione sensu
  • jednego parametru na szczęście nie musimy chyba tykać, bo akurat dla tego typu komponentów wydaje się być zawsze taki sam
  • spośród pozostałych trzech, jeden jest nie do rozwikłania - zawiera jakieś UUIDki, które trzeba wybierać w zależności od pozostałych parametrów, a żeby odgrzebać ten, którego potrzebujemy, trzeba majstrować i szukać przez in-housowe narzędzie... :(

Tyle dobrze, że in-housowe narzędzie jest zdokeryzowanym CLI, który wypluwa obrabialne rezultaty w JSONie, więc jest potencjał do automatyzacji. Nie jestem tylko pewien, czy da się ich użyć w trybie read-only bez uwierzytelniania.

Gdybym to robił w Datadog, użył bym pewnie dość łopatologicznie jakiejś wariacji na temat Template Variables, ukrył co brzydsze bebechy, wystawił coś czytelniejszego i tak sobie poradził, no ale dziś tak naprawdę pierwszy raz rozgrzebałem dokumentację Grafany i ustawienia, dopiero wchodzimy w projekt i nie było okazji wcześniej do tego zajrzeć.

To co chciałbym osiągnąć to:

  • brak konieczności wywracania do góry nogami tego dashboardu, żeby doprowadzić go do stanu używalności, bo na razie nie czuję się na siłach (patrz znajomość Grafany od dziś w południe)
  • ukrycie większości tych parametrów przed użytkownikiem, w szczególności tego z UUIDkami, żeby nie trzeba było w tym ręcznie mieszać w celu odnalezienia metryk
  • powiązanie wartości co brzydszych parametrów z tymi w miarę czytelnymi, choćby to miała być jakaś zwykła mapa w JSONie wrzuconym gdzieś-tam, żeby wypełniały się automagicznie
  • nie musieć się z tym zbytnio rypać w przyszłości
  • nie spędzić pół roku rzeźbiąc uber-uber-dashboard wszechczasów :P

Pomysły jakie mi przyszły do głowy to:

  • wygenerować sobie na boku wspomnianą mapę z UUID'kami w JSONie, YAMLu lub czymkolwiek innym, wrzucić w ciemno do jakiegoś ukrytego parametru i jakoś to parsować, by wyłuskać docelową wartość. Przynajmniej do czasu wymyślenia lepszego rozwiązania.
  • próbować pożenić Grafanę z tymi in-housowymi narzędziami i wyciągać tę informację bezpośrednio. Byłoby o tyle fajnie, że nie byłoby konieczności produkowania sobie tych nazwijmy to "konfiguracji" na boku, tylko mógłbym sklecić zapytanie i pobrać wynik. Dodatkowy plus, to że inne zespoły powinny móc tego użyć z marszu
  • Niezależnie od formy podepnę to "jakoś" jako customowy datasource Grafany, który będę odpytywał jak każdy inny
  • Jeśli jest do tego gotowy plugin... no ok, ale niewykluczone, że odbiję się od polityki mówiącej, że nie używamy pluginów third-party

Co byście polecali, żeby nie zakopać się po uszy w bohaterskim rozwiązywaniu problemów nieznanych w żadnym innym ustroju? :D

1

Generalnie Grafana też ma Variables i Templates i możesz mieć variable bazujące na query do jakiegoś data source
Popatrz na jakieś grafanowe example w stylu https://play.grafana.org/d/000000014/elasticsearch-metrics?orgId=1 jak wejdziesz w dashboard settings to masz tam ustawienia variabli https://play.grafana.org/d/000000014/elasticsearch-metrics?orgId=1&editview=templating

1 użytkowników online, w tym zalogowanych: 0, gości: 1