Seite wählen

NETWAYS Blog

Jasper Reporting – Host Availability

Jasper-ReportingBisher haben wir uns lediglich den Konfigurationsdaten und dem aktuellen Status der Systeme gewidmet, aber wirklich spannend ist bei der Erstellung ja der Blick in die Vergangenheit und im Idealfall dann noch der Überblick über einen bestimmten Zeitraum.
Da die Verfügbarkeitsreports innerhalb von Nagios auf Filebasis erfolgen, müssen die Einträge in der Datenbank erst aufbereitet werden, vorausgesetzt man möchte sich nicht selbst darum kümmern.
Um eine Durchschnittsaussage über einen größeren Zeitraum durchzuführen, müssen die einzelnen Statuswechsel und die Zeiträume dazwischen analysiert und summiert werden. Das ganze kann mit Hilfe unseres Packages netMySLA erfolgen, dass genau diese Informationen in einem nächtlichen Batch ermittelt und in entsprechenden Aggregatstabellen speichert. Nach Installation dieses Packages kann unsere Abfrage wie folgt erweitert werden:
[code lang=“sql“]
select c.alias,
a.host_object_id,
a.display_name,
a.address,
e.sla_availability_percent,
e.sla_outage_percent,
e.sla_period_identifier,
d.current_state
from nagios_hosts a,
nagios_hostgroup_members b,
nagios_hostgroups c,
nagios_hoststatus d,
np_aggregate_sla e
where a.host_object_id = b.host_object_id
and b.hostgroup_id = c.hostgroup_id
and a.host_object_id = d.host_object_id
and a.host_object_id = e.sla_host_objectid
and a.instance_id = 1
and b.instance_id = 1
and c.instance_id = 1
and d.instance_id = 1
and e.sla_service_name is null
and e.sla_period_name = ‚month‘
and e.sla_period_identifier > ‚2009-06-01‘
[/code]
Das Datum ist hier fälschlicherweise fest Codiert und muss in Realität entweder parametrisiert oder via Datums-Parameter gefüllt werden. Mit diesem Statement bekommen wir anschließend sowohl den aktuellen Status als auch den prozentualen Anteil der Verfügbarkeit in dem angegebenen Monatszeitraum.
post12_screen1Da die Darstellung unter Verwendung eines Kuchendiagramms erfolgen soll, ist dieses über die Palette in den Detailbereich des Reports einzufügen.
Die Datenübergabe an das Diagramm erfolgt wie in den vorhergehenden Beispielen mittels Kontextmenü. Wichtig ist, dass das Kuchendiagramm mit zwei Serien bestückt wird.
Serie Availability:
Key expression: „Availability“
Value expression:
[code lang=“java“]
$F{sla_availability_percent}
[/code]
Serie Outage:
Key expression: „Outage“
Value expression:
[code lang=“java“]
$F{sla_outage_percent}
[/code]
post12_screen2Wenn das Diagramm korrekt im Detailbereich platziert worden ist, wird die entsprechende Verfügbarkeit nun pro definiertem Service dargestellt. Um bei der Anzeige mit Ausfallkandidaten zu beginnen, genügt es dem Statement noch ein „order by e.sla_outage_percent“ anzuhängen.
Hier kann der erstellte Beispielbericht wie gewohnt geladen werden. Die Vorlage gibt es bei netways.org und auf unserem Demo-System.
Der nächste Teil der Serie ergänzt das Thema Verfügbarkeit noch mit der Integration des Business Process Addons for Nagios.

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 – Dynamische Parameter

