1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496
|
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>11.4. Die Icinga Web REST API</title>
<link rel="stylesheet" href="../stylesheets/icinga-docs.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<meta name="keywords" content="Supervision, Icinga, Nagios, Linux">
<link rel="home" href="index.html" title="Icinga Version 1.14 Dokumentation">
<link rel="up" href="ch11.html" title="Kapitel 11. Entwicklung">
<link rel="prev" href="icinga-api.html" title="11.3. Keine Icinga API mehr zu installieren">
<link rel="next" href="ch12.html" title="Kapitel 12. IDOUtils">
<script src="../js/jquery-min.js" type="text/javascript"></script><script src="../js/icinga-docs.js" type="text/javascript"></script>
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<CENTER><IMG src="../images/logofullsize.png" border="0" alt="Icinga" title="Icinga"></CENTER>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">11.4. Die Icinga Web REST API</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="icinga-api.html">Zurück</a> </td>
<th width="60%" align="center">Kapitel 11. Entwicklung</th>
<td width="20%" align="right"> <a accesskey="n" href="ch12.html">Weiter</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="section" title="11.4. Die Icinga Web REST API">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="icinga-web-api"></a>11.4. Die Icinga Web REST API</h2></div></div></div>
<div class="toc"><dl>
<dt><span class="section">11.4.1. <a href="icinga-web-api.html#why">Warum sollten Sie die API benutzen?</a></span></dt>
<dt><span class="section">11.4.2. <a href="icinga-web-api.html#features">Features der Icinga Web REST API</a></span></dt>
<dt><span class="section">11.4.3. <a href="icinga-web-api.html#difference">Was ist der Unterschied zwischen der Icinga API und der Icinga Web REST API?</a></span></dt>
<dt><span class="section">11.4.4. <a href="icinga-web-api.html#prerequisites">Voraussetzungen</a></span></dt>
<dt><span class="section">11.4.5. <a href="icinga-web-api.html#reference">Referenzen</a></span></dt>
<dt><span class="section">11.4.6. <a href="icinga-web-api.html#get">GET</a></span></dt>
<dt><span class="section">11.4.7. <a href="icinga-web-api.html#geturlstructure">Die Struktur der URL:</a></span></dt>
<dt><span class="section">11.4.8. <a href="icinga-web-api.html#getparamdetails">Die Parameter en Detail:</a></span></dt>
<dt><span class="section">11.4.9. <a href="icinga-web-api.html#getexample">Beispiele für GET</a></span></dt>
<dt><span class="section">11.4.10. <a href="icinga-web-api.html#post">POST</a></span></dt>
<dt><span class="section">11.4.11. <a href="icinga-web-api.html#postparamdetail">Die Parameter en Detail</a></span></dt>
<dt><span class="section">11.4.12. <a href="icinga-web-api.html#postexample">Beispiele für POST</a></span></dt>
</dl></div>
<p>In dieser Anleitung beschreiben wir Ihnen die Icinga Web REST API. Sie erlaubt Ihnen Ihre Überwachungsinformationen via GET oder
POST abzufragen (in Zukunft (>1.2) auch via PUT).</p>
<div class="section" title="11.4.1. Warum sollten Sie die API benutzen?">
<div class="titlepage"><div><div><h3 class="title">
<a name="why"></a>11.4.1. Warum sollten Sie die API benutzen?</h3></div></div></div>
<p>Den meisten Anwendern genügt der Einsatz von Icinga und Icinga Web. Sie können den Status Ihres Monitoring sehen, auf
aktuelle Probleme reagieren und Icinga Web um gewünschte Module und Cronks erweitern.</p>
<p>Wenn Sie allerdings eine zusätzliche Software einsetzen möchten, die Ihre Monitoring-Daten abfragen soll (zum Beispiel: <a class="link" href="http://www.icinga.org/2010/07/16/icinga-chromed-status-for-google-chromechromium/" target="_top">Icinga-Chromed-Status</a>), kann Ihnen
die Icinga Web API sehr dienlich sein.</p>
<p>Sie können natürlich die Ausgabe des Icinga Classic UI analysieren (parsen) (so verfahren zur Zeit viele Programme, wie zum Beispiel
nagstamon oder das Firefox Plugin Nagios Checker), aber das ist keine wirklich performante Lösung- und außerdem keine Freude für den
Entwickler :-).</p>
<p>Die Icinga Web REST API stellt Ihnen die Daten zur Verfügung, die Sie benötigen (und auch nur diese). Die Daten werden in einem
standardisierten, maschinenlesbaren Format wie JSON oder XML zur Verfügung gestellt.</p>
</div>
<div class="section" title="11.4.2. Features der Icinga Web REST API">
<div class="titlepage"><div><div><h3 class="title">
<a name="features"></a>11.4.2. Features der Icinga Web REST API</h3></div></div></div>
<p>Derzeit unterstützt (v1.2): </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<p>Verfügbarkeit von nahezu allen Überwachungsdaten via GET oder POST.</p>
</li>
<li class="listitem">
<p>Rückgabe der Daten als xml oder json.</p>
</li>
<li class="listitem">
<p>AND & OR- Suche über Filtergruppen mit unbegrenzten Verschachtelungsebenen (AND)).</p>
</li>
<li class="listitem">
<p>Sie wählen, welche Spalten zurückgegeben werden sollen, nicht die API (weniger Overhead).</p>
</li>
<li class="listitem">
<p>Unterstützung von "of limit, offset, order oder group by".</p>
</li>
<li class="listitem">
<p>Rückgabe eines zusätzlichen Gesamtwert-Feldes.</p>
</li>
<li class="listitem">
<p>Autorisierung über auth_key in Requests oder Cookies.</p>
</li>
<li class="listitem">
<p>Respektiert Icinga Web Prinzipien (z.B. die Begrenzung auf bestimmte Hostgruppen).</p>
</li>
</ul></div>
<p>Zukünftig unterstützt(> 1.2):</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
<p>Senden von Kommandos via PUT</p>
</li></ul></div>
</div>
<div class="section" title="11.4.3. Was ist der Unterschied zwischen der Icinga API und der Icinga Web REST API?">
<div class="titlepage"><div><div><h3 class="title">
<a name="difference"></a>11.4.3. Was ist der Unterschied zwischen der Icinga API und der Icinga Web REST API?</h3></div></div></div>
<p>Die Icinga API kann als ein internes Toolkit für den Zugriff auf die Datenbankinformationen angesehen werden. In der Tat wirkt die
REST-API im oberen Teil der API und bedient sich des HTTP-Protokolls. In Zukunft wird die Icinga API mit Icinga Web zusammengeführt
werden.</p>
</div>
<div class="section" title="11.4.4. Voraussetzungen">
<div class="titlepage"><div><div><h3 class="title">
<a name="prerequisites"></a>11.4.4. Voraussetzungen</h3></div></div></div>
<p>Um die API verwenden zu können, müssen Sie zunächst den Auth-Provider aktivieren icinga-web/app/modules/AppKit/config/auth.xml
.</p>
<p>Ändern von "auth_enabled" zu 'true': </p>
<pre class="programlisting">># vi icinga-web/app/modules/AppKit/config/auth.xml</pre>
<p>
</p>
<pre class="programlisting"><ae:parameter name="auth_key">
<ae:parameter name="auth_module">AppKit</ae:parameter>
<ae:parameter name="auth_provider">Auth.Provider.AuthKey</ae:parameter>
<ae:parameter name="auth_enable">true</ae:parameter>
<ae:parameter name="auth_authoritative">true</ae:parameter>
</ae:parameter></pre>
<div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="../images/note.png"></td>
<th align="left">Anmerkung</th>
</tr>
<tr><td align="left" valign="top">
<p>Wenn Sie ein *.xml-File editieren, müssen Sie anschließend den Cache leeren!</p>
</td></tr>
</table></div>
<pre class="programlisting">rm -f app/cache/config/*.php</pre>
<p>oder</p>
<pre class="programlisting">icinga-web/bin/clearcache.sh</pre>
<p>Nun brauchen Sie in Icinga Web einen Benutzer mit API-Zugriffsberechtigung, bitte anlegen in Ihrem Icinga Web : </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<p>Anlegen eine neuen Benutzers</p>
</li>
<li class="listitem">
<p>Auswählen von auth_key in dem Auth_via Feld</p>
</li>
<li class="listitem">
<p>Einfügen des zu nutzenden API-Schlüssels</p>
</li>
<li class="listitem">
<p>Unter principals, hinzufügen von appkit.api.access principal</p>
</li>
</ul></div>
<p>Das war es, nun können Sie starten.</p>
</div>
<div class="section" title="11.4.5. Referenzen">
<div class="titlepage"><div><div><h3 class="title">
<a name="reference"></a>11.4.5. Referenzen</h3></div></div></div>
<p>In den nächsten Sätzen erläutern wir, wie auf die API zugegriffen werden kann:</p>
</div>
<div class="section" title="11.4.6. GET">
<div class="titlepage"><div><div><h3 class="title">
<a name="get"></a>11.4.6. GET</h3></div></div></div>
<p>Vorteile:</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<p>Leicht zu nutzen, es ist eine URL!</p>
</li>
<li class="listitem">
<p>Sie können immer nachvollziehen, welche Parameter angefragt wurden.</p>
</li>
</ul></div>
<p>Nachteile:</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<p>Wenn Sie in einem Browser Ihre Anfrage absetzen, könnte Ihr API-Key in der Browser-History gespeichert werden.</p>
</li>
<li class="listitem">
<p>In einem Browser können Sie keine URLs mit unbegrenzter Größe ansprechen (2.083 Zeichen beim Internet Explorer).</p>
</li>
</ul></div>
</div>
<div class="section" title="11.4.7. Die Struktur der URL:">
<div class="titlepage"><div><div><h3 class="title">
<a name="geturlstructure"></a>11.4.7. Die Struktur der URL:</h3></div></div></div>
<p>Um die API anzusprechen, sollte die URL folgendermaßen aufgebaut sein (Fett markierte Werte sind erforderlich)
host.com/icinga-web/web/api/ <span class="bold"><strong>TARGET</strong></span> / <span class="bold"><strong>COLUMNS</strong></span> / FILTER / ORDER /
GROUPING / LIMIT / COUNTFIELD / <span class="bold"><strong>OUTPUT_TYPE</strong></span></p>
</div>
<div class="section" title="11.4.8. Die Parameter en Detail:">
<div class="titlepage"><div><div><h3 class="title">
<a name="getparamdetails"></a>11.4.8. Die Parameter en Detail:</h3></div></div></div>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<p>TARGET: Welches Feld wird angesprochen, es ist ein einfacher String wie host.</p>
</li>
<li class="listitem">
<p>COLUMNS: Liste der angefragten Spalten, die Syntax muss wie folgt aussehen: columns[COL1|COL2|COL3|...]</p>
</li>
<li class="listitem">
<p>FILTER: Definiert welche Filter im Request verwendet werden. Gültig sind AND oder OR Gruppen.</p>
<p>Der Filter sieht wie folgt aus:</p>
<pre class="programlisting">filters[AND/OR(COLUMN|OPERATOR|VALUE;COLUMN2|OPERATOR2|VALUE2;OR(...),AND]</pre>
<p>Beispiel: Select auf alle Services, deren Name "snmp" enthält, wenn sie sich im Status ok oder unknown befinden</p>
<p class="bold">Falsch: </p>
<pre class="programlisting">filters[SERVICE_NAME|like|*smtp*;OR(SERVICE_CURRENT_STATE|=|0;SERVICE_CURRENT_STATE|=|3)]</pre>
<p>Sie benötigen immer eine Schachtelungsebene am Beginn:</p>
<p class="bold">Korrekt:</p>
<pre class="programlisting">filters[AND ( SERVICE_NAME|like|*smtp*;OR ( SERVICE_CURRENT_STATE|=|0;SERVICE_CURRENT_STATE|=|3 ) )]
</pre>
</li>
<li class="listitem">
<p>ORDER: Definiert welches Feld für die Ordnung verwendet wird und ob eine aufsteigende oder absteigende Sortierung verwendet
wird. Beispiel: order[COLUMN|ASC or DESC]</p>
</li>
<li class="listitem">
<p>GROUPING: Definiert ein Gruppierungsfeld: group[COL]</p>
</li>
<li class="listitem">
<p>LIMIT: Definiert eine Start-Offset und / oder eine Begrenzung: limit[START;END ( if needed ) ]</p>
</li>
<li class="listitem">
<p>COUNTFIELD: Fügt ein INSGESAMT-Feld dem Ergebnis hinzu, welches hochgezählt wird (in den meisten Fällen, die id):
countColumn=COL</p>
</li>
<li class="listitem">
<p>OUTPUT: zur Zeit json order xml</p>
</li>
</ul></div>
</div>
<div class="section" title="11.4.9. Beispiele für GET">
<div class="titlepage"><div><div><h3 class="title">
<a name="getexample"></a>11.4.9. Beispiele für GET</h3></div></div></div>
<p>GET alle Dienste die kritisch oder warning sind und deren Host im Status ok ist. Absteigend sortiert nach Dienststatus und
Hochzählen der Services. Authentifikation via authkey (hier: APITEST123456). Für die bessere Lesbarkeit ist die Anfrage in mehrere
Zeilen aufgeteilt, XML:</p>
<pre class="programlisting">http://localhost/icinga-web/web/api/service/filter[AND(HOST_CURRENT_STATE|=|0;OR(SERVICE_CURRENT_STATE|=n|1;SERVICE_CURRENT_STATE|=|2))]/
columns[SERVICE_NAME|HOST_NAME|SERVICE_CURRENT_STATE|HOST_NAME|HOST_CURRENT_STATE|HOSTGROUP_NAME]/
order(SERVICE_CURRENT_STATE;DESC)/countColumn=SERVICE_ID/authkey=APITEST123456/xml</pre>
<p>So sieht die Rückgabe aus:</p>
<pre class="programlisting"><results>
<result>
<column name="SERVICE_ID">295</column>
<column name="SERVICE_OBJECT_ID">139</column>
<column name="SERVICE_IS_ACTIVE">1</column>
<column name="SERVICE_INSTANCE_ID">1</column>
<column name="SERVICE_NAME">MailQ</column>
<column name="SERVICE_DISPLAY_NAME">MailQ</column>
<column name="SERVICE_OUTPUT">Error occurred:error=1:0:0</column>
<column name="SERVICE_PERFDATA"></column>
</result>
<result>
<column name="SERVICE_ID">311</column>
<column name="SERVICE_OBJECT_ID">155</column>
<column name="SERVICE_IS_ACTIVE">1</column>
<column name="SERVICE_INSTANCE_ID">1</column>
<column name="SERVICE_NAME">POP3</column>
<column name="SERVICE_DISPLAY_NAME">POP3</column>
<column name="SERVICE_OUTPUT">Verbindungsaufbau abgelehnt</column>
<column name="SERVICE_PERFDATA"></column>
</result>
<total>2</total>
</results> </pre>
<p>Wenn Sie das Format von xml zu json ändern, bekommen Sie die gleichen Informationen (plus zusätzliche Informationen für ExtJS,
falls Sie sie nicht benötigen, können Sie diese ignorieren) im json Format:</p>
<pre class="programlisting">{"metaData":
{"paramNames":{"start":"limit_start","limit":"limit"},
"totalProperty":"total",
"root":"result",
"fields":null},
"result": [{
"SERVICE_ID":"295",
"SERVICE_OBJECT_ID":"139",
"SERVICE_IS_ACTIVE":"1",
"SERVICE_INSTANCE_ID":"1",
"SERVICE_NAME":"MailQ",
"SERVICE_DISPLAY_NAME":"MailQ",
"SERVICE_OUTPUT":"Error occurred:error=1:0:0",
"SERVICE_PERFDATA":""
},{
"SERVICE_ID":"311",
"SERVICE_OBJECT_ID":"155",
"SERVICE_IS_ACTIVE":"1",
"SERVICE_INSTANCE_ID":"1",
"SERVICE_NAME":"POP3",
"SERVICE_DISPLAY_NAME":"POP3",
"SERVICE_OUTPUT":"Verbindungsaufbau abgelehnt",
"SERVICE_PERFDATA":""
}],
"success":"true",
"total":"2"
}</pre>
<div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="../images/note.png"></td>
<th align="left">Anmerkung</th>
</tr>
<tr><td align="left" valign="top">
<p>Wenn Sie den countField-Parameter nicht verwenden, bekommen Sie eine "flat" json-Datei mit diesem Ergebnis.</p>
</td></tr>
</table></div>
</div>
<div class="section" title="11.4.10. POST">
<div class="titlepage"><div><div><h3 class="title">
<a name="post"></a>11.4.10. POST</h3></div></div></div>
<p>Vorteile:</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<p>Unbegrenzte Parametergröße für große Anfragen.</p>
</li>
<li class="listitem">
<p>Ihre verwendeten Parameter erscheinen nicht in der Browser-Historie, lediglich die Basis-URL.</p>
</li>
<li class="listitem">
<p>Leichter in Applikationen zu integrieren</p>
</li>
</ul></div>
<p>Nachteile:</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
<p>Der POST wird über den Header gesendet, deshalb können Sie den Request nicht einfach über das Addressfeld des Browsers
absetzen.</p>
</li></ul></div>
</div>
<div class="section" title="11.4.11. Die Parameter en Detail">
<div class="titlepage"><div><div><h3 class="title">
<a name="postparamdetail"></a>11.4.11. Die Parameter en Detail</h3></div></div></div>
<p>Der Link entspricht dem GET-Basislink, allerdings mit der Angabe des Ausgabeformates: Zum Beispiel:
host.com/icinga-web/web/api/json. Folgende Parameter werden unterstützt:</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<p>'target': Welches Feld wird angesprochen, es ist ein einfacher String wie "host"</p>
</li>
<li class="listitem">
<p>'columns[]': Ein Array von Spalten</p>
<p>Example:</p>
<p>columns [0] = SERVICE_NAME</p>
<p>columns [1] = SERVICE_ID</p>
</li>
<li class="listitem">
<p>'groups[]' : nach diesem Feld gruppieren</p>
</li>
<li class="listitem">
<p>'filters_json' : Ein json beschreibender "how to" Filter</p>
<p>Example:</p>
<pre class="programlisting">[{
"type": "AND",
"field": [{
"type": 'atom',
"field": ['SERVICE_NAME'],
"method": ['like'],
"value": ['*pop*']
},{
"type": 'OR',
"field": [{
"type": 'atom',
"field": ['SERVICE_CURRENT_STATE'],
"method": ['>'],
"value": [0]
},{
"type": 'atom',
"field": ['SERVICE_IS_FLAPPING'],
"method": ['='],
"value": [1]
}]
}]
}]
</pre>
</li>
<li class="listitem">
<p>'order_col' : Spalte nach der sortiert wird</p>
</li>
<li class="listitem">
<p>'order_dir' : Sortierungsreihenfolge (asc oder desc)</p>
</li>
<li class="listitem">
<p>'limit_start' : Start-Offset des Records</p>
</li>
<li class="listitem">
<p>'limit' : Begrenzt das Ergebnis auf x Antworten</p>
</li>
<li class="listitem">
<p>'countColumn' : Fügt ein INSGESAMT-Feld dem Ergebnis hinzu</p>
</li>
</ul></div>
</div>
<div class="section" title="11.4.12. Beispiele für POST">
<div class="titlepage"><div><div><h3 class="title">
<a name="postexample"></a>11.4.12. Beispiele für POST</h3></div></div></div>
<p>Nehmen wir das Beispiel aus "Beispiel für GET" und benutzen nun eine POST-Anfrage. Wir werden curl verwenden, so dass das Beispiel
auf der Konsole wiederholt werden kann:</p>
<pre class="programlisting">curl
-d target=service
-d 'filters_json={"type":"AND","field":[{"type":"atom","field":["HOST_CURRENT_STATE"],"method":["="],"value":[0]},{"type":"OR","field":[{"type":"atom","field":["SERVICE_CURRENT_STATE"],"method":["="],"value":[1]},{"type":"atom","field":["SERVICE_CURRENT_STATE"],"method":["="],"value" : [2] }]}]}'
-d columns[0]=SERVICE_NAME
-d columns[1]=HOST_NAME
-d columns[2]=SERVICE_CURRENT_STATE
-d columns[3]=HOST_NAME
-d columns[4]=HOST_CURRENT_STATE
-d columns[5]=HOSTGROUP_NAME
-d 'order=SERVICE_CURRENT_STATE;DESC'
-d countColumn=SERVICE_ID
-d 'authkey=API123456'
http://localhost/icinga-web/web/api/xml </pre>
<p>Dies gibt uns das gleiche Ergebnis zurück, wie zuvor in der GET-Anfrage.</p>
<a class="indexterm" name="idm139734663185376"></a>
</div>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="icinga-api.html">Zurück</a> </td>
<td width="20%" align="center"><a accesskey="u" href="ch11.html">Nach oben</a></td>
<td width="40%" align="right"> <a accesskey="n" href="ch12.html">Weiter</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">11.3. Keine Icinga API mehr zu installieren </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td>
<td width="40%" align="right" valign="top"> Kapitel 12. IDOUtils</td>
</tr>
</table>
</div>
<P class="copyright">© 1999-2009 Ethan Galstad, 2009-2017 Icinga Development Team, https://www.icinga.com</P>
</body>
</html>
|