File: freshness.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 (253 lines) | stat: -rw-r--r-- 15,131 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
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>7.5. Service- und Host-Frische-Prüfungen</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="volatileservices.html" title="7.4. sprunghafte Services">
<link rel="next" href="distributed.html" title="7.6. Verteilte Überwachung">
<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.5. Service- und Host-Frische-Prüfungen</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="volatileservices.html">Zurück</a> </td>
<th width="60%" align="center">Kapitel 7. Fortgeschrittene Themen</th>
<td width="20%" align="right"> <a accesskey="n" href="distributed.html">Weiter</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="section" title="7.5. Service- und Host-Frische-Prüfungen">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="freshness"></a>7.5. Service- und Host-Frische-Prüfungen</h2></div></div></div>
<div class="toc"><dl>
<dt><span class="section">7.5.1. <a href="freshness.html#introduction">Einführung</a></span></dt>
<dt><span class="section">7.5.2. <a href="freshness.html#howitworks">Wie funktioniert die Frische-Prüfung?</a></span></dt>
<dt><span class="section">7.5.3. <a href="freshness.html#enable">Frische-Prüfungen aktivieren</a></span></dt>
<dt><span class="section">7.5.4. <a href="freshness.html#example">Beispiel</a></span></dt>
<dt><span class="section">7.5.5. <a href="freshness.html#stale">"Check results ... are stale. Forcing an immediate check ...</a></span></dt>
</dl></div>
  

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

    <p>Icinga unterstützt ein Feature, das die "Frische" (Freshness) der Host- und Service-Prüfungen überprüft. Der Zweck der
    Frische-Prüfung ist es, bei passiven Host- und Service-Prüfungen sicherzustellen, dass diese regelmäßig von externen Applikationen zur
    Verfügung gestellt werden.</p>

    <p>Frische-Prüfungen sind sinnvoll, wenn Sie sicherstellen wollen, dass <a class="link" href="passivechecks.html" title="5.7. Passive Prüfungen (Passive Checks)">passive Prüfungen</a> so
    regelmäßig empfangen werden wie Sie das erwarten. Das kann in <a class="link" href="distributed.html" title="7.6. Verteilte Überwachung">verteilten</a> und <a class="link" href="redundancy.html" title="7.7. Redundante und Failover-Netzwerk-Überwachung">Failover</a> Überwachungsumgebungen sehr sinnvoll sein.</p>

    <div class="mediaobject" align="right"><img src="../images/freshness.png" align="right"></div>
  </div>

  <div class="section" title="7.5.2. Wie funktioniert die Frische-Prüfung?">
<div class="titlepage"><div><div><h3 class="title">
<a name="howitworks"></a>7.5.2. Wie funktioniert die Frische-Prüfung?</h3></div></div></div>
    

    <p>Icinga prüft periodisch die Frische der Ergebnisse für alle Hosts und Services, bei denen Frische-Prüfungen aktiviert
    sind.</p>

    <div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
        <p>ein Frische-Schwellwert wird für jeden Host oder Service berechnet.</p>
      </li>
<li class="listitem">
        <p>für jeden Host/Service wird das Alter des letzten Prüfungsergebnisses mit dem Frische-Schwellwert verglichen.</p>
      </li>
<li class="listitem">
        <p>wenn das Alter des letzten Prüfungsergebnisses größer als der Frisch-Schwellwert ist, wird das Prüfergebnis als "abgestanden"
        (stale) betrachtet.</p>
      </li>
<li class="listitem">
        <p>wenn das Prüfergebnis als abgestanden angesehen wird, wird Icinga eine <a class="link" href="activechecks.html" title="5.6. Aktive Prüfungen (Active Checks)">aktive
        Prüfung</a> für den Host oder Service mit dem Kommando ausführen, das in der Host- oder Service-Definition angegeben ist.</p>
      </li>
</ul></div>

    <p><span class="inlinemediaobject"><img src="../images/tip.gif"></span> Hinweis: Eine aktive Prüfung wird ausgeführt, selbst wenn aktive Prüfungen programmweit oder auf Host- bzw.
    Service-spezifischer Basis deaktiviert sind.</p>

    <p>Wenn Sie beispielsweise einen Frische-Schwellwert von 60 für einen Ihrer Services haben, wird Icinga diesen Service als
    abgestanden ansehen, wenn das letzte Prüfergebnis älter als 60 Sekunden ist.</p>
  </div>

  <div class="section" title="7.5.3. Frische-Prüfungen aktivieren">
<div class="titlepage"><div><div><h3 class="title">
<a name="enable"></a>7.5.3. Frische-Prüfungen aktivieren</h3></div></div></div>
    

    <p>Was Sie tun müssen, um Frische-Prüfungen zu aktivieren...</p>

    <div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
        <p>aktivieren Sie Frische-Prüfungen auf programmweiter Basis mit den <a class="link" href="configmain.html#configmain-check_service_freshness">check_service_freshness</a> und <a class="link" href="configmain.html#configmain-check_host_freshness">check_host_freshness</a>-Direktiven.</p>
      </li>
