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
|
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Host- und Service-Abhängigkeiten</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<meta name="keywords" content="Supervision, Icinga, Icinga, Linux">
<link rel="home" href="index.html" title="Icinga Version 1.0.2 Dokumentation">
<link rel="up" href="ch06.html" title="Kapitel 6. Fortgeschrittene Themen">
<link rel="prev" href="clusters.html" title="Service- und Host-Gruppen überwachen">
<link rel="next" href="stalking.html" title="Status Stalking">
</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">Host- und Service-Abhängigkeiten</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="clusters.html">Zurück</a> </td>
<th width="60%" align="center">Kapitel 6. Fortgeschrittene Themen</th>
<td width="20%" align="right"> <a accesskey="n" href="stalking.html">Weiter</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="section" title="Host- und Service-Abhängigkeiten">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="dependencies"></a>Host- und Service-Abhängigkeiten</h2></div></div></div>
<p><span class="bold"><strong>Einführung</strong></span></p>
<p>Service- und Hostabhängigkeiten sind ein fortgeschrittenes Feature von Icinga, dass Ihnen die Kontrolle über Hosts
und Services erlaubt basierend auf dem Status von einem oder mehreren anderen Hosts oder Services. Wir werden erklären, wie
Abhängigkeiten arbeiten, zusammen mit den Unterschieden zwischen Host- und Service-Abhängigkeiten.</p>
<p><span class="bold"><strong>Überblick Service-Abhängigkeiten</strong></span></p>
<p>Es gibt ein paar Dinge, die Sie über Service-Abhängigkeiten wissen sollten:</p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
<p>ein Service kann von einem oder mehreren Services abhängig sein</p>
</li>
<li class="listitem">
<p>ein Service kann von Services abhängig sein, die nicht mit dem gleichen Host verbunden sind</p>
</li>
<li class="listitem">
<p>Service-Abhängigkeiten werden nicht vererbt (solange es nicht explizit konfiguriert wurde)</p>
</li>
<li class="listitem">
<p>Service-Abhängigkeiten können benutzt werden, um Service-Prüfungen auszuführen und Service-Benachrichtigungen können
unter verschiedenen Umständen unterdrückt werden (OK, WARNING, UNKNOWN und/oder CRITICAL-Zustände)</p>
</li>
<li class="listitem">
<p>Service-Abhängigkeiten sind ggf. nur während bestimmter <a class="link" href="timeperiods.html" title="Zeitfenster">Zeitfenster</a> gültig</p>
</li>
</ol></div>
<p><span class="bold"><strong>Service-Abhängigkeiten definieren</strong></span></p>
<p>Zuerst die Grundlagen. Sie erstellen Service-Abhängigkeiten durch Hinzufügen von <a class="link" href="objectdefinitions.html#objectdefinitions-servicedependency">Service-Abhängigkeitsdefinitionen</a> in der/n <a class="link" href="configobject.html" title="Überblick Objektkonfiguration">Objekt-Konfigurationsdatei(en)</a>. In jeder Definition geben Sie den <span class="emphasis"><em>abhängigen</em></span>
Service an, den Service, von dem sie <span class="emphasis"><em>abhängen</em></span> und die Kriterien (falls vorhanden), die die Ausführung und
Benachrichtungsabhängigkeiten fehlschlagen lassen (diese werden später beschrieben).</p>
<p>Sie können mehrere Abhängigkeiten für einen bestimmten Service erstellen, aber Sie müssen eine eigene
Service-Abhängigkeitsdefinition anlegen für jede Abhängigkeit, die Sie erstellen.</p>
<p><span class="bold"><strong>Beispiel Service-Abhängigkeiten</strong></span></p>
<p>Das folgende Bild zeigt ein beispielhaftes Logik-Layout von Service-Benachrichtigungen und Ausführungsabhängigkeiten.
Verschiedene Services sind abhängig von anderen Services bzgl. Benachrichtigungen und Prüfausführung.</p>
<div class="mediaobject"><img src="../images/service-dependencies.png"></div>
<p>In diesem Beispiel würde die Abhängigkeitsdefinition für <span class="emphasis"><em>Service F</em></span> auf <span class="emphasis"><em>Host C</em></span>
wie folgt aussehen:</p>
<pre class="screen"> define servicedependency{
host_name Host B
service_description Service D
dependent_host_name Host C
dependent_service_description Service F
execution_failure_criteria o
notification_failure_criteria w,u
}
define servicedependency{
host_name Host B
service_description Service E
dependent_host_name Host C
dependent_service_description Service F
execution_failure_criteria n
notification_failure_criteria w,u,c
}
define servicedependency{
host_name Host B
service_description Service C
dependent_host_name Host C
dependent_service_description Service F
execution_failure_criteria w
notification_failure_criteria c
}</pre>
<p>Die anderen im obigen Bild gezeigten Abhängigkeitsdefinitionen würden wie folgt definiert:</p>
<pre class="screen"> define servicedependency{
host_name Host A
service_description Service A
dependent_host_name Host B
dependent_service_description Service D
execution_failure_criteria u
notification_failure_criteria n
}
define servicedependency{
host_name Host A
service_description Service B
dependent_host_name Host B
dependent_service_description Service E
execution_failure_criteria w,u
notification_failure_criteria c
}
define servicedependency{
host_name Host B
service_description Service C
dependent_host_name Host B
dependent_service_description Service E
execution_failure_criteria n
notification_failure_criteria w,u,c
}</pre>
<p><span class="bold"><strong>Wie Service-Abhängigkeiten getestet werden</strong></span></p>
<p>Bevor Icinga eine Service-Prüfung ausführt oder Benachrichtigungen für einen Service versendet, wird es prüfen, ob
der Service irgendwelche Abhängigkeiten hat. Wenn es keine Abhängigkeiten gibt, wird die Prüfung ausgeführt oder die
Benachrichtigung versandt, wie es sein sollte. Falls der Service ein oder mehrere Abhängigkeiten <span class="emphasis"><em>hat</em></span>, wird
Icinga jeden Abhängigkeitseintrag wie folgt prüfen:</p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
<p>Icinga erhält den aktuellen Status<sup> <a class="link" href="dependencies.html#dependencies-hard_dependencies">*</a>
</sup> des Services, von dem der Eintrag <span class="emphasis"><em>abhängig</em></span> ist.</p>
</li>
<li class="listitem">
<p>Icinga vergleicht den Status des Services, von dem der Eintrag <span class="emphasis"><em>abhängig</em></span> ist, gegen die
Ausführungs- oder Benachrichtigungsfehleroptionen in der Abhängigkeitsdefinition (je nachdem, welche zu dieser Zeit relevant
ist).</p>
</li>
<li class="listitem">
<p>wenn der aktuelle Status des Services, von dem der Eintrag <span class="emphasis"><em>abhängig</em></span> ist, mit einer der
Fehleroptionen übereinstimmt, dann wird die Abhängigkeit als fehlerhaft angesehen und Icinga verlässt die
Abhängigkeits-Prüfschleife.</p>
</li>
<li class="listitem">
<p>wenn der aktuelle Status des Services, von dem der Eintrag <span class="emphasis"><em>abhängig</em></span> ist, nicht mit einer der
Fehleroptionen übereinstimmt, dann wird die Abhängigkeit als korrekt durchlaufen angesehen und Icinga wird fortfahren
und den nächsten Abhängigkeitseintrag prüfen.</p>
</li>
</ol></div>
<p>Dieser Ablauf wird ausgeführt, bis entweder alle Abhängigkeiten für diesen Service geprüft wurden oder eine
Abhängigkeitsprüfung fehlschlägt.</p>
<p><a name="dependencies-hard_dependencies"></a><span class="inlinemediaobject"><img src="../images/note.gif"></span> Anmerkung: <sup>*</sup>Bitte beachten Sie, dass Icinga per Default den aktuellsten
<a class="link" href="statetypes.html" title="Statustypen">Hard-Status</a> des/r Services benutzt, von dem der Eintrag abhängig ist, wenn es die
Abhängigkeitsprüfungen durchführt. Wenn Icinga den aktuellsten Status des/r Services benutzen soll (egal, ob es sich um
einen Hard- oder Soft-Zustand handelt), dann aktivieren Sie die <a class="link" href="configmain.html#configmain-soft_state_dependencies">soft_state_dependencies</a>-Option.</p>
<p><span class="bold"><strong>Ausführungsabhängigkeiten</strong></span></p>
<p>Ausführungsabhängigkeiten werden benutzt, um einzuschränken, wann <a class="link" href="activechecks.html" title="Aktive Prüfungen (Active Checks)">aktive Prüfungen</a>
eines Service ausgeführt werden können. <a class="link" href="passivechecks.html" title="Passive Prüfungen (Passive Checks)">Passive Prüfungen</a> werden durch
Ausführungsabhängigkeiten nicht eingeschränkt.</p>
<p>Wenn <span class="emphasis"><em>alle</em></span> der Ausführungsabhängigkeitstests für den Service <span class="emphasis"><em>erfolgreich</em></span>
durchlaufen wurden, wird Icinga die Prüfung für den Service durchführen, wie es das normal tun würde. Wenn auch nur einer
der Ausführungsabhängigkeiten für einen Service fehlschlägt, wird Icinga vorübergehend die Ausführung von Prüfungen für
diesen (abhängigen) Service verhindern. Irgendwann in der Zukunft können die Ausführungsabhängigkeitstests für den Service
erfolgreich durchlaufen werden. Wenn dies geschieht, wird Icinga mit der Prüfung des Service beginnen, wie es das normal
tun würde. Mehr Informationen über die Logik der Prüfungsplanung finden Sie <a class="link" href="checkscheduling.html" title="Service- und Host-Prüfungsplanung">hier</a>.</p>
<p>Im obigen Beispiel wären die Tests der Ausführungsabhängigkeiten für <span class="bold"><strong>Service E</strong></span>
fehlgeschlagen, wenn <span class="bold"><strong>Service B</strong></span> in einem WARNING- oder UNKNOWN-Zustand ist. Falls dies der Fall
ist, würde die Service-Prüfung nicht ausgeführt und die Prüfung würde für eine (mögliche) Ausführung zu einem späteren Zeitpunkt
geplant.</p>
<p><span class="bold"><strong>Benachrichtigungsabhängigkeiten</strong></span></p>
<p>Wenn <span class="emphasis"><em>alle</em></span> der Benachrichtigungsabhängigkeitstests für den Service <span class="emphasis"><em>erfolgreich</em></span>
durchlaufen wurden, wird Icinga Benachrichtigungen für den Service versenden, wie es das normal tun würde. Wenn auch nur
einer der Benachrichtigungsabhängigkeiten für einen Service fehlschlägt, wird Icinga vorübergehend die Benachrichtigungen
für diesen (abhängigen) Service unterdrücken. Irgendwann in der Zukunft können die Benachrichtigungsabhängigkeitstests für den
Service erfolgreich durchlaufen werden. Wenn dies geschieht, wird Icinga mit dem Versand von Benachrichtigungen für
diesen Service beginnen, wie es das normal tun würde. Mehr Informationen über die Benachrichtigungslogik finden Sie <a class="link" href="notifications.html" title="Benachrichtigungen">hier</a>.</p>
<p>Im obigen Beispiel wären die Tests der Benachrichtigungsabhängigkeiten für <span class="bold"><strong>Service F</strong></span>
fehlgeschlagen, wenn <span class="bold"><strong>Service C</strong></span> in einem CRITICAL-Zustand <span class="emphasis"><em>und/oder</em></span><span class="bold"><strong>Service D</strong></span> in einem WARNING- oder UNKNOWN-Zustand <span class="emphasis"><em>und/oder</em></span><span class="bold"><strong>Service E</strong></span> in einem WARNING-, UNKNOWN- oder CRITICAL-Zustand ist. Falls dies der Fall ist, würden keine
Benachrichtigungen versandt werden.</p>
<p><span class="bold"><strong>Abhängigkeitsvererbung</strong></span></p>
<p>Wie bereits erwähnt werden Service-Abhängigkeiten <span class="emphasis"><em>nicht</em></span> per Default vererbt. Im obigen Beispiel sehen
Sie, dass Service F von Service E abhängig ist. Trotzdem erbt er nicht automatisch die Abhängigkeiten von Service E zu Service B
und Service C. Um Service F von Service C abhängig zu machen, müssen wir eine weitere Service-Abhängigkeitsdefinition
hinzufügen. Es gibt keine Abhängigkeitsdefinition für Service B, also ist Service F <span class="emphasis"><em>nicht</em></span> abhängig von
Service B.</p>
<p>Wenn Sie Service-Abhängigkeiten vererbbar machen <span class="emphasis"><em>wollen</em></span>, müssen Sie die
<span class="emphasis"><em>inherits_parent</em></span>-Direktive in der <a class="link" href="objectdefinitions.html#objectdefinitions-servicedependency">Service-Abhängigkeits</a>-Definition benutzen. Wenn diese Direktive aktiviert
ist, bedeutet das, dass der Abhängige die Abhängigkeiten des Service erbt, von dem er abhängt (auch als Master-Service
bezeichnet). Mit anderen Worten, wenn der Master-Service von anderen Services abhängt und eine von diesen Abhängigkeiten
fehlschlägt, wird auch dieser Service fehlschlagen.</p>
<p>Stellen Sie sich für das obige Beispiel vor, Sie möchten eine neue Abhängigkeit für Service F hinzufügen, um ihn von
Service A abhängig zu machen. Sie können eine neue Abhängigkeitsdefinition erzeugen, die Service F als den
<span class="emphasis"><em>abhängigen</em></span> Service und Service A als den <span class="emphasis"><em>Master</em></span>-Service angibt (d.h. der Service, auf
den F <span class="emphasis"><em>angewiesen</em></span> ist). Sie können alternativ die Abhängigkeitsdefinition der Services D und F verändern,
die dann wie folgt aussehen:</p>
<pre class="screen"> define servicedependency{
host_name Host B
service_description Service D
dependent_host_name Host C
dependent_service_description Service F
execution_failure_criteria o
notification_failure_criteria n
inherits_parent 1
}</pre>
<p>Weil die <span class="emphasis"><em>inherits_parent</em></span>-Direktive aktiviert ist, werden die Abhängigkeiten zwischen den Services A
und D getestet, wenn die Abhängigkeiten zwischen den Services F und D getestet werden.</p>
<p>Abhängigkeiten können mehrere Vererbungsebenen haben. Wenn bei der Abhängigkeitsdefinition zwischen A und D die
<span class="emphasis"><em>inherits_parent</em></span>-Direktive aktiviert ist und Service A von einem anderen Service abhängig ist (sagen wir
Service G), dann wäre Service F von den Services D, A und G abhängig (jeder mit möglicherweise unterschiedlichen
Kriterien).</p>
<p><span class="bold"><strong>Host-Abhängigkeiten</strong></span></p>
<p>Wie Sie vielleicht erwarten, arbeiten Host-Abhängigkeiten in einer ähnlichen Weise wie Service-Abhängigkeiten. Der
Unterschied ist, dass sie für Hosts gelten und nicht für Services.</p>
<p><span class="inlinemediaobject"><img src="../images/tip.gif"></span> Hinweis: Verwechseln Sie Host-Abhängigkeiten nicht mit Eltern/Kind-Beziehungen. Sie sollten in den
meisten Fällen Eltern/Kind-Beziehungen (mit Hilfe der <span class="emphasis"><em>parents</em></span>-Direktive in den <a class="link" href="objectdefinitions.html#objectdefinitions-host">Host</a>-Definitionen) benutzen statt Host-Abhängigkeiten. Eine Beschreibung, wie
Eltern/Kind-Beziehungen arbeiten, finden Sie in der Dokumentation zur <a class="link" href="networkreachability.html" title="Ermitteln des Zustands und der Erreichbarkeit von Netzwerk-Hosts">Netzwerkerreichbarkeit</a>.</p>
<p>Hier die Grundlagen zu Host-Abhängigkeiten:</p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
<p>ein Host kann von einem oder mehreren Hosts abhängig sein</p>
</li>
<li class="listitem">
<p>Host-Abhängigkeiten werden nicht vererbt (solange es nicht explizit konfiguriert wurde)</p>
</li>
<li class="listitem">
<p>Host-Abhängigkeiten können genutzt werden, um Host-Prüfungen auszuführen und Host-Benachrichtigungen unter bestimmten
Umständen zu unterdrücken (UP, DOWN- und/oder UNREACHABLE-Zustände)</p>
</li>
<li class="listitem">
<p>Host-Abhängigkeiten sind ggf. nur während bestimmter <a class="link" href="timeperiods.html" title="Zeitfenster">Zeitfenster</a> gültig</p>
</li>
</ol></div>
<p><span class="bold"><strong>Beispiel Host-Abhängigkeiten</strong></span></p>
<p>Das folgende Bild zeigt ein Beispiel für das logische Layout von Benachrichtigungsabhängigkeiten. Verschiedene Hosts sind
bzgl. Benachrichtigungen abhängig von anderen Hosts.</p>
<div class="mediaobject"><img src="../images/host-dependencies.png"></div>
<p>Im obigen Beispiel würden die Abhängigkeitsdefinitionen für <span class="emphasis"><em>Host C</em></span> wie folgt aussehen:</p>
<pre class="screen"> define hostdependency{
host_name Host A
dependent_host_name Host C
notification_failure_criteria d
}
define hostdependency{
host_name Host B
dependent_host_name Host C
notification_failure_criteria d,u
}</pre>
<p>Wie bei Service-Abhängigkeiten werden Host-Abhängigkeiten nicht vererbt. Im Beispielbild sehen Sie, dass Host C nicht die
Host-Abhängigkeiten von Host B erbt. Um Host C von Host A abhängig zu machen, muss eine neue Host-Abhängigkeitsdefinition
erstellt werden.</p>
<p>Host-Benachrichtigungsabhängigkeiten arbeiten in einer ähnlichen Weise wie Service-Benachrichtigungsabhängigkeiten. Wenn
<span class="emphasis"><em>alle</em></span> der Benachrichtigungsabhängigkeitstests für den Host <span class="emphasis"><em>erfolgreich</em></span> durchlaufen
wurden, wird Icinga Benachrichtigungen für den Host versenden, wie es das normal tun würde. Wenn auch nur einer der
Benachrichtigungsabhängigkeiten für einen Host fehlschlägt, wird Icinga vorübergehend die Benachrichtigungen für diesen
(abhängigen) Host unterdrücken. Irgendwann in der Zukunft können die Benachrichtigungsabhängigkeitstests für den Host
erfolgreich durchlaufen werden. Wenn dies geschieht, wird Icinga mit dem Versand von Benachrichtigungen für diesen Host
beginnen, wie es das normal tun würde. Mehr Informationen über die Benachrichtigungslogik finden Sie <a class="link" href="notifications.html" title="Benachrichtigungen">hier</a>.</p>
<a class="indexterm" name="id5600539"></a>
<a class="indexterm" name="id5600533"></a>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="clusters.html">Zurück</a> </td>
<td width="20%" align="center"><a accesskey="u" href="ch06.html">Nach oben</a></td>
<td width="40%" align="right"> <a accesskey="n" href="stalking.html">Weiter</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Service- und Host-Gruppen überwachen </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td>
<td width="40%" align="right" valign="top"> Status Stalking</td>
</tr>
</table>
</div>
<P class="copyright">© 2009-2010 Icinga Development Team, http://www.icinga.org</P>
</body>
</html>
|