File: notifications2.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 (320 lines) | stat: -rw-r--r-- 18,090 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
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>5.12. Benachrichtigungen: Beispiele und Fehlersuche</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="ch05.html" title="Kapitel 5. Die Grundlagen">
<link rel="prev" href="notifications.html" title="5.11. Benachrichtigungen">
<link rel="next" href="ch06.html" title="Kapitel 6. Die Benutzeroberflächen">
<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">5.12. Benachrichtigungen: Beispiele und Fehlersuche</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="notifications.html">Zurück</a> </td>
<th width="60%" align="center">Kapitel 5. Die Grundlagen</th>
<td width="20%" align="right"> <a accesskey="n" href="ch06.html">Weiter</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="section" title="5.12. Benachrichtigungen: Beispiele und Fehlersuche">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="notifications2"></a>5.12. <a name="notifications_2"></a>Benachrichtigungen: Beispiele und Fehlersuche</h2></div></div></div>
<div class="toc"><dl>
<dt><span class="section">5.12.1. <a href="notifications2.html#introduction">Einführung</a></span></dt>
<dt><span class="section">5.12.2. <a href="notifications2.html#examples">Einige Beispiele</a></span></dt>
<dt><span class="section">5.12.3. <a href="notifications2.html#troubleshooting">Fehlersuche</a></span></dt>
</dl></div>
  

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

    <p>Die Objektdefinitionen von <a class="link" href="objectdefinitions.html#objectdefinitions-host">Hosts</a>, <a class="link" href="objectdefinitions.html#objectdefinitions-service">Services</a> und <a class="link" href="objectdefinitions.html#objectdefinitions-contact">Kontakten</a> / <a class="link" href="objectdefinitions.html#objectdefinitions-contactgroup">Kontaktgruppen</a> wurden im Kapitel "Icinga konfigurieren" gezeigt, die verschiedenen zu
    durchlaufenden Tests, um festzustellen, ob eine Benachrichtigung versandt wird, wurden im Abschnitt "<a class="link" href="notifications.html" title="5.11. Benachrichtigungen">Benachrichtigungen</a>" beschrieben.</p>

    <p>Trotz all der Erklärungen scheint es immer noch einen Grad der Unsicherheit zu geben, so dass wir versuchen, ein Beispiel für
    e-Mail als Kommunikationsweg zu geben.</p>

    <div class="important" title="Wichtig" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Wichtig]" src="../images/important.png"></td>
<th align="left">Wichtig</th>
</tr>
<tr><td align="left" valign="top">
        <p>Icinga bietet <span class="bold"><strong>keinerlei</strong></span> Methoden zur Benachrichtung irgendeines Kontaktes, den Sie definiert
        haben, so dass die Einrichtung und Konfiguration von Mail, SMS, Pager oder welchen Weg Sie auch immer wählen mögen, ganz allein Ihre
        Aufgabe und nicht Teil dieser Dokumentation ist. Wenn Sie Mail betrachten, dann müssen Sie ein Mail-Programm (postfix, sendmail oder
        jeden anderen MTA, mit dem Sie sich wohlfühlen) installieren, "Relaying" auf dem Icinga-Server einrichten (postfix:
        <code class="filename">/etc/postfix/main.cf</code>, Direktive "relayhost"; sendmail: <code class="filename">/etc/mail/sendmail.cf</code>, Directive
        "DS"), "Relaying" auf Ihrem zentralen Mail-Server einrichten für Mails, die vom Icinga-Server eintreffen und prüfen, dass Sie Mails
        von Ihrem Icinga-Server aus senden können als Benutzer, mit dem auch der Icinga-Prozess läuft.</p>

        <p>Wenn Sie keine Meldungen von der Kommandozeile Ihres Icinga-Servers aus senden können, dann ist es nicht sinnvoll, dass Sie
        weiterlesen.</p>
      </td></tr>
</table></div>
<p><span class="bold"><strong>Voraussetzungen</strong></span></p>

    <div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
        <p>Wie bereits oben angemerkt benötigen Sie einen funktionierenden Weg, um Meldungen von der Kommandozeile aus zu versenden. Wenn
        das nicht funktioniert, dann müssen Sie das zuerst reparieren!</p>
      </li>
