web-dev-qa-db-ja.com

syslogdを有効にして、リモートロガーからSnow Leopardへの着信接続を受け入れるにはどうすればよいですか?

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ファイルが表示されますが、実行されていません(どうやら)。

ありがとう

11
Emmel

私はこれを試していませんが、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番目の質問への回答-newsysloglogrotate に似ています。Linuxシステムでよく見られます。 man newsyslog(または online )でさらに詳しく説明します。

Snow Leopardとともにインストールされると、plistのこのビットごとにlaunchdによって30分ごとに実行されます。

<key>StartCalendarInterval</key>
<dict>
    <key>Minute</key>
    <integer>30</integer>
</dict>
5
Doug Harris

これを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を再構成できるかどうかはわかりません。

11
Joe Carroll

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
6
aid