Syslog senden

Wenn Sie irgendwo einen Syslog Server aufgebaut haben, können Sie nun auf den verschiedensten Clients den Versand an diesen Server einrichten.

Syslog per PowerShell senden

Ein sehr einfacher Weg ist ein Test per Powershell. Ich sende einfach eine ganz triivale Zeile ohne weitere Details per 514/UDP an den SYSLOG_Server

param (
   [string]$sysloghost = "192.168.1.2"
   [string]$syslogmesage = "Meldung an Syslog"
)
 
$udpclient = New-Object system.net.sockets.udpclient($sysloghost,514)
$rawmessage = [System.Text.Encoding]::ASCII.GetBytes($syslogmesage)
$udpclient.send($rawmessage, $rawmessage.length)
$udpclient.close()
$udpclient = $null

Es ist schon erstaunlich, wie leistungsfähig in PowerShell mal eben schnell ein Syslog-Sender geschrieben werden. Noch faszinierender ist, dass man sogar einen einfachen Syslog-Server in PowerShell schreiben kann.

Syslog-Meldung per .NET versenden

Wer lieber "Managed Code" in C++ schreibt, hat es auch nicht schwerer. Um zu zeigen, die einfach es aber ist, aus .NET einfach eine Meldung an einen SYSLOG-Server zu senden, habe ich hier einen Codeschnipsel aus Der Webseite von Glen Scales extrahiert (http://gsexdev.blogspot.com/2005/06/syslogging-message-tracking-logs-on.html).

void sendsyslog(string mtMessagetxt,string iaIpaddress, int spPriority){

   udpClient ucUdpclient = new udpClient(iaIpaddress, 514);
   byte[] rawMsg;
   string strParams = System.String.Format("<{0}>{1}",spPriority, mtMessagetxt);
   rawMsg = System.Text.Encoding.ASCII.GetBytes(string.Concat(strParams));
   ucUdpclient.Send(rawMsg, rawMsg.Length);
   ucUdpclient.Close();
   ucUdpclient=null;
}

So langsam kann man sich wirklich an .NET gewöhnen, da das Framework viele Aktionen doch sehr einfach macht.

Windows Eventlog zu SYSLOG

Viele Windows-Programme nutzen das lokale Eventlog zur Ablage von Meldungen. Diese Logs können über das Netzwerk angefragt aber auch weiter gegeben werden. Wer aber eine etablierte SYSLOG-Umgebung hat, kann mit verschiedenen Tools auch die Eventlogs auslesen und weiterleiten lassen. Auf der Seite NTSyslog habe ich gezeigt, wie Sie Meldungen aus dem lokalen Eventlog per SYSLOG an einen beliebigen SYSLOG-Server versenden können. Natürlich gibt es noch weitere Programme und Tools.

Devices und SYSLOG

Der Versand von Meldungen per Syslog ist aber in anderen Umgebungen sehr viel häufiger. Ein paar Beispiele

  • Router und Switches
    Fast jeder Router oder Switch kann Vorgänge per SYSLOG versenden, z.B.: wenn sich ein Benutzer auf der Console anmeldet, wenn sich der Status eines Link verändert etc.
  • VPN-Knoten, Firewalls
    VPN-Knoten können über SYSLOG jeden Anmeldevorgang protokollieren während Firewalls z.B. Einbruchsversuche weitergeben können.
  • VoIP Gateways
    Am Beispiel eines Audiocodes Mediant 1000 können Sie auch gut erkennen, dass das zentrale Einsammeln von Systemmeldungen z.B. für die Erfassung von Verbindungsdaten sehr effektiv sein kann.
  • Drucker
    Auch scheinbar "dumme" Geräte haben heute einen direkte Netzwerkanschluss und können Statusmeldungen (z.B. Toner fast leer, Fach offen) etc. melden
  • UNIX-Systeme
    Fast jeder Prozess auf einem Unix-System kann Meldungen per SYSLOG versenden. Viele kleinere Systeme senden die Meldungen auf den SyslogD auf "localhost", um die Logs dann einfach lokal zu behalten.
  • Telefonanlagen
    Hier könnte der klassische "Verbindungsnachweis" gemeldet werden.

Zum Testen eines Syslog Servers und dessen Reaktionen können folgende beiden Testprogramme gute Dienste tun.

In die Gegenrichtung geht es natürlich auch

Syslog und IoT

Auch wenn hier MQTT das dominante Protokoll zur Meldung von Werten und Steuerung ist, nutze ich dennoch gerne Syslog für Debug-Ausgaben. Entsprechend gibt es auch Libraries und Code für ESP8266, ESP32, Arduino und Clone

Weitere Links