Co polecacie do wyświetlania statystyk czasu wykonania metod aplikacji w Springu?
Kiedyś było narzędzie JETM. Oznaczało się metody, był endpoint i wyświetlało ładną tabelkę z czasem i liczbą wywołań. Ale JETM jest już dosyć stary i chyba nie ma wsparcia dla Springa.
Obecnie jest masa tych bibliotek do Springa: Actuator, Micrometer, Metrics, Atlas, Datadog, Graphite, Prometheus itd. Nie wiem, która jest do czego, czym się różnią i której powinienem użyć.
Wiem, że nie chcę jakiegoś zewnętrznego serwera z bazą danych (część z tych wyżej taka jest). Nie potrzebuję zapisywać nigdzie w bazie tych statystyk. Wystarczy mi trzymać to w pamięci (dostępne do restartu aplikacji). Mam malutki microserwis i nie chcę jakiegoś ogromnego narzędzia.
Coś w stylu Spring Actuator, że dodaję dependency i mam już gotowe endpointy. Tylko w nim nie pokazuje mi czasu wykonania metod. W tutorialach do Micrometer widziałem, że metody do monitorowania oznacza się @Timed. Podoba mi się to rozwiązanie. Ale nie wiem jak wyświetlić te czas w jakimś endpoincie. Chyba, że da się monitorować po prostu wszystkie metod (coś w stylu profilera - tylko żeby samo się monitorowało, a nie że muszę być podłączony profilerem na produkcję).
@mk321: to może napisz sobie po prostu sam. Zrob aspekt ktory bedzie interceptorem wywolywanym na starcie i na koncu wszystkich metod /np @Around("execution(* twojpakiet(..))")/ a w srodku zmierz sobie jakims Stopwatchem, albo w ostatecznosci nanotimem. Czas wywolania mozna tez zmierzyc przy uzyciu wiekszosci darmowych profilerow typu java mission control (ktory jeszcze w javie 8 byl, teraz juz chyba w------i).
Wszystko można zrobić samemu (AOP, zapisywanie, wystawienie endpointu itd). I będę musiał to robić w każdym micoserwisie, czyli będę musiał z tego zrobić bibliotekę, żeby nie powtarzać kodu.
Serio z tych 20 istniejących nie ma ani jednej, która spełnia moje wymagania?
@cage20: o profilerze też pisałem, że nie chcę się nim podłączać na produkcję. Musiałbym być cały czas nim podłączony, żeby widzieć statystyki. A tak to statystyki się same zbierają i tylko jak potrzebuję to je sobie sprawdzę i zobaczę czy aplikacja działa poprawnie.
@mk321: Jesli nie potrzebujesz czasow dla calego stacktrace'a, to spokojnie mozna to zrobic micrometerem. @Timed("nazwa") na metode i statystyke mozna odpytac pod http://localhost:8080/actuator/metrics/nazwa (zakladajac Spring Boot 2 i TimedAspect dodany do kontekstu). Generalnie micrometer to takie slf4j dla metryk, ktore pozwala na eksportowanie ich do zewnetrznych baz jak np. Prometheus. Z wizualizacja jest juz troche ciezej, bo wiekszosc narzedzi pracuje wlasnie z takimi bazami. Od biedy mozesz obczaic
Tylko ten idiota Śpiewak potrafi przyrównać XTB do onlyfans XD chociaż w sumie na XTB też można nie raz oglądać jak jestem ruchany przez Grubego ( ͡°͜ʖ͡°)
Co polecacie do wyświetlania statystyk czasu wykonania metod aplikacji w Springu?
Kiedyś było narzędzie JETM. Oznaczało się metody, był endpoint i wyświetlało ładną tabelkę z czasem i liczbą wywołań. Ale JETM jest już dosyć stary i chyba nie ma wsparcia dla Springa.
Obecnie jest masa tych bibliotek do Springa: Actuator, Micrometer, Metrics, Atlas, Datadog, Graphite, Prometheus itd.
Nie wiem, która jest do czego, czym się różnią i której powinienem użyć.
Wiem, że nie chcę jakiegoś zewnętrznego serwera z bazą danych (część z tych wyżej taka jest). Nie potrzebuję zapisywać nigdzie w bazie tych statystyk. Wystarczy mi trzymać to w pamięci (dostępne do restartu aplikacji). Mam malutki microserwis i nie chcę jakiegoś ogromnego narzędzia.
Coś w stylu Spring Actuator, że dodaję dependency i mam już gotowe endpointy. Tylko w nim nie pokazuje mi czasu wykonania metod. W tutorialach do Micrometer widziałem, że metody do monitorowania oznacza się
@Timed. Podoba mi się to rozwiązanie. Ale nie wiem jak wyświetlić te czas w jakimś endpoincie. Chyba, że da się monitorować po prostu wszystkie metod (coś w stylu profilera - tylko żeby samo się monitorowało, a nie że muszę być podłączony profilerem na produkcję).źródło: comment_iSV777pc8S0aH2VtxvO2qPn7v1OUm8Qt.jpg
PobierzWszystko można zrobić samemu (AOP, zapisywanie, wystawienie endpointu itd). I będę musiał to robić w każdym micoserwisie, czyli będę musiał z tego zrobić bibliotekę, żeby nie powtarzać kodu.
Serio z tych 20 istniejących nie ma ani jednej, która spełnia moje wymagania?
źródło: comment_IeBP5xrkseSurYzQYJhsHFCXx5RI628E.jpg
Pobierz