Wpis z mikrobloga

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

mk321 - #programowanie #java #spring

Co polecacie do wyświetlania statystyk czasu ...

źródło: comment_iSV777pc8S0aH2VtxvO2qPn7v1OUm8Qt.jpg

Pobierz
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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 #!$%@?).
  • Odpowiedz
@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.
  • Odpowiedz
@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
  • Odpowiedz