Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Corrected links that should have been relative instead of absolute.

Op het Java platform is JMX de technologie waarmee software gemanaged kan worden. De JMX standaard voorziet in manieren om van een willekeurig Java applicatie management informatie op te vragen, configuratie data in te stellen en specifieke management operaties uit te voeren. Denk bijvoorbeeld aan een applicatieserver, waarbij je runtime de configuratie van thread- en connection pools wilt kunnen aanpassen en waar je gegevens over gebruik (aantal request, gemiddelde duur van afhandeling van een request etc.) wilt kunnen opvragen.

Voor het opvragen van informatie via JMX zijn verschillende tools of applicaties beschikbaar. De bekendste is JConsole, die standaard bij de JDK wordt meegeleverd. Bij de meeste van dit soort applicaties kun je via een grafische weergave de ontwikkeling van bepaalde waarden (geheugengebruik, aantal threads) real-time volgen. Dat is handig als je bijvoorbeeld bepaalde performance- of schaalbaarheids tests aan het doen bent.

Je kunt JMX ook gebruiken bij systemen die in productie zijn en ook daarbij kun je tools als JConsole gebruiken. Een nadeel van dit soort tools is echter, dat ze niet zo geschikt zijn om gedurende langere tijd informatie te verzamelen.Voor het langdurig monitoren van een (deel van een) appicatie zou je daemon willen hebben die op de achtergrond informatie verzamelt en dat beschikbaar stelt voor latere analyse. Dat is precies het doel van deze opdracht:

Maak een "JMX Data Server" die je kunt instellen om gedurende een bepaalde tijd, bepaalde managementinformatie van een bepaalde applicatie te verzamelen en maak het mogelijk om deze informatie achter te bekijken en te analyseren.

Voor deze opdracht moet dus een server applicatie of daemon geschreven worden die in de achtergrond informatie kan verzamelen van één of meerdere te-monitoren applicaties. Vanzelfsprekend moet er ook een front-end applicatie komen om deze server applicatie te bedienen, d.w.z. instellen wat deze precies moet monitoren, gedurende welke tijd, met welk interval etc. En tenslotte moet er een applicatie zijn waarmee je achteraf de gegevens kunt bekijken en analyseren. Denk daarbij aan grafische weergave, export naar excel, "versneld afspelen" van de meetperiode, bepalen van minimum, maximum en gemiddelde waarden, automatisch inzoomen op interessante gebeurtenissen, etc.

Voor de groep die deze opdacht opgepakt heeft lagen er de nodige uitdagingen. Niet alleen hebben zij zich moeten verdiepen in JMX standaard, maar er is ook nagedacht over vragen als:

  • hoe gaat de data server de gegevens opslaan en blijft dat goed werken als het om grote hoeveelheden gaat?
  • hoe moet een gebruiker de data server configureren? Gebruiksgemak is van het grootste belang, een tool die niet makkelijk en intuïtief te gebruiken is wordt gewoon niet gebruikt
  • hoe vindt de communicatie tussen de verschillende onderdelen plaats? Welke protocollen worden er gebruikt, hoe gaan onderdelen elkaar vinden?
  • hoe moet je grote hoeveelheden data visualiseren? Hoe ondersteun je de gebruik goed in het vinden van probleempunten?
  • hoe ga je om met zaken als netwerkproblemen? Wat doe je als de applicatie die gemonitord wordt niet tijdig reageert? Hoeveel disk ruimte mag de applicatie gebruiken voor het opslaan van data?
  • hoe ga je om met security? Voor applicaties die in productie zijn gelden vaak beperkingen met betrekking tot connectivity.
  • hoe test je een dergelijk tool?