File: flapping.html

package info (click to toggle)
icinga 1.14.2%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 49,264 kB
  • sloc: ansic: 108,564; sql: 9,656; sh: 4,945; perl: 3,439; makefile: 1,213; php: 581; xml: 104
file content (385 lines) | stat: -rw-r--r-- 19,896 bytes parent folder | download
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
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>7.8. Erkennung und Behandlung von Status-Flattern</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="ch07.html" title="Kapitel 7. Fortgeschrittene Themen">
<link rel="prev" href="redundancy.html" title="7.7. Redundante und Failover-Netzwerk-Überwachung">
<link rel="next" href="escalations.html" title="7.9. Benachrichtigungseskalationen">
<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">7.8. Erkennung und Behandlung von Status-Flattern</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="redundancy.html">Zurück</a> </td>
<th width="60%" align="center">Kapitel 7. Fortgeschrittene Themen</th>
<td width="20%" align="right"> <a accesskey="n" href="escalations.html">Weiter</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="section" title="7.8. Erkennung und Behandlung von Status-Flattern">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="flapping"></a>7.8. Erkennung und Behandlung von Status-Flattern</h2></div></div></div>
<div class="toc"><dl>
<dt><span class="section">7.8.1. <a href="flapping.html#introduction">Einführung</a></span></dt>
<dt><span class="section">7.8.2. <a href="flapping.html#howitworks">Wie Flatter-Erkennung arbeitet</a></span></dt>
<dt><span class="section">7.8.3. <a href="flapping.html#example">Beispiel</a></span></dt>
<dt><span class="section">7.8.4. <a href="flapping.html#detectionservices">Flatter-Erkennung für Services</a></span></dt>
<dt><span class="section">7.8.5. <a href="flapping.html#detectionhosts">Flatter-Erkennung für Hosts</a></span></dt>
<dt><span class="section">7.8.6. <a href="flapping.html#thresholds">Flatter-Erkennungsschwellwerte</a></span></dt>
<dt><span class="section">7.8.7. <a href="flapping.html#statesused">Zustände, die für die Flatter-Erkennung benutzt werden</a></span></dt>
<dt><span class="section">7.8.8. <a href="flapping.html#handling">Flatter-Behandlung</a></span></dt>
<dt><span class="section">7.8.9. <a href="flapping.html#enable">Aktivieren der Flatter-Erkennung</a></span></dt>
</dl></div>
  

  <div class="section" title="7.8.1. Einführung">
<div class="titlepage"><div><div><h3 class="title">
<a name="introduction"></a>7.8.1. Einführung</h3></div></div></div>
    

    <p>Icinga unterstützt die Erkennung von Hosts und Services, die "flattern". Flattern tritt auf, wenn Hosts oder Services zu
    oft den Zustand wechseln und dadurch einen Sturm von Problemen und Erholungsbenachrichtigungen erzeugen. Flattern kann auf
    Konfigurationsprobleme hinweisen (z.B. Schwellwerte, die zu niedrig gesetzt sind), störende Services oder wirkliche
    Netzwerkprobleme.</p>
  </div>

  <div class="section" title="7.8.2. Wie Flatter-Erkennung arbeitet">
<div class="titlepage"><div><div><h3 class="title">
<a name="howitworks"></a>7.8.2. Wie Flatter-Erkennung arbeitet</h3></div></div></div>
    

    <p>Bevor wir darauf eingehen, lassen Sie uns sagen, dass es etwas schwierig war, Flatter-Erkennung zu implementieren. Wie genau legt
    man fest, was "zu häufig" in Bezug auf Statusänderungen für einen Host oder Service ist? Als Ethan Galstad zuerst an die Implementierung
    der Flatter-Erkennung gedacht hat, versuchte er Informationen zu finden, wie Flattern erkannt werden könnte/sollte. Er konnte keinerlei
    Informationen darüber finden, was andere benutzten (benutzen andere so etwas?), also entschied er sich für das, was er für eine
    sinnvolle Lösung hielt...</p>

    <p>Sobald Icinga den Zustand eines Hosts oder Services prüft, wird es prüfen, ob dafür Flattern begonnen oder geendet hat. Es
    tut dies durch:</p>

    <div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
        <p>speichern der Ergebnisse der letzten 21 Prüfungen des Hosts oder Service [1]</p>
      </li>
