Wie kann syslogd von Snow Logard eingehende Verbindungen von Remote-Loggern akzeptieren?

20587
Emmel

Wie bekomme ich, dass syslogd eingehende Verbindungen von Remote-Hosts auf Snow Leopard akzeptiert?

Ich möchte die Protokollierung so zentralisieren, dass verschiedene Geräte und Systeme Protokolle an Snow Leopards syslogd senden, das normalerweise unter UDP 514 hängt. Ich kann sie jedoch nicht dazu bringen, von gutem ole syslogd erfolgreich akzeptiert zu werden. Ich habe in der Snow Leopard-Box getippt, um zu überprüfen, ob Pakete an Port 514 übertragen werden - das sind sie. Ich habe überprüft, dass syslogd auf 514 hört - das ist nicht der Fall.

Googling herum erzählte mir, dass man in älteren Versionen von OSX (man liebt nicht die Art und Weise, wie sich Dinge unter OSX so schnell ändern), man nur dem syslogd-Daemon ein Flag hinzufügen muss, um remote zuzulassen. man tat dies in com.apple.syslogd.plist. Der syslogd-Daemon hat jedoch (zumindest in seiner Manpage) keine Flags, die auf etwas entferntes hinweisen.

Was ist die Lösung dafür?

Sekundäre, weniger wichtige, aber relevante Frage: Was ist "NewsSyslog"? Ich sehe eine plist-Datei, die aber nicht läuft (anscheinend).

Vielen Dank

10
Anyone know the answer? I have a penchant for asking unanswered questions. Emmel vor 14 Jahren 0

3 Antworten auf die Frage

11
Joe Carroll

Wenn Sie versuchen, dies auf einem Snow Leopard Server- Computer (zumindest mit 10.6.4) auszuführen, werden Sie feststellen, dass in /System/Library/LaunchDaemons/com.apple.syslogd kein Abschnitt mit Kommentaren vorhanden ist .plist (und dass die plist-Datei in einem binären Format gespeichert ist).

Das Kopieren und Einfügen des von Doug oben zitierten Schlüssels führt jedoch dazu, obwohl Sie zuerst das Format der Datei in Text konvertieren müssen:

sudo plutil -convert xml1 /System/Library/LaunchDaemons/com.apple.syslogd.plist 

... und Sie sollten es wahrscheinlich nachträglich umwandeln (Konvertierungen finden in situ statt):

sudo plutil -convert binary1 /System/Library/LaunchDaemons/com.apple.syslogd.plist 

... und dann den launchd-Daemon gemäß den Anweisungen von Doug neu laden.

Danach sollte die vollständige Plist-Datei wie folgt lauten:

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>EnableTransactions</key> <true/> <key>HopefullyExitsLast</key> <true/> <key>Label</key> <string>com.apple.syslogd</string> <key>MachServices</key> <dict> <key>com.apple.system.logger</key> <true/> </dict> <key>OnDemand</key> <false/> <key>ProgramArguments</key> <array> <string>/usr/sbin/syslogd</string> </array> <key>Sockets</key> <dict> <key>AppleSystemLogger</key> <dict> <key>SockPathMode</key> <integer>438</integer> <key>SockPathName</key> <string>/var/run/asl_input</string> </dict> <key>BSDSystemLogger</key> <dict> <key>SockPathMode</key> <integer>438</integer> <key>SockPathName</key> <string>/var/run/syslog</string> <key>SockType</key> <string>dgram</string> </dict> <key>NetworkListener</key> <dict> <key>SockServiceName</key> <string>syslog</string> <key>SockType</key> <string>dgram</string> </dict> </dict> </dict> </plist> 

Noch eine Anmerkung: Wenn Sie wie ich die Syslog-Ausgänge Ihrer AirPort-Basisstationen (und / oder Time Capsules) an Ihren Server senden möchten, verwenden sie die Funktion 0, die nicht geändert werden kann . Dies bedeutet, dass sie aufgrund des folgenden Standardeintrags in /etc/syslog.conf automatisch in /var/log/appfirewall.log protokolliert werden:

