Príklad HttpSessionListener - monitorovanie

1. Prehľad

Tento návod ukáže, ako na to zaregistrovať a javax.servlet.http.HttpSessionListener a pomocou metrík sledovať počet aktívnych relácií vo webovej aplikácii.

2. Definovanie poslucháča

Môžeme zaregistrovať poslucháča relácie HTTP v web.xml:

  com.baeldung.web.SessionListenerWithMetrics 

Prípadne v prostredí Servlet 3 môžeme použiť @WebListener zaregistrovať aj poslucháča. V tomto prípade musíme anotovať hlavné SpringBootApplication trieda s @ServletComponentScan.

Nakoniec môžeme poslucháča zaregistrovať aj pomocou konfigurácie Java vyhlásením a ServletListenerRegistrationBean fazuľa:

@Bean public ServletListenerRegistrationBean sessionListenerWithMetrics () {ServletListenerRegistrationBean listenerRegBean = nový ServletListenerRegistrationBean (); listenerRegBean.setListener (nový SessionListenerWithMetrics ()); návratový poslucháčRegBean; }

3. Základný poslucháč

Jednoduchý poslucháč to urobí sledovať počet aktívnych relácií po celú dobu:

verejná trieda SessionListenerWithMetrics implementuje HttpSessionListener {súkromné ​​konečné AtomicInteger activeSession; public SessionListenerWithMetrics () {super (); activeSessions = new AtomicInteger (); } public int getTotalActiveSession () {return activeSessions.get (); } public void sessionCreated (konečná udalosť HttpSessionEvent) {activeSessions.incrementAndGet (); } public void sessionDestroyed (konečná udalosť HttpSessionEvent) {activeSessions.decrementAndGet (); }}

Pri vytváraní relácie sa spustí poslucháč relácie - sessionCreated:

HttpSession session = request.getSession ();

A zničené - sessionDestroyed:

session.invalidate ();

Tento mechanizmus umožňuje načítať aktuálny počet relácií od poslucháča, ale aby to bolo možné monitorovanie a transparentnosť v reálnom čase, potrebujeme ďalšiu logiku, aby sme hodnotu skutočne získali a zverejnili.

To je miesto, kde prichádza knižnica metrík - prichádza s niekoľkými reportérmi mimo krabičky, ktorí umožňujú zverejnenie tejto metriky s veľmi malým úsilím.

4. Poslucháč s metrikami

Takže namiesto zavedenia nášho vlastného riešenia monitorovania budeme využívať knižnica metrík; budeme musieť pridať do nášho pom:

 com.codahale.metrics metriky - jadro 3.0.1 

Keď je na triednej ceste k dispozícii metrické jadro, môžeme napísať to isté HttpSessionListener pomocou a Počítadlo objekt:

verejná trieda SessionListenerWithMetrics implementuje HttpSessionListener {private final Counter counterOfActiveSessions; public SessionListenerWithMetrics () {super (); counterOfActiveSessions = MetricRegistrySingleton.metrics.counter ("web.sessions.active.count"); } public void sessionCreated (konečná udalosť HttpSessionEvent) {counterOfActiveSessions.inc (); } public void sessionDestroyed (konečná udalosť HttpSessionEvent) {counterOfActiveSessions.dec (); }}

The Metrická registrácia - centrálny register všetkých metrík aplikácie - jednoducho sa naň odkazuje v statickom poli pre celú aplikáciu:

public final class MetricRegistrySingleton {public static final MetricRegistry metrics = new MetricRegistry (); }

Publikovanie tejto metriky a jej okamžité sprístupnenie na sledovanie - napríklad do štandardného systému protokolovania aplikácie - je jednoduché:

Logger logger = LoggerFactory.getLogger ("com.baeldung.monitoring"); Reportér Slf4jReporter = Slf4jReporter.forRegistry (metriky). VýstupTo (protokolovač). convertRatesTo (TimeUnit.SECONDS) .convertDurationsTo (TimeUnit.MILLISECONDS) .build (); reporter.start (5, TimeUnit.MINUTES);

5. Záver

Tento návod ilustroval, ako zaregistrovať a HttpSessionListener v deskriptore nasadenia webovej aplikácie a ako sledovať aktívny počet relácií pomocou dvoch mechanizmov. Prvý mechanizmus je ručne valcované počítadlo a druhý je založený na zrelom metriky knižnica.

Implementáciu nájdete v príklade projektu GitHub.


$config[zx-auto] not found$config[zx-overlay] not found