<li class="listitem">
        <p>analysieren der historischen Prüfergebnisse und feststellen, wo Statusänderungen/-übergänge auftreten</p>
      </li>
<li class="listitem">
        <p>benutzen der Statusübergänge, um einen Statuswechsel-Prozentsatz (ein Maß für die Änderung) für den Statuswechsel des Hosts
        oder Service festzulegen</p>
      </li>
<li class="listitem">
        <p>vergleichen des Statuswechsel-Prozentwertes gegen die Flatter-Schwellwerte (hoch und niedrig)</p>
      </li>
</ul></div>

    <p>Ein Host oder Service wird angesehen, mit dem Flatter <span class="emphasis"><em>begonnen</em></span> zu haben, wenn der Prozentsatz das erste Mal
    einen <span class="emphasis"><em>hohen</em></span> Flatter-Schwellwert überschritten hat.</p>

    <p>Ein Host oder Service wird angesehen, das Flattern <span class="emphasis"><em>beendet</em></span> zu haben, wenn der Prozentsatz unter einen
    <span class="emphasis"><em>niedrigen</em></span> Flatter-Schwellwert sinkt (vorausgesetzt, dass er vorher geflattert hat).</p>

    <p>[1] Ergebnisse von Services in einem SOFT-Status werden nicht gespeichert, außer wenn sie zum OK-Zustand zurückkehren.</p>
  </div>

  <div class="section" title="7.8.3. Beispiel">
<div class="titlepage"><div><div><h3 class="title">
<a name="example"></a>7.8.3. Beispiel</h3></div></div></div>
    

    <p>Lassen Sie uns etwas detaillierter beschreiben, wie Flatter-Erkennung bei Services arbeitet...</p>

    <p>Das Bild unten zeigt eine chronologische Historie von Service-Zuständen der letzten 21 Service-Prüfungen. OK-Zustände sind in grün
    dargestellt, WARNING-Zustände in gelb, CRITICAL-Zustände in rot und UNKNOWN-Zustände in orange.</p>

    <div class="mediaobject"><img src="../images/statetransitions.png"></div>

    <p>Die historischen Service-Prüfergebnisse werden untersucht, um festzustellen, wo Statusänderungen/-übergänge auftreten.
    Statusänderungen treten auf, wenn ein archivierter Status sich von den archivierten Zuständen unterscheidet, die ihm direkt vorausgehen.
    Da wir die Ergebnisse der letzten 21 Status-Prüfungen in dem Array ablegen, können wir bis zu 20 Statusänderungen haben. In diesem
    Beispiel gibt es sieben Statusänderungen, die im Bild durch Pfeile gekennzeichnet sind.</p>

    <p>Die Flatter-Erkennungslogik nutzt die Statusänderungen, um einen Gesamtprozentsatz für den Service festzulegen. Dies ist ein
    Maßstab für die Sprunghaftigkeit/Änderung des Service. Services, die nie den Status wechseln, haben einen Statusänderungswert von 0%,
    während Services, die ihren Status bei jeder Prüfung wechseln, einen Wert von 100% haben. Die meisten Services werden einen Prozentwert
    irgendwo dazwischen haben.</p>

    <p>Während der Berechnung des Prozentsatzes für den Service wird der Flatter-Erkennungsalgorithmus mehr Gewicht auf neuere
    Statusänderungen legen als auf alte. Genauer gesagt sind die Flatter-Erkennungsroutinen im Moment so ausgelegt, dass der neueste
    Statuswechsel 50% mehr Gewicht hat als der älteste. Das Bild unten zeigt, wie neuere Statuswechsel mehr Gewicht erhalten als ältere,
    während der Gesamtprozentwert für einen bestimmten Service berechnet wird.</p>

    <div class="mediaobject"><img src="../images/statetransitions2.png"></div>

    <p>Lassen Sie uns mit dem obigen Bild eine Berechnung der prozentualen Statusänderungen für den Service durchführen. Sie werden
    bemerken, dass es insgesamt sieben Statuswechsel gibt (bei t<sub>3</sub>, t<sub>4</sub>,
    t<sub>5</sub>, t<sub>9</sub>, t<sub>12</sub>, t<sub>16</sub> und
    t<sub>19</sub>). Ohne Gewichtung der Statuswechsel über die Zeit würde dies einen Gesamtwert von 35% ergeben:</p>

    <p>(7 beobachtete Statuswechsel / 20 mögliche Statuswechsel) * 100 = 35 %</p>

    <p>Nachdem die Flatter-Erkennungslogik neueren Statuswechseln mehr Gewicht gibt als älteren, wird der eigentliche Wert in diesem
    Beispiel geringfügig kleiner sein als 35%. Lassen Sie uns annehmen, dass der gewichtete Prozentwert 31% ist...</p>

    <p>Der errechnete Prozentwert für den Service (31%) wird dann gegen die Flatter-Schwellwerte verglichen, um zu sehen, was
    passiert:</p>

    <div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
        <p>wenn der Service bisher <span class="emphasis"><em>nicht</em></span> flatterte und 31% <span class="emphasis"><em>gleich oder größer</em></span> als der hohe
        Flatter-Schwellwert ist, nimmt Icinga an, dass der Service gerade angefangen hat zu flattern.</p>
      </li>