<li class="listitem">
        <p>benutzen Sie die <a class="link" href="configmain.html#configmain-service_freshness_check_interval">service_freshness_check_interval</a>- und
        <a class="link" href="configmain.html#configmain-host_freshness_check_interval">host_freshness_check_interval</a>-Optionen, um Icinga
        mitzuteilen, wie oft es die Frische von Host- und Service-Ergebnissen prüfen soll.</p>
      </li>
<li class="listitem">
        <p>aktivieren Sie Frische-Prüfungen auf Host- und Service-spezifischer Basis, indem Sie die
        <span class="emphasis"><em>check_freshness</em></span>-Option in Ihrer Host- und Service-Definitionen auf 1 setzen.</p>
      </li>
<li class="listitem">
        <p>konfigurieren Sie Frische-Schwellwerte, indem Sie die <span class="emphasis"><em>freshness_threshold</em></span>-Option in Ihren Host- und
        Service-Definitionen setzen.</p>
      </li>
<li class="listitem">
        <p>konfigurieren Sie die <span class="emphasis"><em>check_command</em></span>-Option in Ihren Host- oder Service-Definitionen, so dass sie ein
        gültiges Script enthalten, das benutzt werden kann, um den Host oder Service aktiv zu prüfen, wenn er als abgestanden angesehen
        wird.</p>
      </li>
<li class="listitem">
        <p>Die <span class="emphasis"><em>check_period</em></span>-Option in Ihren Host- und Service-Definitionen wird benutzt, wenn Icinga
        festlegt, wann ein Host oder Service auf Frische geprüft werden soll, um sicherzustellen, dass es sich um ein gültiges Zeitfenster
        handelt.</p>
      </li>
</ul></div>

    <p><span class="inlinemediaobject"><img src="../images/tip.gif"></span> Hinweis: Wenn Sie keinen Host- oder Service-spezifischen <span class="emphasis"><em>freshness_threshold</em></span>-Wert angeben
    (oder ihn auf Null setzen), wird Icinga automatisch einen Schwellwert berechnen, der darauf basiert, wie oft Sie den jeweiligen
    Host- oder Service überwachen. Wir würden empfehlen, dass Sie explizit einen Frische-Schwellwert angeben, statt dass Icinga einen
    für Sie auswählt.</p>
  </div>

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

    <p>Ein Beispiel für einen Service, der eine Frische-Prüfung benötigen könnte, wäre einer, der den Status Ihrer nächtlichen Backups
    meldet. Vielleicht haben Sie ein externes Script, welches das Ergebnis des Backup-Jobs an Icinga meldet, sobald das Backup
    beendet ist. In diesem Fall werden alle Prüfungen/Ergebnisse für diesen Service durch eine externe Applikation mit Hilfe von passiven
    Prüfungen zur Verfügung gestellt. Um sicherzustellen, dass der Status des Backup-Jobs täglich gemeldet wird, können Sie die
    Frische-Prüfung für diesen Service aktivieren. Falls das externe Script das Ergebnis des Backup-Jobs nicht meldet, kann Icinga
    ein kritisches Ergebnis imitieren, indem man folgendes tut...</p>

    <p>Nachfolgend, wie die Definition für den Service aussehen könnte (einige benötigte Optionen fehlen...)</p>

    <pre class="screen"> define service{
        host_name               backup-server
        service_description     ArcServe Backup Job
        active_checks_enabled   0               ; aktive Prüfungen sind NICHT aktiviert
        passive_checks_enabled  1               ; passive Prüfungen sind aktiviert (dadurch werden Ergebnisse gemeldet)
        check_freshness         1
        freshness_threshold     93600           ; 26 Stunden Schwellwert, nachdem Backups nicht immer zur gleichen Zeit beendet sind
        check_command           no-backup-report        ; dieses Kommando wird nur ausgeführt, wenn der Service als "abgestanden" angesehen wird
        ...andere Optionen...
        }</pre>

    <p>Beachten Sie, dass aktive Prüfungen für den Service deaktiviert sind. Das ist so, weil die Ergebnisse für den Service nur durch
    eine externe Applikation geliefert werden. Die Frische-Prüfung ist aktiviert und der Frische-Schwellwert ist auf 26 Stunden gesetzt. Das
    ist ein bisschen mehr als 24 Stunden, weil Backup-Jobs ab und zu länger dauern (abhängig davon, wie viele Daten zu sichern sind, wie
    viel Netzwerkverkehr herrscht, usw.). Das <span class="emphasis"><em>no-backup-report</em></span>-Kommando wird nur ausgeführt, wenn die Ergebnisse des
    Service als abgestanden angesehen werden. Die Definition des <span class="emphasis"><em>no-backup-report</em></span>-Kommandos könnte wie folgt
    aussehen...</p>

    <pre class="screen"> define command{
        command_name    no-backup-report
        command_line    /usr/local/icinga/libexec/check_dummy 2 "CRITICAL: Results of backup job were not reported!"
        }</pre>

    <p>Falls Icinga erkennt, dass das Service-Ergebnis abgestanden ist, wird es das <span class="emphasis"><em>no-backup-report</em></span>-Kommando
    als eine aktive Service-Prüfung ausführen. Das führt dazu, dass das <span class="emphasis"><em>check_dummy</em></span>-Plugin ausgeführt wird, das einen
    kritischen Status an Icinga meldet. Der Service wird dann in einen kritischen Zustand gehen (falls das nicht bereits der Fall
    ist) und wahrscheinlich wird jemand über das Problem informiert.</p>

    <a class="indexterm" name="idm139734666147824"></a>
  </div>

  <div class="section" title='7.5.5. "Check results ... are stale. Forcing an immediate check ...'>