<li class="listitem">
        <p>Sie benötigen mindestens eine Kontaktdefinition ähnlich der folgenden:</p>

        <pre class="screen"> define contact {
        contact_name                    jdoe
        host_notifications_enabled      1
        host_notification_period        24x7
        host_notification_options       d,u,r
        host_notification_commands      host-notify-by-email
        service_notifications_enabled   1
        service_notification_period     workhours
        service_notification_options    w,u,c,r
        service_notification_commands   notify-by-email
        email                           jdoe@some.domain.name
        }</pre>

        <p>Die Definition enthält alle benötigten Direktiven und eine semi-optionale (email).</p>

        <div class="itemizedlist"><ul class="itemizedlist" type="circle">
<li class="listitem">
            <p>Benachrichtigungen sind für Hosts und Services aktiviert</p>
          </li>
<li class="listitem">
            <p>Benachrichtigungen werden innerhalb des Zeitfensters "24x7" und während "workhours" für Services verschickt. Diese
            Zeitfenster erfordern entsprechende <a class="link" href="objectdefinitions.html#objectdefinitions-timeperiod">Zeitfenster-Definitionen</a>. Wir nehmen an,
            dass "24x7" 24 Stunden und sieben Tage die Woche und "workhours" Montag bis Freitag von 09:00 Uhr bis 17:00 Uhr bedeutet. Bitte
            beachten Sie, dass "notification_period" etwas anderes ist als "check_period", die in Host- und Service-Definitionen zu finden
            ist. Ersteres gibt das Zeitfenster an, in welchem Meldungen versandt werden, wenn alle in "<a class="link" href="notifications.html" title="5.11. Benachrichtigungen">Benachrichtungen</a>" beschriebenen Prüfungen erfolgreich durchlaufen wurden.</p>
          </li>
<li class="listitem">
            <p>Meldungen werden für Hosts versandt, die in die Zustände UNREACHABLE und DOWN wechseln bzw. wieder in den UP-Status
            zurückkehren. Für Services, die in die Zustände WARNING, CRITICAL und UNREACHABLE wechseln bzw. wieder in den OK-Status
            zurückkehren, werden ebenfalls Meldungen verschickt.</p>
          </li>
<li class="listitem">
            <p>Hosts und Services benutzen unterschiedliche Befehle, um den Kontakt zu benachrichtigen.</p>
          </li>
<li class="listitem">
            <p>Außer "email" können Sie verschiedene andere Adressen definieren, die zur Benachrichtigung des Kontakt genutzt werden
            können.</p>
          </li>
</ul></div>
      </li>
<li class="listitem">
        <p>Sie benötigen verschiedene Befehlsdefinitionen für "host-notify-by-email" und "notify-by-email". Die gezeigten Definitionen
        stammen aus den Icinga-Beispielkonfigurationsdateien. Die Befehlszeile wurde umformatiert.</p>

        <pre class="screen"> # 'notify-host-by-email' command definition
 define command {
        command_name   notify-host-by-email
        command_line   /usr/bin/printf "%b" "***** Icinga *****\n\n \
                       Notification Type: $NOTIFICATIONTYPE$\n \
                       Host: $HOSTNAME$\n \
                       State: $HOSTSTATE$\n \
                       Address: $HOSTADDRESS$\n \
                       Info: $HOSTOUTPUT$\n\n \
                       Date/Time: $LONGDATETIME$\n" \
                       | /usr/bin/mailx -s \
                         "** $NOTIFICATIONTYPE$ Host Alert: \
                         $HOSTNAME$ is $HOSTSTATE$ **" \
                         $CONTACTEMAIL$
        }

 # 'notify-service-by-email' command definition
 define command {
        command_name   notify-service-by-email
        command_line   /usr/bin/printf "%b" "***** Icinga *****\n\n \
                       Notification Type: $NOTIFICATIONTYPE$\n\n \
                       Service: $SERVICEDESC$\n \
                       Host: $HOSTALIAS$\n \
                       Address: $HOSTADDRESS$\n \
                       State: $SERVICESTATE$\n\n \
                       Date/Time: $LONGDATETIME$\n\n \
                       Additional Info:\n\n \
                       $SERVICEOUTPUT$\n" \
                       | /usr/bin/mailx -s \
                         "** $NOTIFICATIONTYPE$ Service Alert: \
                         $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" \
                         $CONTACTEMAIL$
        }</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>Bitte überprüfen Sie, dass die Programme (<code class="filename">printf</code>, <code class="filename">mailx</code>) tatsächlich an den
          angegebenen Stellen existieren. Dies kann je nach Distribution abweichen.</p>
        </td></tr>