<li class="listitem">
        <p>wenn der Service <span class="emphasis"><em>bereits</em></span> flatterte und 31% <span class="emphasis"><em>unter</em></span> dem niedrigen Flatter-Schwellwert
        liegt, nimmt Icinga an, dass der Service gerade aufgehört hat zu flattern.</p>
      </li>
</ul></div>

    <p>wenn keine der beiden Bedingungen zutrifft, dann macht die Flatter-Erkennungslogik nichts weiteres mit dem Service, da er entweder
    (noch) nicht flattert oder bereits flattert.</p>
  </div>

  <div class="section" title="7.8.4. Flatter-Erkennung für Services">
<div class="titlepage"><div><div><h3 class="title">
<a name="detectionservices"></a>7.8.4. Flatter-Erkennung für Services</h3></div></div></div>
    

    <p>Icinga prüft jedes Mal, wenn der Service geprüft wird (egal ob aktiv oder passiv), ob ein Service flattert.</p>

    <p>Die Flatter-Erkennungslogik für Services arbeitet wie in dem obigen Beispiel beschrieben.</p>
  </div>

  <div class="section" title="7.8.5. Flatter-Erkennung für Hosts">
<div class="titlepage"><div><div><h3 class="title">
<a name="detectionhosts"></a>7.8.5. Flatter-Erkennung für Hosts</h3></div></div></div>
    

    <p>Host-Flatter-Erkennung arbeitet in einer ähnlichen Weise wie die Service-Flatter-Erkennung, mit einem wichtigen Unterschied:
    Icinga wird versuchen zu prüfen, ob ein Host flattert, wenn:</p>

    <div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
        <p>der Host geprüft wird (aktiv oder passiv)</p>
      </li>
<li class="listitem">
        <p>manchmal, wenn ein Service geprüft wird, der mit dem Host verbunden ist. Genauer gesagt, wenn wenigstens
        <span class="emphasis"><em>x</em></span> der Zeit vergangen ist, seit die letzte Flatter-Erkennung durchgeführt wurde, wobei <span class="emphasis"><em>x</em></span>
        dem Durchschnittsintervall aller Services entspricht, die mit dem Host verbunden sind.</p>
      </li>
</ul></div>

    <p>Warum wird das gemacht? Bei Services wissen wir, dass die minimale Zeit zwischen zwei aufeinander folgenden
    Flatter-Erkennungsroutinen gleich dem Service-Prüfintervall sein wird. Allerdings werden Sie Hosts wahrscheinlich nicht auf einer
    regelmäßigen Basis überwachen, so dass es kein Prüfintervall gibt, das in der Flatter-Erkennungslogik benutzt werden kann. Außerdem ist
    es sinnvoll, dass die Prüfung eines Service der Erkennung eines Host-Flatterns dienen sollte. Services sind Attribute eines Hosts bzw.
    bezogen auf Dinge, die mit dem Host verbunden sind. Auf jeden Fall ist es die beste Methode, die Ethan Galstad gefunden hat, um
    festzulegen, wie oft die Flatter-Erkennung auf einem Host ausgeführt werden kann.</p>
  </div>

  <div class="section" title="7.8.6. Flatter-Erkennungsschwellwerte">