<div class="titlepage"><div><div><h3 class="title">
<a name="stale"></a>7.5.5. "Check results ... are stale. Forcing an immediate check ...</h3></div></div></div>
    

    <p>Manchmal finden Sie vielleicht Meldungen wie die folgende in icinga.log:</p>
<pre class="screen"> Check results for service x on host y are stale by 0d 0h 0m 10s (threshold=0d 0h 10m 0s).
 Forcing an immediate check of the service...</pre>

    <p>Das bedeutet, dass der Service in der Vergangenheit geprüft wurde und die als Schwellwert definierte Zeit (z.B. 10min) vergangen
    ist, ohne dass ein neues Prüfergebnis geliefert wurde, so dass eine Prüfung durch den Core erzwungen wird.</p>

    <p>Die Meldung kommt aus dem Code-Fragment in base/checks.c (Zeilen wurden umgebrochen, um die Lesbarkeit zu
    verbessern)</p>
<pre class="programlisting"> /* the results for the last check of this service are stale */
    if (expiration_time &lt; current_time) {

       get_time_breakdown((current_time - expiration_time), &amp;days, &amp;hours, &amp;minutes, &amp;seconds);
       get_time_breakdown(freshness_threshold, &amp;tdays, &amp;thours, &amp;tminutes, &amp;tseconds);

       /* log a warning */ 
       if (log_this == TRUE)
          logit(NSLOG_RUNTIME_WARNING, TRUE,
             "Warning: The results of service '%s' on host '%s' are stale by %dd %dh %dm %ds (threshold=%dd %dh %dm %ds).
             I'm forcing an immediate check of the service.\n",
             temp_service-&gt;description, temp_service-&gt;host_name,
             days, hours, minutes, seconds, tdays, thours, tminutes, tseconds
          );

       log_debug_info(DEBUGL_CHECKS, 1,
          "Check results for service '%s' on host '%s' are stale by %dd %dh %dm %ds (threshold=%dd %dh %dm %ds).
          Forcing an immediate check of the service...\n",
          temp_service-&gt;description, temp_service-&gt;host_name,
          days, hours, minutes, seconds, tdays, thours, tminutes, tseconds
       );

       return FALSE;
    }</pre>
<p>Normalerweise trifft folgendes zu</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
          <p><code class="literal">expiration_time</code> = last_check + freshness threshold (z.B. 10 Min.)</p>
        </li>
<li class="listitem">
          <p>expiration_time ist in der Vergangenheit (<code class="literal">&lt; current_time</code>) == stale</p>
        </li>
<li class="listitem">
          <p>der Unterschied zwischen jetzt und expiration_time wird im Protokoll angezeigt (z.B. 10 Sek.)</p>
        </li>
</ul></div>
<p>Falls der Service nicht jetzt, aber bereits in der Vergangenheit geprüft wurde (event_start &gt; last_check) und der
    Schwellwert 0 ist, wird max_service_check_spread multipliziert mit dem Intervall als zusätzlicher Offset addiert (das passiert während
    der Startphase, um festzustellen, wann die erste Prüfung (und Status + Ausgabe) erfolgen muss).</p>

    <a class="indexterm" name="idm139734666136304"></a>

    <a class="indexterm" name="idm139734666134608"></a>
  </div>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="volatileservices.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="distributed.html">Weiter</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">7.4. sprunghafte Services </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td>
<td width="40%" align="right" valign="top"> 7.6. Verteilte Überwachung</td>
</tr>
</table>
</div>
<P class="copyright">© 1999-2009 Ethan Galstad, 2009-2017 Icinga Development Team, https://www.icinga.com</P>
</body>
</html>