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 teN
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