<div class="titlepage"><div><div><h3 class="title">
<a name="thresholds"></a>7.8.6. Flatter-Erkennungsschwellwerte</h3></div></div></div>
    

    <p>Icinga benutzt verschiedene Variablen, um die Schwellwert-Prozentsätze der Statusänderungen festzulegen, die es für die
    Flatter-Erkennung nutzt. Für Hosts und Services gibt es hohe und niedrige <span class="emphasis"><em>globale</em></span> und <span class="emphasis"><em>Host-</em></span>
    und <span class="emphasis"><em>Service-spezifische</em></span> Schwellwerte, die Sie konfigurieren können. Icinga wird die globalen Schwellwerte
    für die Flatter-Erkennung nutzen, wenn Sie keine Host- oder Service-spezifischen Schwellwerte angegeben haben.</p>

    <p>Die Tabelle unten zeigt die globalen und die Host- oder Service-spezifischen Variablen, die die verschiedenen Schwellwerte
    kontrollieren, die bei der Flatter-Erkennung benutzt werden.</p>

    <div class="informaltable">
      <table border="1">
<colgroup>
<col>
<col>
<col>
</colgroup>
<tbody>
<tr>
<td><p> <span class="bold"><strong>Objekt-Typ</strong></span> </p></td>
<td><p> <span class="bold"><strong>Globale Variable</strong></span> </p></td>
<td><p> <span class="bold"><strong>Objekt-spezifische Variablen</strong></span> </p></td>
</tr>
<tr>
<td><p>Host</p></td>
<td>
<p>
                 

                <a class="link" href="configmain.html#configmain-low_host_flap_threshold">low_host_flap_threshold</a>

                 
              </p> <p>
                 

                <a class="link" href="configmain.html#configmain-high_host_flap_threshold">high_host_flap_threshold</a>

                 
              </p>
</td>
<td>
<p>
                 

                <a class="link" href="objectdefinitions.html#objectdefinitions-host">low_flap_threshold</a>

                 
              </p> <p>
                 

                <a class="link" href="objectdefinitions.html#objectdefinitions-host">high_flap_threshold</a>

                 
              </p>
</td>
</tr>
<tr>
<td><p>Service</p></td>
<td>
<p>
                 

                <a class="link" href="configmain.html#configmain-low_service_flap_threshold">low_service_flap_threshold</a>

                 
              </p> <p>
                 

                <a class="link" href="configmain.html#configmain-high_service_flap_threshold">high_service_flap_threshold</a>

                 
              </p>
</td>
<td>
<p>
                 

                <a class="link" href="objectdefinitions.html#objectdefinitions-service">low_flap_threshold</a>

                 
              </p> <p>
                 

                <a class="link" href="objectdefinitions.html#objectdefinitions-service">high_flap_threshold</a>

                 
              </p>
</td>
</tr>
</tbody>
</table>
    </div>
  </div>

  <div class="section" title="7.8.7. Zustände, die für die Flatter-Erkennung benutzt werden">
<div class="titlepage"><div><div><h3 class="title">
<a name="statesused"></a>7.8.7. Zustände, die für die Flatter-Erkennung benutzt werden</h3></div></div></div>
    

    <p>Normalerweise wird Icinga die Ergebnisse der letzten 21 Präfungen eines Hosts oder Service verfolgen, unabhängig vom
    Prüfergebnis (Host-/Service-Zustand), um sie für die Flatter-Erkennungslogik zu benutzen.</p>

    <p><span class="inlinemediaobject"><img src="../images/tip.gif"></span> Hinweis: Sie können durch die <span class="emphasis"><em>flap_detection_options</em></span>-Direktive in Ihren Host- oder
    Service-Definitonen verschiedene Host- oder Service-Zustände von der Nutzung in der Flatter-Erkennungslogik ausschließen. Diese
    Direktive erlaubt Ihnen die Angabe, welche Host- oder Service-Zustände (z.B. "UP", "DOWN", "OK", "CRITICAL") Sie für die
    Flatter-Erkennung benutzen wollen. Wenn Sie diese Direktive nicht nutzen wollen, werden alle Host- und Service-Zustände in der
    Flatter-Erkennung benutzt.</p>
  </div>

  <div class="section" title="7.8.8. Flatter-Behandlung">
