Syslogd dosyasının uzaktan kaydedicilerden Snow Leopard'a gelen bağlantıları kabul etmesini nasıl sağlarsınız?


11

Syslogd'ın Snow Leopard'daki uzak ana bilgisayarlardan gelen bağlantıları kabul etmesini nasıl sağlayabilirim?

Çeşitli cihazların ve sistemlerin günlükleri UDP 514'te takılan Snow Leopard syslogd'ına günlükler göndereceği şekilde merkezileştirmek istiyorum. Ancak, onları iyi ole syslogd tarafından başarıyla kabul edilmesini sağlayamıyorum. Paketlerin 514 numaralı bağlantı noktasına boğulduğunu doğrulamak için Snow Leopard kutusuna tcpdumped - öyleler. Syslogd'ın 514'te dinlediğini kontrol ettim - öyle değil.

Dolaşmak bana OSX'in eski sürümlerinde (OSX'te işlerin bu kadar hızlı değişme şeklini sevmediğinizi), uzaktan kumandayı sağlamak için sadece syslogd arka plan programına bir bayrak eklemek zorunda olduğunu söyledi; biri bunu com.apple.syslogd.plist içinde yaptı. Ancak syslogd arka plan programının uzak bir şey öneren hiçbir bayrağı (en azından kendi sayfasında) yoktur.

Bunun çözümü nedir?

İkincil, daha az içe aktarılan ancak alakalı soru: 'newsyslog' nedir? Bir plist dosyası görüyorum ama çalışmıyor (görünüşe göre).

Teşekkürler


Cevabı bilen var mı? Cevaplanmamış sorular sormak için bir tutkum var.
Emmel

Yanıtlar:


5

Bunu denemedim, ancak syslogd (/System/Library/LaunchDaemons/com.apple.syslogd.plist) için plist'e baktım ve bu kısmın yorumlandığını gördüm:

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

Yorumları kaldırın ve hizmeti yeniden yükleyin:

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

ve muhtemelen yoldasınız.


İkincil sorunuzun cevabı - linux sistemlerinde sıklıkla bulunan logrotate'enewsyslog benzer . (veya çevrimiçi ) size daha fazlasını söyleyecektir.man newsyslog

Snow Leopard ile kurulduğu gibi launchd, plistinde bu bit başına 30 dakikada bir çalıştırılır :

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

Müthiş! Aradığım cevap tam olarak buydu. Sadece test ettim ve evet, işe yaradığını doğruladı. Teşekkürler, Doug.
Emmel

11

Bunu bir Snow Leopard Server makinesinde yapmaya çalışıyorsanız (en azından 10.6.4 ile), /System/Library/LaunchDaemons/com.apple.syslogd dosyasında yorumlanmış bir bölüm bulunmadığını unutmayın. .plist (ve plist dosyasının ikili biçimde depolandığını).

Bununla birlikte, Doug'un yukarıda alıntıladığı anahtarı kopyalamak ve yapıştırmak hile yapar, ancak önce dosyanın biçimini metne dönüştürmeniz gerekir:

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

... ve muhtemelen daha sonra geri dönüştürmelisiniz (dönüşümler yerinde gerçekleşir):

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

... sonra lansman arka plan programını Doug'un talimatları uyarınca yeniden yükleyin.

Daha sonra tam plist dosyası aşağıdaki gibi olmalıdır:

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

Bir not daha: benim gibi AirPort baz istasyonlarınızın (ve / veya Zaman Kapsüllerinin) sistem günlüğü çıktılarını sunucunuza göndermek istiyorsanız, değiştirilemeyecek olan tesis 0'ı kullanırlar . Bu, /etc/syslog.conf dosyasına aşağıdaki varsayılan giriş nedeniyle otomatik olarak /var/log/appfirewall.log dosyasına kaydedilecekleri anlamına gelir:

local0.*                                               /var/log/appfirewall.log

İşletim sisteminin Sunucu sürümünde, aşağıdaki komutu verdikten sonra dosya adını örneğin AirPort.log olarak güvenle değiştirebilirsiniz:

sudo touch /var/log/AirPort.log

... çünkü Apple'ın Uygulama Güvenlik Duvarı (socketfilterfw) varsayılan olarak kapalıdır (ve bir sunucuda kapalı kalmalıdır; ipfw gerçekten istediğiniz her şeydir). Socketfilterfw dosyasını farklı bir syslog tesisi kullanmak üzere yeniden yapılandırmanın mümkün olup olmadığından emin değilim.


1
Aradığım tek şey, mükemmel cevap!
deceze

10.6.7 üzerinde test edildi ve iyi çalışıyor. Teşekkürler!
Alexandre L Telles

Tam olarak yapmaya çalıştığım şey buydu! Yani, 4 AEBS'mi SLS çalıştıran Xserve'ime giriş yap. Çok takdir!
Dennis Wurster

Ben genellikle -udp_in arg ekler, böylece bir ps komuttan uzak dinleyici olarak çalışıp çalışmadığımı söyleyebilirim. <key>ProgramArguments</key> <array> <string>/usr/sbin/syslogd</string> <string>-udp_in</string> </array>
tgunr

Bu talimatlar Mountain Lion'da (sunucu değil) iyi çalışır
Nelson

6

Snow Leopard'da syslogd ağ erişimini etkinleştirmenin başka bir yöntemi de PlistBuddy komut satırı programını kullanmaktır.

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

Ardından daemon'u yeniden başlatın,

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

Ssologd'un şimdi standart syslog portunu (514) dinlediğini kontrol etmek için lsof komutunu kullanabilirsiniz.

$ 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

Bu çözüm Yosemite'de de işe yarıyor gibi görünüyor. Teşekkür ederim.
Steve Powell
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.