Monitoring
Verfügbare Monitoring-Beans
Xima® Formcycle bietet für das Monitoring des Anwendungsstatus je Server-Typ eine entsprechende Monitoring-Bean an. Diese kann über JMX mit einem dazugehörigen Werkzeug (z.B. JConsole) angebunden und abgefragt werden. Die Namen unter der die entsprechenden Beans registriert sind lauten hierbei:
Frontend-Server
de.xima.fc:type=FSMonitor,qualifier=<Kontext-Name>Master-Server
de.xima.fc:type=MSMonitor,qualifier=<Kontext-Name>
Der qualifier ist hierbei für eine Parallel-Installation der entsprechenden Server notwendig und entspricht dem Kontext-Namen der Anwendung. Dieser ist hierbei standardmäßig der Namen der *.war-Datei, kann jedoch über den Kontext-Parameter XFC_CONTEXT_NAME innerhalb der web.xml angepasst werden. Ebenfalls wird während des Starts des entsprechenden Servers der konkret verwendete Name ausgeloggt. Jede Bean besitzt zudem unterschiedliche Monitoring-Attribute welche in folgenden Übersichten dargstellt sind:
Master-Server (MSMonitor)
Attribut | Bedeutung | Mögliche Werte |
---|---|---|
running | Gibt an, ob der Master-Server aktiv ist | true,false |
db_connected | Gibt an, ob der Master-Server erfolgreich eine Datenbankverbindung herstellen konnte. | true,false |
fs_connected | Repräsentiert eine Map mit den Namen aller Frontend-Server als Schlüssel und als Wert, ob diese mit dem Master-Server verbunden sind. | Schlüssel: <Frontend-Server-Name> Wert: true,false |
fs_active | Repräsentiert eine Map mit den Namen aller Frontend-Server als Schlüssel und als Wert ob diese automatisch verbunden werden soll. | Schlüssel: <Frontend-Server-Name> Wert: true,false |
fs_status | Repräsentiert eine Map mit den Namen aller Frontend-Server als Schlüssel und dem konkreten Verbindungsstatus als Wert. | Schlüssel: <Frontend-Server-Name> Wert: CONNECTED,NOT_CONNECTED,ERROR, RECONNECTING,DISCONNECTING,CONNECTING, AUTHENTICATING, WAIT_FOR_CONNECTION |
fs_disconnected_count | Gibt die Anzahl der nicht verbundenen Frontend-Server an. | Zahlen größer/gleich 0 |
fs_connected_count | Gibt die Anzahl der verbundenen Frontend-Server an. | Zahlen größer/gleich 0 |
Frontend-Server (FSMonitor)
Attribut | Bedeutung | Mögliche Werte |
---|---|---|
running | Gibt an, ob der Frontend-Server erfolgreich gestartet wurde. | true,false |
connected | Gibt an, ob der Frontend-Server mit einem Master-Server verbunden ist. | true,false |
status | Gibt den konkreten Verbindungsstatus des Frontend-Servers an. | CONNECTED,NOT_CONNECTED,ERROR, RECONNECTING,DISCONNECTING,CONNECTING, AUTHENTICATING, WAIT_FOR_CONNECTION |
JSON-REST-Schnittstelle
Die für das Monitoring verwendeten Beans sind ebenfalls über eine bereitgestellte JSON-Schnittstelle aufrufbar. Ein möglicher Aufruf sieht hierbei zum Beispiel wie folgt aus:
JSON-Antwort:
"timestamp":1440603508,
"status":200,
"request":{
"mbean":"de.xima.fc:qualifier=formcycle,type=MSMonitor",
"type":"read"
},
"value":{
"fs_active":{
"sas":true,
"localhost":false,
"mko":true
},
"fs_connected":{
"sas":false,
"localhost":false,
"mko":false
},
"db_connected":true,"fs_status":{
"sas":"ERROR",
"localhost":"NOT_CONNECTED",
"mko":"ERROR"
},
"fs_disconnected_count":3,
"fs_connected_count":0,
"running":true
}
}
Wie erkennbar ist, befindet sich unter dem Kontext der Anwendung das Servlet ../monitoring welches die eigentliche Interpretation der Beans und deren Aufbereitung in JSON realisiert. Hierfür kommt das Framework Jolokia zum Einsatz, sodass dieses Servlet entsprechend konfigurierbar und über verschiedene Aufrufe benutzbar ist. Eine genauere Dokumentation hierfür finden sie hier.
Nagios-Anbindung
Eine Anbindung der Nagios-Monitoring-Anwendung erfolgt über die beschriebene JSON-Schnittstelle. Hierfür muss das Nagios-Plugin jmx4perl installiert werden. Dieses erlaubt es Nagios das JSON zu interpretieren und entsprechende Abfragen aufzubauen. Eine genauere Installations-Dokumentation hierfür finden Sie hier. Anschließend ist es möglich mit dem entsprechenden command des Plugins die Abfragen an die JSON-Schnittstelle zu formulieren.
Beispiele
Command
command_name check_jmx4perl
command_line check_jmx4perl --url $ARG1$ --mbean $ARG2$ --attribute $ARG3$ $ARG4$
}
Service-Definitionen
use generic-service
host_name localhost
service_description MS:FS-connected-count
check_command check_jmx4perl!http://localhost/formcycle/monitoring/!de.xima.fc:type=MSMonitor,qualifier=formcycle!fs_disconnected_count!--warning 1 --critical 2
}
Abfrage des Datenbank-Verbindungsstatus des Master-Servers
use generic-service
host_name localhost
service_description MS:DB-connected
check_command check_jmx4perl!http://localhost/formcycle/monitoring/!de.xima.fc:type=MSMonitor,qualifier=formcycle!db_connected!--string --critical 'false'
}
Abfrage, ob Frontend-Server localhost mit Master-Server verbunden ist
use generic-service
host_name localhost
service_description MS:FS-localhost
check_command check_jmx4perl!http://localhost/formcycle/monitoring/!de.xima.fc:type=MSMonitor,qualifier=formcycle!fs_connected!--path=localhost --string --critical 'false'
}
Abfrage an Frontend-Server, ob dieser erfolgreich mit einem Master-Server verbunden ist
use generic-service
host_name localhost
service_description FS:connected
check_command check_jmx4perl!http://localhost/frontend-server/monitoring/!de.xima.fc:type=FSMonitor,qualifier=frontend-server!connected!--string --critical 'false'
}
Betrieb von Nagios auf anderem Server
Da aus Sicherheitsgründen die Standardkonfiguration der JSON-Schnittstelle es nicht gestattet, von anderen IP-Adressen als die des lokalen Servers aufgerufen zu werden, ist ein Betrieb von Nagios auf einem anderen Server mit Mehraufwand verbunden. Neben den entsprechenden Lösungen über Routing oder das Verwenden eines Proxys, ist es ebenso möglich, diese Beschränkung konfigurativ zu behandeln. So ist es zum Beispiel möglich, dem Monitoring-Servlet in welchem diese Beschränkung stattfindet über den Parameter policyLocation den Pfad oder die URL zu einer entsprechenden Jolokia-Policy-Datei zu spezifizieren. Da es sich bei besagten Servlet lediglich um eine Fassade des Standard-Jolokia-Servlets handelt, wird dieser ebenso wie alle weiteren Parameter an dieses durchgereicht und es erfolgt eine entsprechende Konfiguration, siehe hier).
Eine weitere Möglichkeit um die Anbindung von Nagios von einem anderen Server aus zu ermöglichen, ist der parallele Betrieb von Jolokia und Xima® Formcycle bzw. dem Frontend-Server. Hierfür stellt Jolokia bereits einen in einer eigenen Anwendung gepackten JavaEE-Agent zur Verfügung. (Dokumentation, Download)
Dieser besitzt standardmäßig keine Limitierung von Lese-Operationen und Steueranweisungen und ist ebenso nicht bezüglich aufrufender Server bzw. IP-Adressen beschränkt. Da dies jedoch ein potentielles Sicherheitsrisiko darstellt, wird es ausdrücklich empfohlen, diese entsprechend der eigenen Server-Topologie und Anforderungen zu konfigurieren. Hierbei ist zum Beispiel anzuraten, den Zugriff lediglich auf den Nagios-Server zu beschränken. Eine ausführliche Dokumentation der Sicherheitsmechanismen von Jolokia finden Sie hier.
Entsprechend des Betriebs einer parallelen Jolokia-Installation ändert sich beispielhaft die Überprüfung der Verbindung zum Frontend-Server localhost wie folgt:
use generic-service
host_name fc-test
service_description MS:FS-localhost
check_command check_jmx4perl!http://fc-test/jolokia/!de.xima.fc:type=MSMonitor,qualifier=formcycle!fs_connected!--path=localhost --string --critical 'false'
}