SyslogdでSnow Leopardのリモートホストからの着信接続を受け入れるにはどうすればよいですか?
さまざまなデバイスやシステムがログをSnow Leopardのsyslogdに送信するようにログを集中化したいと思います。通常、これはUDP 514でハングアップします。ただし、適切なole syslogdによって正常に受け入れられるようにすることはできません。 Snow Leopardボックスでtcpdumpを実行して、パケットがポート514に噴出されていることを確認しました。 syslogdが514でリッスンしていることを確認しました-そうではありません。
古いバージョンのOSX(OSXでの物事の急激な変化が気に入らない)では、リモートを許可するためにsyslogdデーモンにフラグを追加する必要があるだけだと、グーグルで教えてくれました。 1つはcom.Apple.syslogd.plistでこれを行いました。ただし、syslogdデーモンには、リモートの何かを示唆するフラグが(少なくともそのmanページに)ありません。
これに対する解決策は何ですか?
第二に、インポートは少ないですが関連する質問:「newsyslog」とは何ですか? plistファイルが表示されますが、実行されていません(どうやら)。
ありがとう
私はこれを試していませんが、syslogdのplist(/System/Library/LaunchDaemons/com.Apple.syslogd.plist)を調べて、この部分がコメントアウトされていることを確認しました。
<!--
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>
-->
コメントを削除してから、サービスをリロードします。
$ Sudo launchctl unload /System/Library/LaunchDaemons/com.Apple.syslogd.plist
$ Sudo launchctl load /System/Library/LaunchDaemons/com.Apple.syslogd.plist
そして、あなたはおそらくあなたの道を進んでいます。
2番目の質問への回答-newsyslog
は logrotate に似ています。Linuxシステムでよく見られます。 man newsyslog
(または online )でさらに詳しく説明します。
Snow Leopardとともにインストールされると、plistのこのビットごとにlaunchd
によって30分ごとに実行されます。
<key>StartCalendarInterval</key>
<dict>
<key>Minute</key>
<integer>30</integer>
</dict>
これをSnow LeopardServerマシン(少なくとも10.6.4)で実行しようとしている場合は、 /System/Library/LaunchDaemons/com.Apple.syslogd.plistにコメントアウトされたセクションがないことがわかります(plistファイルはバイナリ形式で保存されています)。
ただし、Dougが上記で引用したキーをコピーして貼り付けるとうまくいきますが、最初にファイルの形式をテキストに変換する必要があります。
Sudo plutil -convert xml1 /System/Library/LaunchDaemons/com.Apple.syslogd.plist
...そしておそらく後でそれを元に戻す必要があります(変換はその場で行われます):
Sudo plutil -convert binary1 /System/Library/LaunchDaemons/com.Apple.syslogd.plist
...次に、Dougの指示に従ってlaunchdデーモンをリロードします。
その後、完全なplistファイルは次のようになります。
<?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>
もう1つ注意してください:私のように、AirMacベースステーション(および/またはTime Capsules)のsyslog出力をサーバーに送信する場合、それらはファシリティ0を使用しますが、これは変更できません。これは、/ etc/syslog.confに次のデフォルトのエントリがあるため、/ var/log/appfirewall.logに自動的に記録されることを意味します。
local0.* /var/log/appfirewall.log
サーバーバージョンのOSでは、ファイル名を安全に次のように変更できます。次のコマンドを発行したら、AirPort.log:
Sudo touch /var/log/AirPort.log
... Appleのアプリケーションファイアウォール(socketfilterfw)はデフォルトでオフになっているため(サーバーではオフのままにしておく必要があります。本当に必要なのはipfwだけです)。別のsyslog機能を使用するようにsocketfilterfwを再構成できるかどうかはわかりません。
Snow Leopardでsyslogdへのネットワークアクセスを有効にするもう1つの方法は、コマンドラインプログラム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
次に、デーモンを再起動します。
Sudo launchctl unload com.Apple.syslogd.plist
Sudo launchctl load com.Apple.syslogd.plist
Lsofを使用して、syslogdが標準のsyslogポート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