Zeige letzte Bearbeiter
1 {{content/}}
2
3 == Verfügbare Monitoring-Beans ==
4
5 {{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:
6
7 ; Frontend-Server
8 : de.xima.fc:type=FSMonitor,qualifier=<Kontext-Name>
9 ; Master-Server
10 : de.xima.fc:type=MSMonitor,qualifier=<Kontext-Name>
11
12 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. Hierfür kann es notwendig sein, die [[Logging-Einstellungen>>doc:.UserInterface.Logging]] anzupassen. Jede Bean besitzt zudem unterschiedliche Monitoring-Attribute, welche in folgenden Übersichten dargestellt sind:
13
14 {{table caption="Übersicht über die Eigenschaften des MSMonitor (Master-Server)" dataTypeAlpha="0" preSort="0-asc"}}
15 |= Attribut|=Bedeutung|= Mögliche Werte
16 |running|Gibt an, ob der {{mserver/}} aktiv ist|true,false
17 |db_connected|Gibt an, ob der {{mserver/}} erfolgreich eine Datenbankverbindung herstellen konnte.|true,false
18 |fs_connected|Repräsentiert eine Map mit den Namen aller {{fserver case="nom" number="plural"/}} als Schlüssel und als Wert, ob diese mit dem {{mserver case="dat"/}} verbunden sind.|__Schlüssel:__ <Frontend-Server-Name>
19 __Wert:__ true,false
20 |fs_active|Repräsentiert eine Map mit den Namen aller {{fserver case="nom" number="plural"/}} als Schlüssel und als Wert ob diese automatisch verbunden werden soll.|__Schlüssel:__ <Frontend-Server-Name>
21 __Wert:__ true,false
22 |fs_status|Repräsentiert eine Map mit den Namen aller {{fserver case="nom" number="plural"/}} als Schlüssel und dem konkreten Verbindungsstatus als Wert.|__Schlüssel:__ <Frontend-Server-Name>
23 __Wert:__ CONNECTED,NOT_CONNECTED,ERROR,
24 RECONNECTING,DISCONNECTING,CONNECTING,
25 AUTHENTICATING, WAIT_FOR_CONNECTION
26 |fs_disconnected_count| Gibt die Anzahl der nicht verbundenen {{fserver case="nom" number="plural"/}} an.|Zahlen größer/gleich 0
27 |fs_connected_count| Gibt die Anzahl der verbundenen {{fserver case="nom" number="plural"/}} an.|Zahlen größer/gleich 0
28 |failed_login_count|Gibt die Anzahl der aktuell registrierten fehlerhaften Login-Versuche aus, also wie viele Login-Name sich Cache für die fehlerhaften Versuche befinden.|Eine Zahl größer oder gleich 0.
29 {{/table}}
30
31 {{table dataTypeAlpha="0" preSort="0-asc" fullwidth="true" caption="Übersicht über die Eigenschaften des FSMonitor (frontend-Server)"}}
32 |=Attribut|=Bedeutung|=Mögliche Werte
33 |running|Gibt an, ob der {{fserver/}} erfolgreich gestartet wurde.|true,false
34 |connected|Gibt an, ob der {{fserver/}} mit einem {{mserver/}} verbunden ist.|true,false
35 |status|Gibt den konkreten Verbindungsstatus des {{fserver case="gen"/}} an.|CONNECTED,NOT_CONNECTED,ERROR,
36 RECONNECTING,DISCONNECTING,CONNECTING,
37 AUTHENTICATING, WAIT_FOR_CONNECTION
38 |failed_login_count|Gibt die Anzahl der aktuell registrierten fehlerhaften Login-Versuche aus, also wie viele Login-Name sich Cache für die fehlerhaften Versuche befinden.|Eine Zahl größer oder gleich 0.
39 {{/table}}
40
41 == JSON-REST-Schnittstelle ==
42
43 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:
44
45 {{info}}
46 http://localhost/formcycle/monitoring/read/de.xima.fc:type=MSMonitor,qualifier=formcycle
47 {{/info}}
48
49 JSON-Antwort:
50
51 {{code language="JSON"}}
52 {
53 "timestamp":1440603508,
54 "status":200,
55 "request":{
56 "mbean":"de.xima.fc:qualifier=formcycle,type=MSMonitor",
57 "type":"read"
58 },
59 "value":{
60 "fs_active":{
61 "sas":true,
62 "localhost":false,
63 "mko":true
64 },
65 "fs_connected":{
66 "sas":false,
67 "localhost":false,
68 "mko":false
69 },
70 "db_connected":true,"fs_status":{
71 "sas":"ERROR",
72 "localhost":"NOT_CONNECTED",
73 "mko":"ERROR"
74 },
75 "fs_disconnected_count":3,
76 "fs_connected_count":0,
77 "running":true
78 }
79 }
80 {{/code}}
81
82
83 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>>url:https://jolokia.org/||rel="__blank"]] zum Einsatz, sodass dieses Servlet entsprechend konfigurierbar und über verschiedene Aufrufe benutzbar ist. Eine genauere Dokumentation hierfür finden sie [[hier>>url:https://jolokia.org/reference/html/||rel="__blank"]].
84
85 {{warning}}
86 Es ist zu beachten, dass die JSON-Schnittstelle des Monitorings nur lesende Zugriffe erlaubt und nur über den Anwendungsserver aufrufbar ist! (localhost/127.0.0.1)
87 {{/warning}}
88
89
90 == Nagios-Anbindung ==
91
92 Eine Anbindung der Nagios-Monitoring-Anwendung erfolgt über die beschriebene JSON-Schnittstelle. Hierfür muss das Nagios-Plugin [[jmx4perl>>url:http://search.cpan.org/~~roland/jmx4perl/||rel="__blank"]] installiert werden. Dieses erlaubt es Nagios das JSON zu interpretieren und entsprechende Abfragen aufzubauen. Eine genauere Installations-Dokumentation hierfür finden Sie [[hier>>url:https://jolokia.org/tutorial.html||rel="__blank"]]. Anschließend ist es möglich mit dem entsprechenden command des Plugins die Abfragen an die JSON-Schnittstelle zu formulieren.
93
94 === Beispiele ===
95
96 {{warning}}
97 Folgende Beispiele funktionieren lediglich wenn Nagios auf dem selben Server wie die Anwendungen betrieben wird!
98 {{/warning}}
99
100 {{panel title="Command" fullwidth="true" initial="hidden" triggerable="true"}}
101 {{code}}
102 define command{
103 command_name check_jmx4perl
104 command_line check_jmx4perl --url $ARG1$ --mbean $ARG2$ --attribute $ARG3$ $ARG4$
105 }
106 {{/code}}
107 {{/panel}}
108
109 {{panel title="Service-Definitionen" fullwidth="true" initial="hidden" triggerable="true"}}
110 Abfrage der Anzahl der am {{mserver case="dat"/}} nicht verbundenen {{fserver number="plural"/}}. Ist diese größer/gleich 1, erfolgt eine Warnung. Ist diese ferner größer/gleich 2, wird diese als kritisch im Nagios interpretiert:
111 <br>
112 {{code}}
113 define service{
114 use generic-service
115 host_name localhost
116 service_description MS:FS-connected-count
117 check_command check_jmx4perl!http://localhost/formcycle/monitoring/!de.xima.fc:type=MSMonitor,qualifier=formcycle!fs_disconnected_count!--warning 1 --critical 2
118 }
119 {{/code}}
120 {{/panel}}
121
122 {{panel title="Abfrage des Datenbank-Verbindungsstatus des {{mserver case='gen'/~}~}" fullwidth="true" initial="hidden" triggerable="true"}}
123 {{code}}
124 define service{
125 use generic-service
126 host_name localhost
127 service_description MS:DB-connected
128 check_command check_jmx4perl!http://localhost/formcycle/monitoring/!de.xima.fc:type=MSMonitor,qualifier=formcycle!db_connected!--string --critical 'false'
129 }
130 {{/code}}
131 {{/panel}}
132
133 {{panel title="Abfrage, ob {{fserver/~}~} localhost mit {{mserver case='dat'/~}~} verbunden ist" fullwidth="true" initial="hidden" triggerable="true"}}
134 {{code}}
135 define service{
136 use generic-service
137 host_name localhost
138 service_description MS:FS-localhost
139 check_command check_jmx4perl!http://localhost/formcycle/monitoring/!de.xima.fc:type=MSMonitor,qualifier=formcycle!fs_connected!--path=localhost --string --critical 'false'
140 }
141 {{/code}}
142 {{/panel}}
143
144 {{panel title="Abfrage an {{fserver/~}~}, ob dieser erfolgreich mit einem {{mserver/~}~} verbunden ist" fullwidth="true" initial="hidden" triggerable="true"}}
145 {{code}}
146 define service{
147 use generic-service
148 host_name localhost
149 service_description FS:connected
150 check_command check_jmx4perl!http://localhost/frontend-server/monitoring/!de.xima.fc:type=FSMonitor,qualifier=frontend-server!connected!--string --critical 'false'
151 }
152 {{/code}}
153 {{/panel}}
154
155 === Betrieb von Nagios auf anderem Server ===
156
157 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>>url:https://jolokia.org/reference/html/agents.html#agent-war-init-params||rel="__blank"]]).
158
159 Eine weitere Möglichkeit um die Anbindung von Nagios von einem anderen Server aus zu ermöglichen, ist der parallele Betrieb von Jolokia und {{formcycle/}} bzw. dem {{fserver case="dat"/}}. Hierfür stellt Jolokia bereits einen in einer eigenen Anwendung gepackten //JavaEE-Agent// zur Verfügung. ([[Dokumentation>>url:https://jolokia.org/reference/html/agents.html#agents-war||rel="__blank"]], [[Download>>url:https://jolokia.org/download.html||rel="__blank"]])
160
161 Dieser besitzt standardmäßig keine Limitierung von Leseoperationen 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>>url:https://jolokia.org/reference/html/security.html||rel="__blank"]].
162
163 Entsprechend des Betriebs einer parallelen Jolokia-Installation ändert sich beispielhaft die Überprüfung der Verbindung zum {{fserver case="dat"/}} //localhost //wie folgt:
164
165 {{code}}
166 define service{
167 use generic-service
168 host_name fc-test
169 service_description MS:FS-localhost
170 check_command check_jmx4perl!http://fc-test/jolokia/!de.xima.fc:type=MSMonitor,qualifier=formcycle!fs_connected!--path=localhost --string --critical 'false'
171 }
172 {{/code}}
Copyright 2000-2025