Wie aktivieren Sie syslogd eingehende Verbindungen auf Snow Leopard von Remote-Loggern zu akzeptieren?

Wie kann ich syslogd dazu bringen, eingehende Verbindungen von Remote-Hosts auf Snow Leopard zu akzeptieren?

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

Googeln sagte mir, dass man bei älteren Versionen von OSX (liebst du nicht die Art und Weise, wie sich die Dinge unter OSX so schnell ändern) dem Syslogd-Daemon nur ein Flag hinzufügen musste, um Remote zuzulassen; man tat dies in com.Apfel.syslogd.plist. Der Syslogd-Daemon verfügt jedoch über keine Flags (zumindest auf seiner Manpage), die auf Remote-Aktionen hindeuten.

Was ist die Lösung?

Sekundäre, weniger wichtige, aber relevante Frage: Was ist 'newsyslog'? Ich sehe eine plist-Datei, sondern es läuft nicht (anscheinend).

Danke

Author: Emmel, 2010-04-16

3 answers

Ich habe das nicht versucht, aber ich habe in der Plist nach syslogd (/System/Library/LaunchDaemons/com.Apfel.syslogd.plist) und siehe diesen Teil auskommentiert:

<!--
        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 dann den Dienst neu:

$ 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äre Frage - newsyslog ist ähnlich wie logrotate oft auf Linux-Systemen gefunden. man newsyslog (oder online) erfahren Sie mehr.

Wie mit Snow Leopard installiert, ist es führen Sie alle 30 Minuten von launchd pro diesem Bit in seiner plist:

<key>StartCalendarInterval</key>
<dict>
    <key>Minute</key>
    <integer>30</integer>
</dict>
 5
Author: Doug Harris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-04-27 18:58:14

Beachten Sie, dass, wenn Sie versuchen, dies auf einem Snow Leopard Server zu tun maschine (zumindest mit 10.6.4), werden Sie feststellen, dass es keinen auskommentierten Abschnitt in /System/Library/LaunchDaemons/com.Apfel.syslogd.plist (und dass die plist-Datei in einem Binärformat gespeichert ist).

Das Kopieren und Einfügen des Schlüssels, den Doug oben zitiert hat, macht jedoch den Trick, obwohl Sie zuerst das Format der Datei in Text konvertieren müssen:

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

...und du solltest konvertieren Sie es wahrscheinlich danach zurück (Konvertierungen finden in situ statt):

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

...laden Sie dann den Launchd-Daemon gemäß Dougs Anweisungen neu.

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 ein Hinweis: Wenn Sie wie ich die Syslog-Ausgaben Ihrer Flughafenbasisstationen (und/oder Zeitkapseln) an Ihren Server senden möchten, verwenden sie die Werte 0, , die nicht geändert werden können. Dies bedeutet, dass sie automatisch bei /var/log/appfirewall angemeldet werden.log wegen des folgenden Standardeintrags in /etc / syslog.conf:

local0.*                                               /var/log/appfirewall.log

Auf der Serverversion des Betriebssystems können Sie den Dateinamen sicher in z. B. AirPort ändern.melden Sie sich an, sobald Sie den folgenden Befehl ausgegeben haben:

sudo touch /var/log/AirPort.log

...da Apples Anwendungsfirewall (socketfilterfw) standardmäßig deaktiviert ist (und auf einem Server deaktiviert bleiben sollte-ipfw ist alles, was Sie wirklich wollen). Ich bin mir nicht sicher, ob es möglich ist, socketfilterfw neu zu konfigurieren, um eine andere Syslog-Funktion zu verwenden.

 11
Author: Joe Carroll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-08-19 08:53:53

Eine andere Methode zum Aktivieren des Netzwerkzugriffs auf Syslogd auf Snow Leopard ist die Verwendung des Befehlszeilenprogramms 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 Standard-Syslog-Port 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
 6
Author: aid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-06-23 16:55:58