Come monitorare Apache Tomcat 7 su un server remoto protetto da firewall

In un mio vecchio articolo ho descritto la procedura che consentiva di monitorare un Tomcat 6 su un server remoto protetto da firewall. Con la versione 7 del application server sono state apportare numerose novità, tra cui alcune relative proprio al monitoraggio.

Come visto nel precedente articolo, nella versione 6 del Tomcat due delle tre porte necessarie per il monitoraggio remoto tramite strumenti come JVisualVM vengono esposte randomicamente ad ogni avvio del servizio, rendendo di fatto necessaria una loro ricerca tra i socket in ascolto sul server remoto. Con Tomcat 7 è stata introdotta la possibilità di impostare tutte e tre le porte a cui collegarsi, consentendo quindi anche di richiedere eventuali aperture mirate sul firewall.

La procedura per attivare la possibilità di monitoraggio remoto tramite JMX prevede innanzitutto la copia del JMX Remote Jar nella directory lib dell’installazione di Tomcat. Trovate questo file nella stessa pagina del download del servizio. Successivamente, non resta che effettuare due semplici configurazioni:

  • aggiungere alla variabile d’ambiente CATALINA_OPTS nello script di startup del servizio le direttive per attivare la porta jmx, che sono (ipotizzando di bypassare l’autenticazione):
    CATALINA_OPTS=”-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=HOSTNAME”;

    in cui la porta 12345 è la prima delle tre che verrà utilizzata a questo scopo;

  • aggiungere la configurazione del Listener JMX nel file server.xml che si trova nella directory conf/ del path di installazione di Tomcat 7:
    <!– REMOTE JMX –>
    <Listener className=”org.apache.catalina.mbeans.JmxRemoteLifecycleListener” rmiRegistryPortPlatform=”10001″ rmiServerPortPlatform=”10002″ />

    impostando di fatto i valori delle altre due porte a cui ci si dovrà collegare (10001 e 10002 nel nostro caso).

Non resta che riavviare il servizio e collegarsi tramite uno strumento come JVisualVM alla porta 12345 del server remoto. Nel caso in cui l’accesso alle tre porte fosse bloccato dal firewall, sarà necessario eseguire un tunnel ssh con cui renderle disponibili localmente.

Lascia un commento