Snow Leopard の syslogd で、UDPポートでLISTENしてリモートからのログを受け取る設定

結論から言うと http://forum.soft32.com/mac/Syslogd-10-enabling-UDP-listening-514-ftopict113994.html の手順が正解です。

Googleで調べた感じだとLeopard用の設定方法が散見されます。が、Snow Leopard では動かないようでした。同様の問題で困ってる人は下記の内容がヘルプになるかと思います。

調べた内容

  • 「com.apple.syslogd.plist で 起動オプションに -u を渡せばok」みたいな情報あるけど
  • ↑の英語フォーラムには NetworkListener のセクションをコメントアウトすればよいとあるけど、そのセクションが見つからない
    • XML形式の.plistに書かれたコメントアウト部分は、plutilで xml <-> バイナリ のフォーマット変換をかける際に消えてしまう仕様の様子
  • 手動で com.apple.syslogd.plist に NetworkListener 以下のセクションを追加するとよい
<key>NetworkListener</key> 
<dict> 
<key>SockServiceName</key> 
<string>syslog</string> 
<key>SockType</key> 
<string>dgram</string> 
</dict> 

反映させる手順

# バイナリの.plistXMLに変換。(バイナリのままいじれるエディタあるけどね)
$ sudo plutil -convert xml1 /System/Library/LaunchDaemons/com.apple.syslogd.plist

# 編集せずにgistに貼ったソースで上書きしてもよいです
$ sudo vi /System/Library/LaunchDaemons/com.apple.syslogd.plist


# 構文ミスが無いか確認
$ plutil -lint /System/Library/LaunchDaemons/com.apple.syslogd.plist


# バイナリの.plistに戻す ( XMLのままでも構わない )
$ sudo plutil -convert binary1 /System/Library/LaunchDaemons/com.apple.syslogd.plist


# 設定を反映させてsyslogd 再起動
 $ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
 $ sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist

$ sudo launchctl stop com.apple.syslogd
$ sudo launchctl start com.apple.syslogd

最後に netstat や lsof 等で 514番ポートでLISTENしているかどうかを確認しましょう。/etc/syslog.conf の確認も忘れずに。

なお http://www.opensource.apple.com/source/syslog/syslog-69.0.3/syslogd.tproj/com.apple.syslogd.plist に.plistファイルのオリジナルのソースが置いてあります

後日談

家のMacbook Proで 無線ルーターからのsyslogを受け取って遊んでいます