Syslog senden

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

Windows Eventlog zu SYSLOG

Auf der Seite NTSyslog habe ich am Beispiel einer Freeware 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.

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-Meldung per .NET versenden

Wenn Sie nun selbst mit dem .NET Framework Software entwickeln, dann schreiben Sie natürlich primär Fehler in das Eventlog und überlassen es anderen Programmen, um diese entsprechend weiter zu melden. 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.

Syslog per PowerShell senden

Wenn sie sich den .NET-Code anschauen, dann ist es nur ein kurzer Schritt um das ganze in PowerShell umzusetzen

[string]$sysloghost = "1.2.3.4"
[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

Weitere Links