Jasper-ReportingSeinen Report mit Parametern zu versehen hat mehrere Vorteile. Zum einen kann man die gleiche Vorlage für verschiedene Kunden und Objekte einsetzen, zum anderen hat der Endanwender die Möglichkeit der Interaktivität. Wer auf viele Parameter setzt sollte jedoch immer für eine hohe Quote an vordefinierten Reports sorgen, da die Hürde zur Ausführung nicht zu hoch liegen sollte.
Gerade beim Vergleich von Text in einem Statement muss der eingegebene Parameter exakt übereinstimmen, da sonst keine Daten ermittelt werden können. Bei etwas längeren Attributen wie Host- oder Servicegruppen ist dies einfach zu fehleranfällig. Hier können dynamische Parameter Abhilfe schaffen, da sie dem Benutzer quasi die Summe aller Möglichkeiten anbieten und man nur noch aus dieser Menge auswählen kann.
post11_screen1Die Definition erfolgt wieder direkt auf dem JasperServer durch Anlage eines neuen „Input Controls“. Bei Eingabe des Namens bitte dringend auf die richtige Schreibweise achten, da dies im Support Fehler Nummer 1 ist, wenn der Wert nicht angenommen wird und ein Default-Wert existiert.
post11_screen2Bei der Eingabe der „Input Control Details“ ist der Type Single Select Query zu wählen. Anschließend kann entweder eine globale Query aus dem Repository oder eine lokale (unser Beispiel) verwendet werden. In unserem Fall ist der Wert zur Anzeige auch der Wert zur Übergabe. Wenn z.B. Namen ausgewählt, aber Personalnummern übergeben werden sollen, sind mind. zwei Columns zu selektieren.
Das Statement zur Ermittlung der verfügbaren Hostgruppen lautet:
[code lang=“sql“]
select alias from nagios_hostgroups where instance_id = 1
[/code]
post11_screen5post11_screen3post11_screen4Als Datasource übernehmen wir auch hier wieder die lokale Definition. Anschließend muss wie bereits angedeutet noch das Value und Visible Column hinterlegt werden und die Anlage des Parameters bestätigt werden. Nach Zuordnung des Parameters zum aktiven Report, kann dieser dann auch im Webinterface ausgewählt werden.
Der entsprechende Report findet sich natürlich auch wieder bei netways.org und unserem Demo-System.
Im nächsten Post steigen wir in das Thema Host-Availability ein.

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 – Inhalte verlinken

Jasper-ReportingVor einigen Tagen hatten wir schon das Thema Diagrammintegration angesprochen. Auf Basis dieses Beispiels beschreiben wir in diesem Post die Integration von Links in das Diagramm. Die Integration von URLs macht immer dann Sinn, wenn entweder eine aufrufbare Applikation die Basis der Reportingdaten erweitern kann oder wie im Beispiel von Nagios der Einstieg für die detaillierte Betrachtung durch den Report gesteuert wird.
post10_screen1Die Einstellung der Basis-URL erfolgt im Kontextmenü des Diagramms im Bereich „Section Hyperlink“. Hyperlink target bezeichnet das entsprechende Zielfenster des Links und Hyperlink type ergiebt sich aus der Auswahl der Parameterbefüllung.
Wie in iReport üblich erfolgt die Parametrisierung mittels Expression, welche in unserem Beispiel wie folgt lautet:
[code lang=“java“]
&http://guest:guest@nagios.demo.netways.de/nagios/cgi-bin/status.cgi?style=detail&hostgroup=" + $F{alias}
[/code]
Die Übermittlung von Username und Passwort in einem Produktivsystem ist mit Sicherheit problematisch, vereinfacht jedoch den Aufruf des Nagios-Demosystems erheblich.
Als Tooltip kann ebenfalls eine Expression anlegen, welche die Ausgabe verschönert:
[code lang=“java“]
&Go to hostgroup in Nagios: & + $F{alias}
[/code]
post10_screen2Auf die verschiedenen Textelemente des Reports, wie z.B. den Hostnamen sind Hyperlink auf die gleiche Art und Weise via Kontextmenü hinzufügbar. Auch die Verknüpfung mit anderen Reports ist möglich und Jasper kann so diverse Berichte miteinander verschachteln. Das Ergebnis kann sich auf jeden Fall sehen lassen.
Den entsprechenden Report findet ihr natürlich auf netways.org und unserem Demo-System.
Der nächste Post gibt eine Einführung in die Erstellung dynamischer Parameter.

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 – Statusanzeige

