Aktionen

Zabbix mailGraph installieren - Trigger Alerts Emails mit Grafiken

Aus znilwiki

ACHTUNG-BAUSTELLE.png

Dieses Thema ist noch nicht vollständig! Es wird noch daran gearbeitet!



Changelog:

  • 18.11.2024 erste Version

Vorwort

Ein Kunde wünschte sich bei Emailbenachrichtigungen von Zabbix das in dieser Email auch gleich die Grafik des letzten Tages und der letzten 7 Tage enthalten sind.
Grafiken für Items abrufen habe ich vor ein paar Jahren schon mal gemacht (z.B. WinZabbixREPORTER.exe), auch mit dem alten Telegram-Skript habe ich mir schon Grafiken zuschicken lassen. Grundsätzlich ist das also möglich und ich habe zugesagt das zu realisieren.
Bei meinen Recherchen für die Lösung bin ich auf dieses Projekt von Mark Oudsen gestoßen: https://github.com/moudsen/mailGraph
Dieses erfüllt eigentlich schon alle Ansprüche und ich habe mich zunächst dagegen entschieden etwas selbst zu programmieren.

Dieser Artikel ist nun im Zuge der Testinstallation von mailGraph entstanden um eine reproduzierbare Anleitung zu erhalten.
Ich muss mailGraph in 3 verschiedenen Konstellationen zum laufen bekommen:

  • Zabbix 6 auf Ubuntu 20.04 und PHP 7.4.3
  • Zabbix 7 auf Ubuntu 22.04 und PHP 8.1.2
  • Zabbix 7 auf Ubuntu 24.04 und PHP 8.3.6

von der Wichtigkeit in dieser Reihenfolge - also fange ich mit Zabbix 6 auf Ubuntu 20.04 an.



Hinweis

Ich arbeite hier als root um mir ständige sudo Eingaben zu ersparen.
Dazu wechsle ich per

sudo -i

dauerhaft in einer SSH-Sitzung zum Benutzer root.
Bei Bedarf wird in der Anleitung in den Kontext eines anderen Benutzers geweschselt, z.B. www-data



mailGraph mit Zabbix 6.0 LTS und Ubuntu 20.04 LTS mit PHP 7.4.3

Postfix installieren und konfigurieren

Den eigentlichen Mailtransport übernimmt Postfix, welchen wir dann so konfigurieren das dieser alle Emails an einen Smarthost (z.B. ein Exchange-Server) weiterleitet. Mailutils brauchen wir zum testen.

apt install postfix mailutils -y

In den nachfolgenden Optionen wählt Ihr dann folgendes (Namen und IP-Adressen ggf. anpassen):

  • Satellitensystem
  • E-Mail-Name des Systems: testzabbix6.znil.local
  • SMTP-Relay-Host: 192.168.128.83

Die IP-Adresse muss dann euer SMTP-Relay bzw. euer Mailserver sein.
Natürlich testen wir einmal ob der Versand funktioniert:

echo "Test Email Body" | mail -s "Testnachricht von testzabbix6" "admin@znil.org"

Wen die Email nicht ankommt, schaut als erstes in den Junk-E-Mail Ordner von Outlook.
Ansonsten könnte ihr mit dem Befehl

mailq

sehen ob Postfix die Email überhaupt losgeworden ist. Ist der Empfänger innerhalb euerer Organisation sollte das eigentlich immer Klappen (vom Jun-E-Mail Ordner mal angesehen).



PHP composer installieren

Der Composer wird benötigt um später verschiedene PHP-Module zu installieren:

apt install composer -y




mailGraph herunterladen und konfigurieren

cd /var/www/html
git clone https://github.com/moudsen/mailGraph mailGraph
chown -R www-data:www-data /var/www
sudo -u www-data /usr/bin/bash
cd mailGraph
mkdir log tmp
composer require phpmailer/phpmailer
composer require twig/twig
cp config/config.json.template.multigraph config/config.json
exit

Ihr solltet jetzt wieder den Eingabeprompt des root haben.



mailGraph per http erreichbar machen

mailGraph wird später per Webhook aufgerufen, also per URL-Aufruf.
In meinen Installationen habe ich die Standardwebseite durch die der Zabbix-Webseite ersetzt.
Wenn ich also die IP-Adresse des Zabbix-Servers im Webbrowser eingebe erscheint die Zabbix-Weboberfläche, auch ohne den Zusatz /zabbix.
Wenn bei euch nur die Standardwebseite des Apache Webservers erscheint, sollte der Zugriff über /mailGraph bereits funktionieren.
Wenn nicht erstellen wir eine Konfiguration (schadet auch nicht das zu tun):

nano /etc/apache2/conf-available/mailGraph.conf

und folgenden Inhalt einfügen:

<IfModule mod_alias.c>
    Alias /mailGraph /var/www/html/mailGraph
</IfModule>

<Directory "/var/www/html/mailGraph">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all

    <IfModule mod_php7.c>
        php_value max_execution_time 300
        php_value memory_limit 128M
        php_value post_max_size 16M
        php_value upload_max_filesize 2M
        php_value max_input_time 300
        php_value max_input_vars 10000
        php_value always_populate_raw_post_data -1
        php_value date.timezone Europe/Berlin
    </IfModule>
</Directory>