Seite wählen

NETWAYS Blog

Weekly Snap: Averting Java Plugins, Playing with HTML 5 & Hooks

30 Jan – 3 Feb turned over a new month with expo reflections, an OSDC program, and a nifty Java idea for Icinga/Nagios plugins – all topped off with our 100th development blog post.
Bernd brought home a few impressions from his visit to the Cloud Expo Europe in London and Lennart found a way around writing Java plugins for Icinga / Nagios.
From the development team, Angsar toyed with the idea of programming games in HTML5 while Marius showed how to add hooks in Perl to make patching vendor code a little easier.
Pamela closed the Open Source Data Center conference Call for Papers, and announced the preliminary program of speakers. She also reminded early birds to get in before  15 February for special conference rates.

Plugins in Java für Icinga und Nagios?

Grundsätzlich ist das mit Java und Admins ja so eine Sache, was auch die Vielzahl von Plugins in Perl oder gar als Shell-Skript erklärt. Nun kommt es aber in größeren Enterprise-Umgebungen vor, dass Software in Java entwicklet wird und dann auch noch überwacht werden soll. Warum bei solchen Projekten dann nicht auch gleich eine Schnittstelle zum Monitoring programmieren?
Oder vielleicht gibt es eine solche API schon für das eingesetzte Produkt, wie z.B. bei einem Kunden, bei dem ich kürzlich eine Migration von Nagios nach Icinga durchführte. Die dort eingesetzte Software stellt Java-Klassen zur Überwachung zur Verfügung, die bedingt durch Verträge nicht auf dem jeweiligen Application-Server ausgeführt werden darf, sondern auf dem Monitoring-System selbst.
Damit nicht für jedes Plugin, das gestartet wird, immer wieder eine neue Java-VM gestartet werden muss, hat man sich für den Einsatz von JNRPE entschieden. JNRPE ist eine Java basierte Implementation des NRPE-Servers, der mittels check_nrpe abgefragt wird. Seit Version 2 ist die API in eine Library ausgelagert, die auch bei eigenen Java-Projekten unter Beachtung der Apache Software License 2.0 verwendet werden darf.

Lennart Betz
Lennart Betz
Senior Consultant

Der diplomierte Mathematiker arbeitet bei NETWAYS im Bereich Consulting und bereichert seine Kunden mit seinem Wissen zu Icinga, Nagios und anderen Open Source Administrationstools. Im Büro erleuchtet Lennart seine Kollegen mit fundierten geschichtlichen Vorträgen die seinesgleichen suchen.

JConsole – Java Monitoring auf die Schnelle

JConsole ist eine seit Java Version 1.5 mitgelieferte Swing-Applikation zur Überwachung von Java Prozessen via JMX auf lokalen oder entfernten Systemen. JMX steht für Java Management Extension und ist eine in der Weiterentwicklung befindliche Erweiterung des Java Standards, welche auch die Kommunikation zwischen unterschiedlichen JVM ermöglicht.
Nach dem Start der JConsole auf der Commandline erscheinen bereits im Startscreen die lokalen Java-Prozesse auf die mit einem Doppelklick zugegriffen werden kann. Für das Monitoring entfernter JVM’s muss auf dem Zielsystem der entsprechende RMI-Zugriff aktiviert sein.


JConsole gibt eine schnellen Überblick über den aktuellen Speicherbedarf der virtuellen Machine und der durch Java verursachten Prozessorauslastung. Alle Hauptsichten bieten die Möglichkeit verschiedene Zeitbereiche auszuwählen, welche jedoch nur während der Laufzeit der JConsole aufgezeichnet werden. Die Übersicht der Screenshots lässt erkennen, dass in unserem Beispiel bereits knapp 6000 Javaklassen in der JVM geladen sind. Hierbei handelt es sich um einen neu gestarteten iReport-Designer ohne geöffneten Bericht.
Die gelisteten MBeans, deren Zustand und weitere Parameter können selbstverständlich direkt aus Nagios und Icinga überwacht werden um eine langfristige Analyse zu ermöglichen. Mit check_jmx und check_jmx4perl gibt es bei MonitoringExchange.org hier bereits gute Lösungen.
Um über die Prozessliste hinaus einen schnellen Einblick in die virtuelle Maschine zu bekommen, ist JConsole eine ausreichende und dazu meist schon vorhandene Alternative, deren Nutzung sich lohnt.

Bernd Erk
Bernd Erk
CEO

Bernd ist Geschäftsführer der NETWAYS Gruppe und verantwortet die Strategie und das Tagesgeschäft. Bei NETWAYS kümmert er sich eigentlich um alles, was andere nicht machen wollen oder können (meistens eher wollen). Darüber hinaus startete er früher das wöchentliche Lexware-Backup, welches er nun endlich automatisiert hat. So investiert er seine ganze Energie in den Rest der Truppe und versucht für kollektives Glück zu sorgen. In seiner Freizeit macht er mit sinnlosen Ideen seine Frau verrückt und verbündet sich dafür mit seinen beiden Söhnen und seiner Tochter.

Mule – Enterprise Service Bus

