Server Monitoring Ergebnis in MS-Teams einfügen
Das Problem
Die Ausgaben von Server-Monitoring-Tools lassen sich oft nicht direkt in MS-Teams als formatierte Tabelle einfügen.
Markdown-Tabellen werden als Code-Block dargestellt, HTML wird nicht immer korrekt interpretiert.
Die Lösung: CSV mit Semikolon
1. Skript ausführen
# Monitoring Skript ausführen
CONFIG_FILE=~/Scripte/monitor-servers.cfg MAILTO=admin@firma.de ~/Scripte/monitor.sh > monitor-output.txt
2. In CSV konvertieren
~/Scripte/log2csv.sh < monitor-output.txt > server-status.csv
3. In LibreOffice Calc importieren
- Datei
server-status.csvöffnen - Trennoptionen wählen:
- Trennzeichen: Semikolon (
;) - bewusst nicht Komma, sonst bricht9,7Gi/19Gifalsch um - Zeichensatz: UTF-8 (wichtig wegen
→Zeichen)
- Trennzeichen: Semikolon (
- Alle Daten markieren → Strg+C
4. In MS-Teams einfügen
Einfach Strg+V - die Tabelle erscheint formatiert mit allen Spalten.
Beispiel-Daten (anonymisiert)
server-status.csv:
Server;Uptime;Disk;Memory;Updates;Hinweise
web01.example.com;45 Tage;22G 25% free;9.8Gi/19Gi;13 Pakete;
db01.example.com;1004 Tage;881G 52% free;265Gi/313Gi;keine;"*** ALERT: Uptime 1004 Tage (>90) - DRINGEND REBOOTEN!\nNOTIZ: SAP-System → 2. Person muss online sein!"
pbs01.example.com;390 Tage;188G 4% free;9.0Gi/15Gi;56 Pakete;"*** ALERT: Uptime 390 Tage (>90) - DRINGEND REBOOTEN!"
Warum Semikolon?
| Problem | Lösung | Grund |
|---|---|---|
9,7Gi/19Gi bricht um |
Semikolon als Trennzeichen | Komma in Werten würde falsch interpretiert werden |
| Mehrere Hinweise | Zeilenumbruch in einer Zelle | Alert + NOTIZ in einer Zelle mit \n |
| UTF-8 Zeichen | UTF-8 Zeichensatz wählen | → Symbol muss korrekt dargestellt werden |
Alternative: HTML
Falls CSV nicht funktioniert, kann auch HTML verwendet werden:
~/Scripte/log2html.sh < monitor-output.txt > status.html
xdg-open status.html
Allerdings ist CSV zuverlässiger für MS-Teams und funktioniert immer.
Skripte Übersicht
| Skript | Zweck |
|---|---|
~/Scripte/monitor.sh |
Hauptmonitoring-Skript (Linux/Windows) |
~/Scripte/log2csv.sh |
Konvertiert in CSV mit Semikolon |
~/Scripte/log2html.sh |
Konvertiert in HTML-Tabelle |
~/Scripte/log2md.sh |
Konvertiert in Markdown-Tabelle |
~/Scripte/log2tsv.sh |
Konvertiert in TSV (Tab-separated) |
Crontab Beispiel
# Donnerstags 8 Uhr ausführen
0 8 * * 4 CONFIG_FILE=/root/Scripte/monitor-servers.cfg MAILTO=admin@firma.de /root/Scripte/monitor.sh > /tmp/monitor-output.txt 2>&1
Dann manuell oder mit einem zweiten Cron-Job konvertieren und versenden.
Windows-Server Hinweis
Für Windows-Server wird PowerShell verwendet:
- Uptime:
(Get-CimInstance Win32_OperatingSystem).LastBootUpTime - Disk:
Get-PSDrive C | Select-Object Free(GB), Used(GB) - Memory:
Get-CimInstance Win32_OperatingSystem | Select-Object FreePhysicalMemory, TotalVisibleMemorySize
Die Erkennung erfolgt automatisch über /etc/os-release (Linux) oder PowerShell-Befehle (Windows).
Getestet mit LibreOffice 7.x und MS-Teams Desktop Client