Mit der Monitoringlösung Zabbix ist es relativ einfach möglich, bei der Über-/Unterschreitung bestimmter Grenzwerte Alarme zu erstellen und diese auf verschiedenen Wegen versenden zu lassen. Zabbix verfügt dabei über eine relativ einfache Struktur.
Zabbix-Grundstruktur
- Geräte sind "hosts".
- "hosts" haben "items", also einzeln überwachte Variablen mit Werten "values".
- Grenzwerte eines "items" heißen "trigger".
- Wenn ein Grenzwert über-/unterschritten wird, wird ein "event" ausgelöst.
- Eine "action" startet einen (Benachrichtigungs-) Prozess, nachdem ein "event" ausgelöst wurde.
- Eine Benachrichtigung wird an Nutzer oder Nutzergruppen geschickt über unterschiedliche Wege ("media") geschickt.
- Das Ziel der Benachrichtigung wird in der "action" anhand des zu alarmierenden Nutzers ermittelt. Über "macros"1 lassen sich die Texte anpassen.
- Diese "macros" können auch verschiedene Werte des host-Objektes annehmen.
Es ist nicht möglich, jede Art von item-Wert für die Benachrichtigung zu nutzen.
Wie man das dennoch dynamisieren kann, zeigt dieses Beispiel.
Beispiel
- Es wird ein Emailzugang angelegt, der die Daten nur dem lokalen Benutzer (auf dem Zabbix-Server) zustellt.
- Auf dem Server sind Zusatzprogramme notwendig.
- fetchmail (Zum Abholen der Email.)
- procmail (Zum Verarbeiten der Email.)
- formail (Zum Umformatieren der Emaildatei.)
Über die systemd-Services (analog cronjob) werden die Emails regelmäßig abgeholt und die Weiterverarbeitung gestartet.
nano /etc/systemd/system/multi-user.target.wants/mailrelay.service [Unit] Description=Mail relay (service) [Service] Type=simple ExecStart=/bin/sh -c '/bin/mv /var/mail/zabbix /var/mail/zabbix.tmp && /usr/bin/formail -s /usr/bin/procmail < /var/mail/zabbix.tmp && /bin/rm /var/mail/zabbix.tmp' [Install] WantedBy=multi-user.target
nano /etc/systemd/system/multi-user.target.wants/mailrelay.timer [Unit] Description=Mail relay [Timer] OnCalendar=*:0/5 Persistent=true [Install] WantedBy=multi-user.target
fetchmail startet procmail
nano /root/.fetchmailrc set no bouncemail defaults: batchlimit 100 poll localhost with protocol imap user "zabbix" password "[PASSWORT]" is zabbix ssl fetchall # keep no rewrite mda "/usr/bin/procmail -f %F -d %T";
procmail verarbeitet die Email
nano /root/.procmailrc SHELL=/bin/sh PATH=/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin MAILDIR=$HOME DEFAULT=/dev/null LOGFILE=/var/log/procmail.log LOG="" VERBOSE="yes" SUBJ=`formail -xSubject: ` NEW_SUBJ=`echo "${SUBJ}" | expand | /bin/sed -e 's|#[^# ]*#||g' -e 's|^\s*||g'` NEW_TO=`echo "${SUBJ}" | expand | /bin/sed -n 's/.*#\([^# ]*\)#.*/\1/p' | /bin/grep -E "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,63}$"` :0 bfhw * ^To: <zabbix@localhost> * !^X-Loop: This email address is being protected from spambots. You need JavaScript enabled to view it. * !^Subject:.*Re: * !^FROM_DAEMON | formail -k -X "Content-Type:" -X "Content-Transfer-Encoding:" -X "Subject:" -X "From:" -X "Subject:" -X "Message-Id:" -X "Date:" -X "To:" -I "Content-Transfer-Encoding: base64" -I "From: This email address is being protected from spambots. You need JavaScript enabled to view it." -A "X-Loop: This email address is being protected from spambots. You need JavaScript enabled to view it." -I "To: ${NEW_TO}" -I "Subject: ${NEW_SUBJ}" | $SENDMAIL -oi ${NEW_TO}
{phocagallery view=category|categoryid=30|imageid=44|float=left}
{phocagallery view=category|categoryid=30|imageid=45|float=left}