Tomcat cluster monitorozasa

Fórumok

A problema megoldasaban jelenleg en csak erintolegesen veszek reszt, tobbek kozott azert, mert lathatoan nem ertek hozza.

Adott egy tomcat cluster. Azt meg az 5.5 verzional a psi-prope [1] nevu stuffal monitoztak.
Kb. arra van szukseg, hogy a a cluster status-at lehessen nezni (a session-ok replikalodnak) jmx-en.

Viszont a psi-probe funkcioi kozul ezt kivettek, kitudja miert.
Mi az altalanosan bevett, hivatalos v. bejaratott megoldas jelenleg?

Eleg, sot talan a legjobb lenne egy nagios check. De azt sem vagom, milyen attributomot kellene figyelni.

Hozzászólások

A problema a feladat specifikalasaval van, onmagaban az, hogy 'a cluster statusa' nem jelent semmit.
Kulonbozo parametereket figyelhetsz a tomcatjeiden, ezek kozul egy a sessionok szama, de onmagaban ez nem nyujt eleg informaciot semmirol.
Szerintem amiket erdemes figyelni, azok amik a scriptben is szerepelnek, szabad heap space, garbage collectionban toltott ido, szabad permgen space, foglalt threadek szama, szabad threadek szama szazalekban, etc
A scripttel minden metricre kulon alert triggert is lehet tenni, tehat pl beallithatod, hogyha a JVM tobb idot tolt GC-ben mint 300ms, akkor legyen warning/critical.
Ugyancsak onmagaban az, hogy a heap tele van, meg nem jelenti azt, hogy a JVM rosszul mukodik.

Szerintem minnel tobb parametert figyeltess, es lehetoseg szerint rajzoltass fel trend monitorozo alkalmazassal, es egy ido utan latni fogod, hogy mi az, amire erdemes riasztast beallitani.
Ezen kivul en meg csinalnek egy HTTP/HTTPS checket, ami az alkalmazas egy monitor endpointjat hivogatja, es valami stringet keres benne, pl 'ALL OK', amit maga a webapp irat ki, es csak akkor, ha minden alrendszer mukodik.

Azt hiszem a scriptet ennek alapjan raktam ossze:
http://archive.apachecon.com/na2013/presentations/27-Wednesday/A_Patchy…

> A scripttel minden metricre kulon alert triggert is lehet tenni, tehat pl beallithatod, hogyha a JVM tobb idot tolt GC-ben mint 300ms, akkor legyen warning/critical.
Ugyancsak onmagaban az, hogy a heap tele van, meg nem jelenti azt, hogy a JVM rosszul mukodik.

Persze, de ezek engem nem erdekelnek, ahogy irtam fent.

> 'ALL OK'

Lenyegeben nekem az ALL OK most a sessionok replikacio-ja, ami a lenyege a cluster-nek. A tobbi csak korites, semmi clusterspecifikus nincs benne.

Szoval a replikaciot hogyan monitorozod?

10x
tompos

Ja ertem. Szoval amikor Tomcat Clusterrol beszelsz akkor a session replikaciora gondolsz.

En igy csinaltam:
Megkeresed, hogy melyik MBean kell neked:

jmx4perl -user jolokiauser -password jolokiapassword http://fqdn:jolokiaport/jolokiacontext list|grep type=Manager

A listabol ki tudod valasztani azt, amelyik kell, a context alapjan.

Aztan


jmx4perl -user jolokiauser -password jolokiapassword  http://fqdn:jolokiaport/jolokiacontext read Catalina:context=/appcontext,host=localhost,type=Manager activeSessions

Ha a fent emlitett scripttel akarod, akkor


./check_jmx -j http://fqdn:jolokiaport/jolokiacontext/ -u jolokia_user -p jolokia_password -s tomcat_sessions --param /appcontext --param localhost

A localhost lehet mas is, attol fuggoen hogy a tomcat virtualhostja hogy van bekonfiguralva.