</table></div>

        <p>Es gibt viele <a class="link" href="macrolist.html" title="5.3. Standard-Makros in Icinga">Makros</a>, die benutzt werden können, um die Benachrichtigungen mit Informationen
        zu füllen.</p>
<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>Verschiedene Makros haben einen eingeschränkten Gültigkeitsbereich, z.B. sind CONTACT*-Makros innerhalb von Event-Handlern
            nicht verfügbar.</p>
          </td></tr>
</table></div>

        <p>Sie können Ihren eigenen Benachrichtigungsbefehl durch hinzufügen oder löschen von Makros schreiben. Stellen Sie sicher, dass
        er die Informationen enthält, die der Empfänger benötigt. Sie möchten vielleicht ein ausgeklügeltes Skript schreiben, das eine
        Datenbank prüft, um den Weg festzulegen, über den ein Kontakt informiert werden soll abhängig von der Zeit, zu der eine
        Benachrichtigung versandt werden soll (per Mail während der Arbeitszeit, zusätzlich per SMS außerhalb der Arbeitszeit, gar nicht
        während des Urlaubs).</p>
      </li>
</ul></div>
  </div>

  <div class="section" title="5.12.2. Einige Beispiele">
<div class="titlepage"><div><div><h3 class="title">
<a name="examples"></a>5.12.2. Einige Beispiele</h3></div></div></div>
    

    <p>Wir werden ein paar Services definieren und dabei nur einige Direktiven verwenden. Bei den anderen (notwendigen) nehmen wir an,
    dass sie mit Hilfe eines Templates definiert wurden. Wir zeigen Ihnen auch, worauf Sie achten sollten:</p>

    <pre class="screen"> define service {
        use                      service_template
        host_name                san_host
        service_description      spare_disks
        notification_period      24x7
        notification_interval    60
        notification_options     c,w,r
        check_command            check_spare!2!1
        contacts                 jdoe
        contact_groups           admins
        }

 define service {
        use                      service_template
        host_name                login_host
        service_description      users
        notification_period      workhours
        notification_interval    0
        notification_options     c,r
        check_command            check_user!20!50
        contacts                 jdoe
        }        
       
 define service {
        use                      service_template
        host_name                app_host
        service_description      memory
        notification_period      workhours
        notification_interval    10
        notification_options     c,w,r,s,r,f,n
        check_command            check_memory!90%!95%
        contacts                 admins
        }</pre>

    <div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
        <p>Der erste Service überwacht die Anzahl von Ersatz-Festplatten innerhalb eines Disk-Shelfs. Normalerweise sind zwei Festplatten
        verfügbar. Wenn nur eine verfügbar ist, soll eine Warnung erfolgen, bei keiner freien wird das als kritisch angesehen.
        Benachrichtigungen werden jederzeit versandt, wobei Benachrichtigungen im Fehlerfall erneut alle 60 Minuten erfolgen. John Doe ist
        nicht Mitglied der Admin-Gruppe, so dass er gesondert angegeben wird.</p>
      </li>
<li class="listitem">
        <p>Der zweite Service überwacht die Anzahl von angemeldeten Benutzern. Bei mehr als 20 Benutzer soll gewarnt werden und mehr als
        50 Benutzer ist kritisch. Der Betrieb ist außerhalb der Arbeitszeit geschlossen und inaktive Benutzer werden nach einer gewissen
        Zeit automatisch abgemeldet, so dass es keine Notwendigkeit für Benachrichtigungen außerhalb der Arbeitszeit gibt. Bitte beachten
        Sie, dass bei einer Warnung <span class="emphasis"><em>keine</em></span> Benachrichtigung versandt wird, weil dies nicht in den "notification_options"
        angegeben wurde! Es gibt lediglich eine Benachrichtigung im Falle eines nicht-OK-Zustand, auch wenn der Zustand zwischen WARNING und
        CRITICAL wechselt.</p>
      </li>
