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


11

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

ありがとう


誰かが答えを知っていますか?私は未回答の質問をするのが好きです。
Emmel

回答:


5

私はこれを試していませんが、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番目の質問への回答-Linuxシステムでよく見られるlogrotateにnewsyslog似ていますman newsyslog(またはオンライン)はあなたにもっと教えます。

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

<key>StartCalendarInterval</key>
<dict>
    <key>Minute</key>
    <integer>30</integer>
</dict>

驚くばかり!それがまさに私が探していた答えです。私はそれをテストしました、そしてはい、それが機能することを確認しました。ありがとう、ダグ。
Emmel

11

あなたが上でこれを実行しようとしている場合は、そのノートのSnow Leopard Serverの(少なくとも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つ注意点:私のように、AirPortベースステーション(または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を再構成できるかどうかはわかりません。


1
私が探していたもの、完璧な答え!
2010年

10.6.7でテストされ、正常に動作します。ありがとう!
アレクサンドルLテルズ

これはまさに私がやろうとしていたことです!つまり、4つのAEBSを取得して、SLSを実行しているXserveにログを記録します。大変感謝いたします!
Dennis Wurster、2011

通常、-udp_in引数を追加して、psコマンドからリモートリスナーとして実行しているかどうかを確認できるようにします。<key>ProgramArguments</key> <array> <string>/usr/sbin/syslogd</string> <string>-udp_in</string> </array>
tgunr 2012年

これらの手順は、Mountain Lion(サーバーではない)で正常に機能します
Nelson

6

Snow Leopardでsyslogdへのネットワークアクセスを有効にする別の方法は、コマンドラインプログラム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

このソリューションはヨセミテでも機能するようです。ありがとうございました。
Steve Powell
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.