Grafana-Visualisierung eines Syslog-Servers…
Einleitung
Zur Überwachung meiner diversen Server, Raspberrys und Netzwerkspeicher möchte ich gerne auch mal hin und wieder ins Log gucken. Ich verwende dafür meinen Raspberry PI4B mit Raspian OS Lite.
Die Datenreihenfolge sieht folgendermaßen aus:
Client (z.B. NAS) -> Raspberry
ProtokollCenter -> rsyslog -> telegraf -> influxdb -> grafana
192.168.2.10 -> 192.168.2.5
Ich nutze hier UDP-Verbindungen.
Vorbereitungen
Wir benötigen auf der „Zielmaschine“, also dem System welches die Logs empfangen soll eine Influx-DB und Telegraf:
# erstmal alles auf aktuellen Stand bringen
sudo apt update
sudo apt upgrade
# InfluxDB installieren (wenn noch nicht vorhanden)
sudo apt install influxdb
# Telegraf installieren (Aktuelle Version als armhf hier: https://github.com/influxdata/telegraf/releases)
wget https://dl.influxdata.com/telegraf/releases/telegraf_1.21.2-1_armhf.deb
sudo dpkg -i telegraf_1.21.2-1_armhf.deb
# Dienste starten
sudo systemctl enable telegraf
sudo systemctl start telegraf
Fürs empfangen der Daten (auch von diesem Host natürlich) benötigen wir rsyslog:
# Installieren
sudo apt install rsyslog rsyslog-relp
# Dienst starten
sudo systemctl enable rsyslog
sudo systemctl start rsyslog
Syslog-Empfänger konfigurieren: Ich lasse Verbindungen vom Localhost sowie aus meinem Netzwerkbereich x.x.2.0/24 (also 192.168.2.0 – 192.168.2.255) zu.
sudo nano /etc/rsyslog.conf
## START ab hier folgendes hinzufügen:
# Folgende Verbindungen akzeptieren:
$AllowSender UDP, 127.0.0.1, xxx.xxx.2.0/24
# Log-Files anlegen nach folgendem Muster
$template Incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
# Alles > notice loggen, alles drunter braucht man selten, sonst hier einfach auf "*.*" ändern
*.notice ?Incoming-logs
## ENDE hinzufügen
Lokale Logs ebenfalls an Telegraf senden (wir sind immer noch auf der Host-Maschine):
sudo nano /etc/rsyslog.d/50-telegraf.conf
## START ab hier folgendes hinzufügen:
$ActionQueueType LinkedList # Art des Puffers
$ActionQueueFileName srvrfwd # Dateiname setzen (startet gleichzeitig den Puffermodus)
$ActionResumeRetryCount 4 # Anzahl Wiederholungen
$ActionQueueSaveOnShutdown on # Intern puffern wenn Syslog nicht verfügbar
# UDP über Port 6514
# Alles > notice loggen, alles drunter braucht man selten, sonst hier einfach auf "*.*" ändern
*.notice @127.0.0.1:6514;RSYSLOG_SyslogProtocol23Format
## ENDE hinzufügen
sudo systemctl restart rsyslog
Telegraf (als Empfänger der Daten) konfigurieren:
sudo nano /etc/telegraf/telegraf.conf
## START Unten anfügen oder intern anpassen:
[[inputs.syslog]]
server = "udp://:6514"
[[outputs.influxdb]]
urls = ["http://127.0.0.1:8086"]
# database = Datenbank Sofern gewünscht
# username = Benutzername Sofern gewünscht
# password = Passwort Sofern gewünscht
## ENDE anpassen
sudo systemctl enable telegraf
sudo systemctl start telegraf
Jetzt sollten schon die ersten Meldungen ankommen.
weitere Clients anbinden
Synology-NAS
In meinen Synology-NAS muss man einfach das Paket „Protokoll-Center“ installieren und kann dort unter „Protokoll senden“ die entsprechenden Daten eintragen: IP, UDP, Port (6514 in unserem Fall). Den Protokollfilter hab ich auf Warning, Error gesetzt da ganz schön viele Info-Meldungen reinkommen, aber das muss man selber wissen.
Linux-Clients
sudo nano /etc/rsyslog.conf
# START ab hier folgendes hinzufügen:
# Logs per UDP (Port 6514) an den Host senden
# Alles > notice loggen, alles drunter braucht man selten, sonst hier einfach auf "*.*" ändern
*.notice @192.168.2.5:6514
# Intern puffern wenn Host down ist
$ActionQueueFileName queue # warteschlange
$ActionQueueMaxDiskSpace 1g # 1GB
$ActionQueueSaveOnShutdown on # speichern
$ActionQueueType LinkedList # als LinkedList
$ActionResumeRetryCount -1 # unendlich lange versuchen
# ENDE hinzufügen
sudo systemctl restart rsyslog
Grafana
Mein Dashboard findet ihr hier:

https://grafana.com/grafana/dashboards/15644
Security Level
Die Level sind in RFC 5424 definiert. Wählt man bei der Config ein Level aus sind die darüber (kleinere Code-Nummer) automatisch mit drin, man definiert also das mindeste was gesendet werden soll.
Code | Rsyslog | Severity |
---|---|---|
0 | emerg, panic | Emergency: system is unusable |
1 | alert | Alert: action must be taken immediately |
2 | crit | Critical: critical conditions |
3 | err, error | Error: error conditions |
4 | warning, warn | Warning: warning conditions |
5 | notice | Notice: normal but significant condition |
6 | info | Informational: informational messages |
7 | debug | Debug: debug-level messages |
Schreibe einen Kommentar