Come si abilita syslogd ad accettare connessioni in entrata su Snow Leopard da logger remoti?


11

Come posso ottenere syslogd per accettare le connessioni in entrata dagli host remoti su Snow Leopard?

Vorrei centralizzare la registrazione in modo tale che vari dispositivi e sistemi inviano registri al syslogd di Snow Leopard, che normalmente si blocca su UDP 514. Tuttavia, non riesco a farli accettare con successo da un buon syslogd ole. Ho scaricato sulla scatola Snow Leopard per verificare che i pacchetti vengano inviati alla porta 514 - lo sono. Ho verificato che syslogd stia ascoltando il 514 - non lo è.

Googling around mi ha detto che, nelle versioni precedenti di OSX (non ti piace il modo in cui le cose cambiano così rapidamente su OSX), è stato sufficiente aggiungere un flag al demone syslogd per consentire il controllo remoto; uno ha fatto questo in com.apple.syslogd.plist. Tuttavia il demone syslogd non ha flag (almeno nella sua pagina man) che suggeriscono qualcosa di remoto.

Qual è la soluzione a questo?

Domanda secondaria, meno importante ma pertinente: che cos'è il "newsyslog"? Vedo un file plist ma non funziona (apparentemente).

Grazie


Qualcuno conosce la risposta? Ho una propensione a porre domande senza risposta.
Emmel,

Risposte:


5

Non l'ho provato, ma ho cercato nel sistlogd (/System/Library/LaunchDaemons/com.apple.syslogd.plist) e ho visto questa parte commentata:

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

Rimuovere i commenti e quindi ricaricare il servizio:

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

e probabilmente stai arrivando.


Risposta alla tua domanda secondaria - newsyslogè simile a logrotate che si trova spesso sui sistemi Linux. man newsyslog(o online ) ti dirà di più.

Come installato con Snow Leopard, viene eseguito ogni 30 minuti launchdper questo bit nel suo piano:

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

Eccezionale! Questa è esattamente la risposta che stavo cercando. L'ho appena testato e sì, ho confermato che funziona. Grazie Doug.
Emmel,

11

Nota che se stai provando a farlo su un computer Snow Leopard Server (almeno con 10.6.4), scoprirai che non c'è una sezione commentata in /System/Library/LaunchDaemons/com.apple.syslogd .plist (e che il file plist è archiviato in un formato binario).

Tuttavia, copiare e incollare la chiave citata da Doug sopra farà il trucco, anche se prima dovrai convertire il formato del file in testo in questo modo:

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

... e probabilmente dovresti riconvertirlo in seguito (le conversioni avvengono in situ):

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

... quindi ricaricare il demone launchd secondo le istruzioni di Doug.

Successivamente il file plist completo dovrebbe essere il seguente:

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

Un'altra nota: se, come me, vuoi inviare gli output syslog delle tue stazioni base AirPort (e / o Time Capsules) al tuo server, usano la funzione 0, che non può essere modificata . Ciò significa che verranno automaticamente registrati in /var/log/appfirewall.log a causa della seguente voce predefinita in /etc/syslog.conf:

local0.*                                               /var/log/appfirewall.log

Sulla versione Server del sistema operativo, puoi tranquillamente cambiare il nome del file in ad es. AirPort.log dopo aver emesso il seguente comando:

sudo touch /var/log/AirPort.log

... poiché l'Application Firewall di Apple (socketfilterfw) è disattivato per impostazione predefinita (e dovrebbe rimanere spento su un server — ipfw è tutto ciò che vuoi davvero). Non sono sicuro se è possibile riconfigurare socketfilterfw per utilizzare una funzione syslog diversa.


1
Proprio quello che stavo cercando, risposta perfetta!
Inganno il

Testato il 10.6.7 e funziona bene. Grazie!
Alexandre L Telles,

Questo era esattamente quello che stavo cercando di fare! Vale a dire, ottenere i miei 4 AEBS per accedere al mio Xserve che esegue SLS. Molto apprezzato!
Dennis Wurster,

Di solito aggiungo -udp_in arg in modo da poter dire da un comando ps se l'ho in esecuzione come listener remoto. <key>ProgramArguments</key> <array> <string>/usr/sbin/syslogd</string> <string>-udp_in</string> </array>
martedì

Queste istruzioni funzionano bene su Mountain Lion (non sul server)
Nelson,

6

Un altro metodo per abilitare l'accesso di rete a syslogd su Snow Leopard è utilizzare il programma da riga di comando 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

E quindi riavviare il demone,

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

Puoi usare lsof per verificare che syslogd sia ora in ascolto sulla porta syslog standard, 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

Questa soluzione sembra funzionare anche in Yosemite. Grazie.
Steve Powell,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.