Mondjuk mi nem hasznalunk session replikaciot, szoval lehet, hogy ez valahol bekavar, mindenesetre szerintem megeri megnezni.
A jmx4perl-t pedig a JMX::Jmx4Perl nevu perl modul felrakasaval tudod beszerezni.

Nem vagyok benne biztos, hogy letezik egy magikus bean, ami azt mutatja, hogy a session replikacio 'egeszseges', vagy 'beteg'.
Amire van eselyed, hogy talalsz valami beant ami mutatja, hogy mennyi latency van, mennyi session lett eldobalva, ilyenek.

Meg itt nezhetsz korul:

http://tomcat.apache.org/tomcat-5.5-doc/cluster-howto.html#Monitoring_y…

OFF ON
Nekem is ki kellett talalnom, hogy mi a legjobb modja ezeknek (heap, gc) a monitorozasara (fokent statisztika gyujtes celjabol) ami nem hasznal java-t.

En is a Jolokia-nal kotottem ki. En egy collectd-jolokia plugint irtam hozza a collectd python modul-t hasznalva. A collectd python module configjaban lehet beconfigolni hogy milyen JMX valuekat kerdezze le.

En is megprobaltam open source-olni, de a ceg akinek dolgozom nem engedte meg (valojaban senkit sem talaltam, aki ilyen ugyben donteskepes volt) ezert nem tudtam. A szerzodesem szerint meg minden az oveke, amit irok es ezt ha megszegem sujos buntetest kell fizetnem ezert ugy dontottem nem lesz open source :(
OFF OFF

Ezzel is tudsz browse-olni JMX-en es ehhez nem kell agent servlet:
https://code.google.com/p/jmxsh/wiki/Summary

Eloszor is, ugye alairtam egy szerzodest es ebbol elek (csaladostul). Egyszeruen nem eri meg trukkozni, ezen felul, igy tiszta a lelkiismeretem. :)

Masodszor, amikor elkezdtem utanajarni, hogy hogyan is kellene ezt elegansan, jol megoldani, akkor ugye tudtak, hogy ezen dolgozom. Miutan eszrevettem, hogy nincs normalis megoldas elkezdtem megirni a sajatot. De ugye ekkor mar beleoltem par orat/napot ( hasonloan a post nyitojahoz, nekem is eleg hianyos volt a tudasom eteren akkoriban ;) ) es tudtak, hogy ezen dolgozom. Miutan megirtam, megprobaltam a hivatalos utat es elkezdtem keresni azt az embert, aki engedelyezi, hogy "megnyissam". Kiderult, hogy egy magas pozicioban levo emberke egyszer mar probalta elerni, hogy megnyithassanak egy kulsos ceg altal fejlesztett projectet de zatonyra futott vele, mivel senki nem adta a nevet ehhez. Ezert en is feladtam.
Ezek utan eloallni, hogy: "je, nezzetek mar, ez a software mindent tud, ami nekunk kell... Eddig hogy nem vettem eszre..." kicsit erdekes lett volna.

jovobeni tipp volt, a kovetkezo megnyitni kivant cucchoz :)

en megertem h uzletileg kritikus kodot/toolt/akarmi megnyitni nemjo (en is igy jarok el), de egy ilyen es hasonlo faek egyszeru scripteket azert jolesik megosztani, foleg azert mert en is szoktam talalni jo dolgokat a netet, es szerencse hogy azokat keszitok nem hagytak zartan

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Zabbixot ajanlanam. Mar elegge regota van jmx monitoring.
Ha leszeded a java gateway reszenek az ujabb verziojat. A https://bitbucket.org/ryanrupp/zabbix-java-gateway/wiki/Home -rol.
Akkor lesz discovery, amivel automatikusan elkezdi monitorozni az ujonnan deplojololt appokat.
Default template erre nem alkalmas, de nem nehez atirni.

Ha esetleg sikerult megoldani, documentalhatnad, hogy milyen modon, miket kell monitorozni.