Mule ist ein auf Java basierender Open-Source Enterprise Service Bus, welcher mit Hilfe von verschiedenen Adaptern, den so genannten Transports verschiedene Applikationen mit verschiedenen Formaten miteinander verbinden kann.
Die eigentliche Übertragung der Daten ist für Nutzer des ESB’s vollkommen transparent, egal ob der Zielrechner nebenan oder auf einem andern Kontinent zu finden ist. Mule kümmert sich um das Routing, die Filterung, Transformation und gesicherte Zustellung von Messages.
Im Gegensatz zu klassichen ESB’s ist es bei Mule nicht grundsätzlich erforderlich alle Nachrichten in ein einheitliches Format zu konvertieren, da Mule die Weiterleitung in nahezu allen gängigen Formaten quasi out of the box unterstützt.

Print

Das Beispiel zeigt einen möglichen Workflow von Monitoringdaten, welche über einen HTTP-Transport entgegengenommen und weiterverarbeitet werden. In großen Systemmanagement-Umgebungen eröffnet Mule Möglichkeiten zur Integration und Weiterleitung von Konfigurations-, Kommando-, Event- und Performancedaten oder die Transformation in unstrukturierte Formate wie z.B. Mail.

Die Technik und die Vielzahl an Möglichkeiten machen den Einstieg in diesen Technologieteil etwas schwierig, jedoch eröffnen sich dem Nutzer nach kurzer Zeit viele Potentiale um Daten direkt und heterogen zu verarbeiten.

Bernd Erk
Bernd Erk
CEO

Bernd ist Geschäftsführer der NETWAYS Gruppe und verantwortet die Strategie und das Tagesgeschäft. Bei NETWAYS kümmert er sich eigentlich um alles, was andere nicht machen wollen oder können (meistens eher wollen). Darüber hinaus startete er früher das wöchentliche Lexware-Backup, welches er nun endlich automatisiert hat. So investiert er seine ganze Energie in den Rest der Truppe und versucht für kollektives Glück zu sorgen. In seiner Freizeit macht er mit sinnlosen Ideen seine Frau verrückt und verbündet sich dafür mit seinen beiden Söhnen und seiner Tochter.

Jasper Reporting – Design Tips

Jasper-ReportingBereits im letzten Post haben wir den Report auf den Server geladen, jedoch sieht dieser aktuell noch etwas spartanisch aus. Es lohnt sich meistens am Ende noch etwas Zeit in die optische Aufbereitung der Reports zu investieren. Schon alleine um die Akzeptanz beim Empfänger zu verbessern. Über Schrift, Farben und Formen hinweg bietet iReport im Palettenbereich eine Vielzahl an Möglichkeiten.
Wir starten mit dem Einfügen eines Logos. Dieses kann entweder via URL von einem Webserver geladen oder in das Jasper-Repository kopiert werden.post5_screen1 Der Upload via iReport erfolgt wie auch beim Bericht via Kontextmenü durch Anlage einer neuen Ressource. Wichtig ist, das als Typ Image verwendet wird, um Probleme bei der Einbindung auszuschliessen.
post5_screen2Anschließend kann über die Palette ein Bildobjekt im Report platziert werden. Falls das Bild auf dem Server bereits verfügbar ist, kann die Auswahl hier abgebrochen werden und als Expression folgendes eingetragen werden.
[code lang=“shell“]
"repo:/reports/Images/Banner
[/code]
Der Name muss hier mit dem entsprechenden Repositorynamen übereinstimmen und da wir uns in der Welt von Java bewegen ist die Unterscheidung zwischen Groß- und Kleinschreibung wichtig.
Oberhalb des Arbeitsbereiches oder bei den entsprechenden Objekten im Eigenschaftsbereich können nach Belieben Schriftart und -größe eingestellt werden.
Reports mit vielen Zeilen wirken schnell unübersichtlich. Daher empfielt es sich solche Textwüsten wenigstens mit abwechselnd dunklen und hellem Hintergrund zu unterlegen. Dies ist mit einem kleinem Kniff auch mit iReport möglich. Nach Einbindung eines farbigen Rechtecks im Detailband kann dieser abwechselnd zur Zeilennummer angezeigt werden. Hierfür muss man in die Eigenschaft „Print When Expression“ folgendes einfügen:
[code lang=“java“]
new Boolean( $V{PAGE_COUNT}.intValue() % 2 ==0 )
[/code]
post5_screen5Über das Palettenobjekt „Page X of Y“ kann noch schnell ein Seitenzähler integriert werden und fertig! Hier wieder das Ergebnis als PDF und den Report als Download bei netways.org.
Im nächsten Post widmen wir uns der Übergabe von externen Parametern.

Bernd Erk
Bernd Erk
CEO

Bernd ist Geschäftsführer der NETWAYS Gruppe und verantwortet die Strategie und das Tagesgeschäft. Bei NETWAYS kümmert er sich eigentlich um alles, was andere nicht machen wollen oder können (meistens eher wollen). Darüber hinaus startete er früher das wöchentliche Lexware-Backup, welches er nun endlich automatisiert hat. So investiert er seine ganze Energie in den Rest der Truppe und versucht für kollektives Glück zu sorgen. In seiner Freizeit macht er mit sinnlosen Ideen seine Frau verrückt und verbündet sich dafür mit seinen beiden Söhnen und seiner Tochter.