Jasper-ReportingDa wir uns bisher auf die reine Verarbeitung von Bestandsdaten konzentriert haben, soll dieser Post den Datenumfang etwas erweitern und auch den aktuellen Host-Status der selektierten Objekte ermitteln. Bei Versendung eines solchen mit Hilfe des Schedulers (dazu später mehr) ist darauf zu achten, den versendeten Report auch zu speichern, da eine Reproduktion in der Praxis kaum möglich ist.
Wir beginnen wieder mit der Erweiterung unserer SQL-Abfrage um den aktuellen Hoststatus zu ermitteln.
[code lang=“sql“]
select c.alias,
a.host_object_id,
a.display_name,
a.address,
d.current_state
from nagios_hosts a,
nagios_hostgroup_members b,
nagios_hostgroups c,
nagios_hoststatus d
where a.host_object_id = b.host_object_id
and b.hostgroup_id = c.hostgroup_id
and a.host_object_id = d.host_object_id
and a.instance_id = 1
and b.instance_id = 1
and c.instance_id = 1
and d.instance_id = 1
and display_name like $P{p_hostgroup}
[/code]
post9_screen1Um den Status ähnlich einer Ampel anzuzeigen positionieren wir zwei Rectangle-Objekte aus der Palette in den Detail-Bereich und versehen eines mit roter und das andere mit grüner Vorder- und Hintergrundfarbe.
Zur besseren Bearbeitung empfiehlt es sich, die beiden Objekte erst nebeneinander und erfolgter Parametrisierung hintereinander zu positionieren. Um die Anzeige abhängig vom aktuellen Hoststatus zu machen, setzen wir analog zur farbigen Hinterlegung der Datenzeilen auf die „Print  When  Expression“, welche wie nachfolgend beschrieben für beide Objekte gesetzt werden muss.
Für den Roten:
[code lang=“java“]
new Boolean( $F{current_state}.intValue() == 1 )
[/code]
Für den Grünen:
[code lang=“java“]
new Boolean( $F{current_state}.intValue() == 0 )
[/code]
Somit wird entweder der Rote oder Grüne Rectangle angezeigt.
Hier kann wie immer der entsprechende Report heruntergeladen werden und er steht natürlich auf netways.org und unserem Demo-System zur Verfügung.
Im nächsten Post versehen wir die vorhandenen Diagramme mit Links zum Nagios-System.

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 – Diagramme hinzufügen

Jasper-ReportingDie Hostobjekte werden nun bereits nach Hostgruppen gruppiert dargestellt und können auch mit Hilfe eines externen Parameters beeinflusst werden. Für einen besseren Überblick fügen wir dem Report jetzt ein Kuchendiagramm hinzu, welches uns auf der Ergebnisseite einen Überblick über die Hostverteilung gibt.
post8_screen1Über die Palette können wir das Diagramm-Symbol wählen und auf eine freie Stelle des Reports ziehen. Bei der Aufforderung des Diagrammtyps nehmen wir in diesem Beispiel das 3D-Kreisdiagramm. Darüber hinaus gibt es eine Vielzahl an Diagrammen, deren Eigenschaften jedoch auch zu den selektierten Daten passen muss. Aus meiner Sicht ist das Kreisdiagramm aber das Mittel der Wahl für die Darstellung von Verteilungen.
post8_screen2Nach erfolgter Auswahl lässt sich via Kontextmenü der Dateninhalt des Diagramms einstellen und im Tab Detail können die Daten bestehend aus Key expression, Value expression und Label expression eingetragen werden. Zusätzlich können die Werte können in den einzelnen Bereichen auch weiterverarbeitet, also z.B. summiert oder verändert werden.
In den Diagrammattributen kann für eine transparente Darstellung noch der Foreground Alpha (%) auf 0,5 gesetzt werden, was das Diagramm optisch abrundet. Das Ergebnis lässt sich im Preview sofort begutachten werden und man kann dort gleich noch Änderungen am Layout bzw. Größenverhältnis durchführen.
post8_screen3
Die Einbindung eines Balkendiagramms erfolgt ähnlich, jedoch unter Angabe von Series-, Category- und Value-Expression. Wichtig ist die Angabe einer Increment group in den Dataset Einstellung, da dies als Iterator für die Balkenanzeige notwendig ist. Durch Anpassung der Label-Rotation auf 90 in den Eigenschaften des Diagramms können die entsprechenden Beschriftungen noch Vertikal dargestellt werden, was bei einer Vielzahl von Serien übersichtlicher ist.
Hier kann der entsprechende Report heruntergeladen werden und steht natürlich auch wieder auf netways.org und unserem Demo-System zur Verfügung.
Der nächste Post widmet sich der Anzeige von aktuellen Statusinformationen aus Nagios.

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.