Wiki-Quellcode von Monitoring


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 dataTypeAlpha="0" preSort="0-asc" caption="Übersicht über die Eigenschaften des MSMonitor (Master-Server)"}}
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 |connect_frontendserver_by_name|Triggert eine Verbindung zum Frontend-Servers per Name an.|__Schlüssel__: <Frontend-Server-Name>, true/false um Reconnect immer anzustoßen (egal ob Verbindung besteht)
30 __Rückgabewert__: true/false
31 |connect_frontendserver_by_id|Triggert eine Verbindung zum Frontend-Servers per ID an.|__Schlüssel__: <Frontend-Server-ID>, true/false um Reconnect immer anzustoßen (egal ob Verbindung besteht)
32 __Rückgabewert__: true/false
33 {{/table}}
34
35 {{table dataTypeAlpha="0" preSort="0-asc" fullwidth="true" caption="Übersicht über die Eigenschaften des FSMonitor (frontend-Server)"}}
36 |=Attribut|=Bedeutung|=Mögliche Werte
37 |running|Gibt an, ob der {{fserver/}} erfolgreich gestartet wurde.|true,false
38 |connected|Gibt an, ob der {{fserver/}} mit einem {{mserver/}} verbunden ist.|true,false
39 |status|Gibt den konkreten Verbindungsstatus des {{fserver case="gen"/}} an.|CONNECTED,NOT_CONNECTED,ERROR,
40 RECONNECTING,DISCONNECTING,CONNECTING,
41 AUTHENTICATING, WAIT_FOR_CONNECTION
42 |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.
43 |restart|Triggert einen Neustart des Frontend-Servers an.|Keine
44 {{/table}}
45
46 == JSON-REST-Schnittstelle ==
47
48 Die JSON-Schnittstelle ist seit Version 6.0.0 zu Gunsten einer separaten Jolokia-Installation entfernt worden. Die für das Monitoring verwendeten Beans sind nachwievor verfügbar. Die JSON-Schnittstelle des Monitorings erlaubte nur lesende Zugriff und war nur über den Anwendungsserver aufrufbar (localhost/127.0.0.1). Falls dies gewünscht ist müsste der Zugriff innerhalb der Jolokia Anwendung konfiguriert werden, weiter Infomationen finden Sie [[hier>>https://jolokia.org/reference/html/security.html#d0e3128||rel="noopener noreferrer" target="_blank"]].
49
50 Ein möglicher Aufruf, nach erfolgter Installation von Jolokia, sieht hierbei zum Beispiel wie folgt aus:
51
52 {{info}}
53 [[http:~~/~~/localhost/jolokia/read/de.xima.fc:type=MSMonitor,qualifier=formcycle>>http://localhost/formcycle/monitoring/read/de.xima.fc:type=MSMonitor,qualifier=formcycle]]
54 {{/info}}
55
56 JSON-Antwort:
57
58 {{code language="JSON"}}
59 {
60 "request": {
61 "mbean": "de.xima.fc:qualifier=formcycle,type=MSMonitor",
62 "type": "read"
63 },
64 "value": {
65 "running": true,
66 "failed_login_count": 0,
67 "fs_active": {
68 "localhost": true
69 },
70 "db_connected": true,
71 "fs_connected_count": 1,
72 "fs_connected": {
73 "localhost": true
74 },
75 "fs_disconnected_count": 0,
76 "fs_status": {
77 "localhost": "CONNECTED"
78 }
79 },
80 "timestamp": 1579186291,
81 "status": 200
82 }
83 {{/code}}
84
85 Weitere Informationen zur Abindung des Framework [[Jolokia>>url:https://jolokia.org/||rel="__blank"]] und eine genauere Dokumentation finden sie [[hier>>url:https://jolokia.org/reference/html/||rel="__blank"]].
86
87 == Nagios-Anbindung ==
88
89 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.
90
91 === Beispiele ===
92
93 {{warning}}
94 Folgende Beispiele funktionieren lediglich wenn Nagios auf dem selben Server wie die Anwendungen betrieben wird!
95 {{/warning}}
96
97 {{panel title="Command" fullwidth="true" initial="hidden" triggerable="true"}}
98 {{code language="none"}}
99 define command{
100 command_name check_jmx4perl
101 command_line check_jmx4perl --url $ARG1$ --mbean $ARG2$ --attribute $ARG3$ $ARG4$
102 }
103 {{/code}}
104 {{/panel}}
105
106 {{panel title="Service-Definitionen" fullwidth="true" initial="hidden" triggerable="true"}}
107 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:<br>
108 <br>
109 {{code language="none"}}
110 define service{
111 use generic-service
112 host_name localhost
113 service_description MS:FS-connected-count
114 check_command check_jmx4perl!http://localhost/formcycle/monitoring/!de.xima.fc:type=MSMonitor,qualifier=formcycle!fs_disconnected_count!--warning 1 --critical 2
115 }
116 {{/code}}
117 {{/panel}}
118
119 {{panel title="Abfrage des Datenbank-Verbindungsstatus des {{mserver case='gen'/~}~}" fullwidth="true" initial="hidden" triggerable="true"}}
120 {{code language="none"}}
121 define service{
122 use generic-service
123 host_name localhost
124 service_description MS:DB-connected
125 check_command check_jmx4perl!http://localhost/formcycle/monitoring/!de.xima.fc:type=MSMonitor,qualifier=formcycle!db_connected!--string --critical 'false'
126 }
127 {{/code}}
128 {{/panel}}
129
130 {{panel title="Abfrage, ob {{fserver/~}~} localhost mit {{mserver case='dat'/~}~} verbunden ist" fullwidth="true" initial="hidden" triggerable="true"}}
131 {{code language="none"}}
132 define service{
133 use generic-service
134 host_name localhost
135 service_description MS:FS-localhost
136 check_command check_jmx4perl!http://localhost/formcycle/monitoring/!de.xima.fc:type=MSMonitor,qualifier=formcycle!fs_connected!--path=localhost --string --critical 'false'
137 }
138 {{/code}}
139 {{/panel}}
140
141 {{panel title="Abfrage an {{fserver/~}~}, ob dieser erfolgreich mit einem {{mserver/~}~} verbunden ist" fullwidth="true" initial="hidden" triggerable="true"}}
142 {{code language="none"}}
143 define service{
144 use generic-service
145 host_name localhost
146 service_description FS:connected
147 check_command check_jmx4perl!http://localhost/frontend-server/monitoring/!de.xima.fc:type=FSMonitor,qualifier=frontend-server!connected!--string --critical 'false'
148 }
149 {{/code}}
150 {{/panel}}
151
152 === Betrieb von Nagios auf anderem Server ===
153
154 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"]]).
155
156 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"]])
157
158 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"]].
159
160 Entsprechend des Betriebs einer parallelen Jolokia-Installation ändert sich beispielhaft die Überprüfung der Verbindung zum {{fserver case="dat"/}} //localhost //wie folgt:
161
162 {{code language="none"}}
163 define service{
164 use generic-service
165 host_name fc-test
166 service_description MS:FS-localhost
167 check_command check_jmx4perl!http://fc-test/jolokia/!de.xima.fc:type=MSMonitor,qualifier=formcycle!fs_connected!--path=localhost --string --critical 'false'
168 }
169 {{/code}}
170
171 == Frontend-Server-Monitoring-URL ==
172
173 {{version major="7" minor="1"/}} Die Funktionalität steht ab {{formcycle/}} 7.1 zur Verfügung.
174
175 Es steht auch eine URL zur Verfügung, über die ein Monitoring des Frontend-Servers möglich ist. Diese ist nur auf dem Master-Server verfügbar und lautet:
176
177 {{code language="text"}}
178 https://<domain>/<context>/monitor/fs/connection
179 {{/code}}
180
181 Aus Sicherheitsgründen ist diese URL standardmäßig deaktiviert. Zum Aktivieren müssen die [[Anwendungseinstellungen>>doc:Formcycle.SystemSettings.ConfigFiles.ApplicationProperties]] //monitoring.enabled// und //monitoring.allowed.hosts// entsprechend konfiguriert werden.
182
183 Läuft der {{formcycle/}}-Server als etwa unter der Domain //demo.firma.de// im Kontext //formcycle//, dann lautet die URL //https://demo.firma.de/formcycle/monitor/fs/connection//.//
184
185 Als Parameter muss immer entweder der Name des System-Frontend-Servers über den Parameter //name// oder die interne Datenbank-ID über den Parameter //id// angegeben werden:
186
187 {{code language="text"}}
188 https://<domain>/<context>/monitor/fs/connection?name=MeinFrontendServer
189 https://<domain>/<context>/monitor/fs/connection?id=5963
190 {{/code}}
191
192 Folgende Möglichkeiten zum Monitoring stehen zur Verfügung:
193
194 * {{code language="plain"}}https://<domain>/<context>/monitor/fs/connection?name=<Name>{{/code}}
195
196 Prüft, ob eine Verbindung mit dem Frontend-Server besteht. Liefert den HTTP-Statuscode //200// zurück, falls eine Verbindung besteht, ansonsten //500//.
197
198 * {{code language="plain"}}https://<domain>/<context>/monitor/fs/connection?name=<Name>&action=connect{{/code}}
199
200 Versucht, eine Verbindung zum Frontend-Server herzustellen. Besteht bereits eine Verbindung, wird nichts getan. Liefert den HTTP-Statuscode //200// zurück, wenn bereits eine Verbindung besteht oder die Verbindung erfolgreich hergestellt werden konnte. Falls der Verbindungsaufbau fehlgeschlagen ist, wird der HTTP-Statuscode //500// zurückgeliefert.
201
202 * {{code language="plain"}}https://<domain>/<context>/monitor/fs/connection?name=<Name>&action=connect&force=true{{/code}}
203
204 Versucht, eine Verbindung zum Frontend-Server herzustellen. Besteht bereits eine Verbindung, wird die Verbindung getrennt und versucht, erneut eine Verbindung aufzubauen. Liefert den HTTP-Statuscode //200// zurück, wenn Verbindung erfolgreich hergestellt werden konnte. Falls der Verbindungsaufbau fehlgeschlagen ist, wird der HTTP-Statuscode //500// zurückgeliefert.