Bagaimana Anda mengaktifkan syslogd untuk menerima koneksi masuk di Snow Leopard dari penebang jarak jauh?

11

Bagaimana cara mendapatkan syslogd untuk menerima koneksi masuk dari host jarak jauh di Snow Leopard?

Saya ingin memusatkan pencatatan sedemikian rupa sehingga berbagai perangkat dan sistem mengirim log ke syslogd Snow Leopard, yang biasanya hang out di UDP 514. Namun, saya tidak bisa membuatnya berhasil diterima oleh syslogd ole baik. Saya tcpdumped pada kotak Snow Leopard untuk memverifikasi bahwa paket-paket sedang dicairkan ke port 514 - mereka. Saya memeriksa apakah syslogd mendengarkan pada 514 - tidak.

Googling sekitar mengatakan kepada saya bahwa, pada versi OSX yang lebih lama (jangan Anda suka cara perubahan begitu cepat pada OSX), orang hanya perlu menambahkan bendera ke daemon syslogd untuk memungkinkan remote; satu melakukan ini di com.apple.syslogd.plist. Namun daemon syslogd tidak memiliki flag (setidaknya di halaman manualnya) yang menunjukkan segala sesuatu yang jauh.

Apa solusinya?

Pertanyaan sekunder, kurang impor tetapi relevan: Apa itu 'newsyslog'? Saya melihat file plist tetapi tidak berjalan (ternyata).

Terima kasih

Emmel
sumber
Adakah yang tahu jawabannya? Saya memiliki kecenderungan untuk mengajukan pertanyaan yang tidak dijawab.
Emmel

Jawaban:

5

Saya belum mencoba ini, tetapi saya mencari di plist untuk syslogd (/System/Library/LaunchDaemons/com.apple.syslogd.plist) dan melihat bagian ini berkomentar:

<!--
        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>
-->

Hapus komentar dan muat ulang layanan:

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

dan Anda kemungkinan sedang dalam perjalanan.


Jawaban untuk pertanyaan sekunder Anda - newsyslogmirip dengan logrotate yang sering ditemukan pada sistem linux. man newsyslog(atau online ) akan memberi tahu Anda lebih banyak.

Sebagaimana diinstal dengan Snow Leopard, ia dijalankan setiap 30 menit dengan launchdper bit ini dalam daftarnya:

<key>StartCalendarInterval</key>
<dict>
    <key>Minute</key>
    <integer>30</integer>
</dict>
Doug Harris
sumber
Luar biasa! Itulah jawaban yang saya cari. Saya baru saja mengujinya dan ya, menegaskan itu berhasil. Terima kasih, Doug.
Emmel
11

Perhatikan bahwa jika Anda mencoba melakukan ini pada mesin Snow Leopard Server (setidaknya dengan 10.6.4), Anda akan menemukan bahwa tidak ada bagian komentar-out di /System/Library/LaunchDaemons/com.apple.syslogd .plist (dan file plist disimpan dalam format biner).

Namun, menyalin dan menempelkan kunci yang dikutip Doug di atas akan melakukan trik, meskipun pertama-tama Anda perlu mengonversi format file menjadi teks:

sudo plutil -convert xml1 /System/Library/LaunchDaemons/com.apple.syslogd.plist

... dan Anda mungkin harus mengubahnya kembali setelah itu (konversi terjadi di tempat):

sudo plutil -convert binary1 /System/Library/LaunchDaemons/com.apple.syslogd.plist

... lalu muat ulang daemon launchd sesuai instruksi Doug.

Setelah itu file plist lengkap harus dibaca sebagai berikut:

    <?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>

Satu catatan lagi: jika, seperti saya, Anda ingin mengirim output syslog stasiun pangkalan AirPort Anda (dan / atau Kapsul Waktu) ke server Anda, mereka menggunakan fasilitas 0, yang tidak dapat diubah . Ini berarti bahwa mereka akan secara otomatis masuk ke /var/log/appfirewall.log karena entri default berikut di /etc/syslog.conf:

local0.*                                               /var/log/appfirewall.log

Pada versi Server OS, Anda dapat dengan aman mengubah nama file menjadi mis. AirPort.log setelah Anda mengeluarkan perintah berikut:

sudo touch /var/log/AirPort.log

... karena Firewall Aplikasi Apple (socketfilterfw) dinonaktifkan secara default (dan harus tetap tidak aktif di server — ipfw adalah yang Anda inginkan). Saya tidak yakin apakah mungkin mengkonfigurasi ulang socketfilterfw untuk menggunakan fasilitas syslog yang berbeda.

Joe Carroll
sumber
1
Apa yang saya cari, jawaban sempurna!
menipu
Diuji pada 10.6.7 dan berfungsi dengan baik. Terima kasih!
Alexandre L Telles
Ini persis apa yang saya coba lakukan! Yaitu, dapatkan 4 AEBSs saya untuk masuk ke Xserve saya yang menjalankan SLS. Sangat dihargai!
Dennis Wurster
Saya biasanya menambahkan argumen -udp_in sehingga saya bisa tahu dari perintah ps jika saya menjalankannya sebagai pendengar jarak jauh. <key>ProgramArguments</key> <array> <string>/usr/sbin/syslogd</string> <string>-udp_in</string> </array>
tgunr
Instruksi ini berfungsi dengan baik di Mountain Lion (bukan server)
Nelson
6

Metode lain untuk mengaktifkan akses jaringan ke syslogd di Snow Leopard menggunakan program baris perintah 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

Dan kemudian restart daemon,

sudo launchctl unload com.apple.syslogd.plist 
sudo launchctl load com.apple.syslogd.plist 

Anda dapat menggunakan lsof untuk memeriksa apakah syslogd sekarang mendengarkan pada port syslog standar, 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
membantu
sumber
Solusi ini juga bekerja di Yosemite. Terima kasih.
Steve Powell