local0.* /var/log/appfirewall.log 

In der Serverversion des Betriebssystems können Sie den Dateinamen sicher in AirPort.log ändern, wenn Sie den folgenden Befehl ausgegeben haben:

sudo touch /var/log/AirPort.log 

... da Apples Application Firewall (socketfilterfw) standardmäßig deaktiviert ist (und auf einem Server ausgeschaltet bleiben sollte - ipfw ist alles, was Sie wirklich wollen). Ich bin mir nicht sicher, ob es möglich ist, socketfilterfw für die Verwendung einer anderen Syslog-Einrichtung neu zu konfigurieren.

Genau das, wonach ich gesucht habe, perfekte Antwort! deceze vor 13 Jahren 1
Getestet am 10.6.7 und funktioniert gut. Vielen Dank! Alexandre L Telles vor 13 Jahren 0
Genau das habe ich versucht! Holen Sie sich also meine 4 AEBSs, um sich bei meinem Xserve mit SLS anzumelden. Sehr geschätzt! Dennis Wurster vor 13 Jahren 0
Normalerweise füge ich -udp_in arg hinzu, damit ich an einem ps-Befehl erkennen kann, ob ich ihn als Remote-Listener ausgeführt habe. `ProgrammArgumente / usr / sbin / syslogd -udp_in ` tgunr vor 11 Jahren 0
Diese Anweisungen funktionieren gut für Mountain Lion (nicht Server) Nelson vor 11 Jahren 0
5
aid

Eine andere Methode, um den Netzwerkzugriff auf syslogd auf Snow Leopard zu ermöglichen, ist das Befehlszeilenprogramm PlistBuddy.

sudo /usr/libexec/PlistBuddy /System/Library/LaunchDaemons/com.apple.syslogd.plist add :Sockets:NetworkListener dict add :Sockets:NetworkListener:SockServiceName string syslog add :Sockets:NetworkListener:SockType string dgram save quit 

Und dann den Daemon neu starten,

sudo launchctl unload com.apple.syslogd.plist  sudo launchctl load com.apple.syslogd.plist  

Sie können lsof verwenden, um zu überprüfen, ob syslogd jetzt den standardmäßigen syslog-Port überwacht, 514.

$ sudo lsof -i:514 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME launchd 1 root 44u IPv6 0x0e459370 0t0 UDP *:syslog launchd 1 root 56u IPv4 0x0f7a9ef0 0t0 UDP *:syslog syslogd 24319 root 5u IPv6 0x0e459370 0t0 UDP *:syslog syslogd 24319 root 6u IPv4 0x0f7a9ef0 0t0 UDP *:syslog 
Diese Lösung scheint auch in Yosemite zu funktionieren. Vielen Dank. Steve Powell vor 9 Jahren 0
4
Doug Harris

Ich habe das nicht versucht, aber ich habe in der Liste nach syslogd (/System/Library/LaunchDaemons/com.apple.syslogd.plist) gesucht und diesen Teil auskommentiert sehen:

<!-- Un-comment the following lines to enable the network syslog protocol listener. --> <!-- <key>NetworkListener</key> <dict> <key>SockServiceName</key> <string>syslog</string> <key>SockType</key> <string>dgram</string> </dict> --> 

Entfernen Sie die Kommentare und laden Sie den Dienst erneut:

$ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist $ sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist 

und du bist wahrscheinlich auf dem Weg.


Antwort auf Ihre Sekundärfrage - newsyslogähnelt dem von Linux-Systemen häufig anzutreffenden Logrotat . man newsyslog(oder online ) sagt Ihnen mehr.

Wie bei Snow Leopard installiert, wird es alle 30 Minuten von launchddiesem Bit in seiner Liste ausgeführt:

<key>StartCalendarInterval</key> <dict> <key>Minute</key> <integer>30</integer> </dict> 
Genial! Das ist genau die Antwort, nach der ich gesucht habe. Ich habe es gerade getestet und ja bestätigt, dass es funktioniert. Danke, Doug. Emmel vor 14 Jahren 0