Apple Mac OS X als syslog server

Hier is een korte howto die je helpt je Mac OS X machine logs te ontvangen van apparaten, zoals de Apple Airport Extreme. Er zijn wat howto's online te vinden, maar ik denk dat er wat verandert is sinds Mac OS X 10.5, dus die howto's werken niet perfect.

Verander de syslogd configuratie

# echo "local0.notice /var/log/airport.log" >> /etc/syslog.conf

Touch het logfile

# touch /var/log/airport.log

Verander de syslogd startup procedure

Aan het einde van het file, uncomment het gedeelte dat remote logging accepteert.

# cat /System/Library/LaunchDaemons/com.apple.syslogd.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.apple.syslogd</string>
    <key>OnDemand</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
<!--
Un-comment the following lines to run syslogd with a sandbox profile.
Sandbox profiles restrict processes from performing unauthorized
operations; so it may be necessary to update the profile
(/usr/share/sandbox/syslogd.sb) if any changes are made to the syslog
configuration (/etc/syslog.conf).
-->
<!--
<string>/usr/bin/sandbox-exec</string>
<string>-f</string>
<string>/usr/share/sandbox/syslogd.sb</string>
-->
<string>/usr/sbin/syslogd</string>
    </array>
<key>MachServices</key>
<dict>
<key>com.apple.system.logger</key>
<true/>
</dict>
<key>Sockets</key>
<dict>
<key>AppleSystemLogger</key>
<dict>
<key>SockPathName</key>
<string>/var/run/asl_input</string>
<key>SockPathMode</key>
<integer>438</integer>
</dict>
<key>BSDSystemLogger</key>
<dict>
<key>SockPathName</key>
<string>/var/run/syslog</string>
<key>SockType</key>
<string>dgram</string>
<key>SockPathMode</key>
<integer>438</integer>
</dict>
<!--
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>
</dict>
</dict>
</plist>

Herstart syslogd

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

Open de firewall

Ga naar de System Preferences, klik Security, open het Firewall tabje en klik de +. Selecteer het file /usr/bin/syslog.
Als je niet in staat bent om /usr te openen, kun je deze hack proberen in de terminal:

$ cd
$ ln -s /usr/bin
$ ln -s /usr/sbin

Nu staan de files in je homedirectory ./bin/syslog en ./sbin/syslogd

Configureer de apparaten

Vertel nu aan alle apparaten waarvan je logs wilt zien (zoals de Apple Airport Extreme) dat ze de logs kunnen dumpen op het IP adres van je Mac OS X machine.

Bekijk het resultaat

Je kunt de applicatie "Console" openen of vanaf een terminal dit commando draaien: "tail -f /var/log/airport.log".