<div class="titlepage"><div><div><h3 class="title">
<a name="handling"></a>7.8.8. Flatter-Behandlung</h3></div></div></div>
    

    <p>Wenn bei einem Service- oder Host das erste Mal Flattern erkannt wird, wird Icinga:</p>

    <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
        <p>eine Meldung protokollieren, dass der Service oder Host flattert</p>
      </li>
<li class="listitem">
        <p>einen nicht-permanenten Kommentar zum Host oder Service hinzufügen, dass er flattert</p>
      </li>
<li class="listitem">
        <p>eine "flapping start"-Benachrichtigung für den Host oder Service an die betreffenden Kontakte versenden</p>
      </li>
<li class="listitem">
        <p>andere Benachrichtigungen für den Service oder Host unterdrücken (das ist einer der Filter in der <a class="link" href="notifications.html" title="5.11. Benachrichtigungen">Benachrichtigungslogik</a>)</p>
      </li>
</ol></div>

    <p>Wenn ein Service oder Host aufhört zu flattern, wird Icinga:</p>

    <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
        <p>eine Meldung protokollieren, dass der Service oder Host nicht mehr flattert</p>
      </li>
<li class="listitem">
        <p>den Kommentar löschen, der zum Service oder Host hinzugefügt wurde, als dieser anfing zu flattern</p>
      </li>
<li class="listitem">
        <p>eine "flapping stop"-Benachrichtigung für den Host oder Service an die betreffenden Kontakte versenden</p>
      </li>
<li class="listitem">
        <p>die Blockade von Benachrichtigungen für den Service oder Host entfernen (Benachrichtigungen sind nach wie vor an die normale
        <a class="link" href="notifications.html" title="5.11. Benachrichtigungen">Benachrichtigungslogik</a> gebunden)</p>
      </li>
</ol></div>
  </div>

  <div class="section" title="7.8.9. Aktivieren der Flatter-Erkennung">
<div class="titlepage"><div><div><h3 class="title">
<a name="enable"></a>7.8.9. Aktivieren der Flatter-Erkennung</h3></div></div></div>
    

    <p>Um die Flatter-Erkennungsmöglichkeiten in Icinga zu aktivieren, müssen Sie folgendes tun:</p>

    <div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
        <p>setzen Sie die <a class="link" href="configmain.html#configmain-enable_flap_detection">enable_flap_detection</a>-Direktive auf 1.</p>
      </li>
<li class="listitem">
        <p>setzen Sie die <span class="emphasis"><em>flap_detection_enabled</em></span>-Direktive in Ihren Host- und Service-Definitionen auf 1.</p>
      </li>
</ul></div>

    <p>Wenn Sie die Flatter-Erkennung auf einer globalen Ebene deaktivieren wollen, setzen Sie die <a class="link" href="configmain.html#configmain-enable_flap_detection">enable_flap_detection</a>-Direktive auf 0.</p>

    <p>Wenn Sie die Flatter-Erkennung nur für einige Hosts oder Services deaktivieren wollen, nutzen Sie die
    <span class="emphasis"><em>flap_detection_enabled</em></span>-Direktive in den Host- oder Service-Definitionen, um das zu tun.</p>

    <a class="indexterm" name="idm139734665808928"></a>
  </div>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="redundancy.html">Zurück</a> </td>
<td width="20%" align="center"><a accesskey="u" href="ch07.html">Nach oben</a></td>
<td width="40%" align="right"> <a accesskey="n" href="escalations.html">Weiter</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">7.7. Redundante und Failover-Netzwerk-Überwachung </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td>
<td width="40%" align="right" valign="top"> 7.9. Benachrichtigungseskalationen</td>
</tr>
</table>
</div>
<P class="copyright">© 1999-2009 Ethan Galstad, 2009-2017 Icinga Development Team, https://www.icinga.com</P>
</body>
</html>