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">> /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>
|