File: dependencies.html

package info (click to toggle)
icinga 1.0.2-2%2Bsqueeze1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 33,952 kB
  • ctags: 13,294
  • sloc: xml: 154,821; ansic: 99,198; sh: 14,585; sql: 5,852; php: 5,126; perl: 2,838; makefile: 1,268
file content (318 lines) | stat: -rw-r--r-- 20,182 bytes parent folder | download | duplicates (2)
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>