mk321
mk321
3
#programowanie #java #spring

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ę).

  • Najlepsze
  • Wszystkie komentarze
mk321
mk321 Autor
1
@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.
cage20
to używaj dalej tego jetma - wspiera springa.
cage20
@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).
mk321
mk321 Autor
0
@cage20: przeczytaj spoiler.

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
@mk321: to sie podłącz przez jvisualvm. masz wyniki w postaci graficznej i mozesz je zapisac.
Kresse
@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