<li class="listitem">
        <p>Der letzte Service prüft die Speicherauslastung einer Maschine, auf der ständig Batch-Jobs ausgeführt werden. Warnungen werden
        bei mehr als 90% RAM-Belegung erzeugt und jenseits von 95% wird es als kritisch angesehen. Der Versand von Meldungen im
        10-Minuten-Takt scheint eine gute Idee zu sein, aber dies nur während der Arbeitszeit zu tun ist vielleicht nicht ausreichend.
        <span class="bold"><strong>Aber</strong></span>: Obwohl eine Vielzahl von Benachrichtigungsoptionen angegeben wurde, wird die Admins-Gruppe
        niemals eine Meldung bekommen! Der Grund? Bitte prüfen Sie selbst die Bedeutung jedes möglichen Wertes von "notification_options",
        indem Sie die Beschreibung der Host-/Service-Definition lesen.</p>
      </li>
</ul></div>
  </div>

  <div class="section" title="5.12.3. Fehlersuche">
<div class="titlepage"><div><div><h3 class="title">
<a name="troubleshooting"></a>5.12.3. Fehlersuche</h3></div></div></div>
    

    <p>Falls Benachrichtigungen nicht zu funktionieren scheinen, dann gibt es verschiedene Dinge, die man prüfen kann:</p>

    <div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
        <p>Ist der Host/Service bereits in einem "Hard"-Zustand? Prüfen Sie den Zustand, indem Sie sich die Host/Service-Details
        ansehen</p>
      </li>
<li class="listitem">
        <p>Ist das Makro in dem Kontext gültig, in dem Sie es benutzen</p>
      </li>
<li class="listitem">
        <p>Ist das Programm zum Senden von Benachrichtigungen (mail / pager / ...) installiert und lauffähig? Ist es möglich,
        Benachrichtigungen von der Kommandozeile aus an die in der Kontaktdefinition angegebene Adresse zu versenden mit dem Benutzer, unter
        dem auch der Icinga-Prozess läuft? Anmerkung: Aus Sicherheitsgründen könnte es sein, dass die Login-Shell deaktiviert ist, so dass
        Sie dies vorübergehend ändern müssen</p>
      </li>
<li class="listitem">
        <p>Anstatt Meldungen zu versenden können Sie die Ausgabe auch in eine Datei umleiten, indem Sie "<code class="literal">| /usr/bin/mail
        ...</code>" durch etwas wie "<code class="literal">&gt; /tmp/notification.log</code>" ersetzen, um zu prüfen, ob alles Makros korrekt
        ersetzt werden</p>
      </li>
<li class="listitem">
        <p>Prüfen Sie das Icinga-Log, Mail-Log und System-Log auf Meldungen</p>
      </li>
<li class="listitem">
        <p>Editieren Sie <code class="filename">icinga.cfg</code> und ändern Sie die folgenden Direktiven:</p>

        <pre class="screen"> debug_level=32                  # notifications
 debug_verbosity=2               # very detailed
 max_debug_file_size=1000000000  # max 1GB of debug file</pre>

        <p>Starten Sie Icinga neu und verschicken Sie über das klassische UI eine "custom notification", um die Einstellungen zu
        prüfen.</p>
      </li>
</ul></div>

    <a class="indexterm" name="idm139734669577984"></a>
  </div>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="notifications.html">Zurück</a> </td>
<td width="20%" align="center"><a accesskey="u" href="ch05.html">Nach oben</a></td>
<td width="40%" align="right"> <a accesskey="n" href="ch06.html">Weiter</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">5.11. Benachrichtigungen </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td>
<td width="40%" align="right" valign="top"> Kapitel 6. Die Benutzeroberflächen</td>
</tr>
</table>
</div>
<P class="copyright">© 1999-2009 Ethan Galstad, 2009-2017 Icinga Development Team, https://www.icinga.com</P>
</body>
</html>