आप सुदूर लॉगर से स्नो लेपर्ड पर आने वाले कनेक्शन को स्वीकार करने के लिए syslogd को कैसे सक्षम कर सकते हैं?


10

हिम तेंदुए पर दूरस्थ मेजबान से आने वाले कनेक्शनों को स्वीकार करने के लिए मुझे syslogd कैसे मिलता है?

मैं लॉगिंग को केंद्रीकृत करना चाहूंगा जैसे कि विभिन्न उपकरण और सिस्टम स्नो लेपर्ड के syslogd को लॉग भेजते हैं, जो आमतौर पर UDP 514 पर हैंग होता है। हालांकि, मैं उन्हें अच्छे ओले syslogd द्वारा सफलतापूर्वक स्वीकार करने में असमर्थ हूं। मैं हिम तेंदुआ बॉक्स पर tcpdumped सत्यापित करें कि पैकेट 514 पोर्ट करने के लिए टोंटी जा रहे हैं - वे हैं। मैंने जाँच की कि 514 पर syslogd सुन रहा है - यह नहीं है।

Googling ने मुझे बताया कि OSX के पुराने संस्करणों पर (आप जिस तरह से चीजों को इतनी तेज़ी से OSX में बदलते हैं, उससे प्यार नहीं करते हैं), एक को रिमोट की अनुमति देने के लिए सिसलॉग डेमॉन को एक झंडा जोड़ना पड़ा; एक ने com.apple.syslogd.plist में ऐसा किया। हालाँकि syslogd डेमॉन के पास कोई झंडे नहीं हैं (कम से कम इसके मैन पेज में) जो किसी भी दूरस्थ चीज़ का सुझाव देता है।

इसका क्या उपाय है?

द्वितीयक, कम आयात लेकिन प्रासंगिक प्रश्न: 'न्यूज़लॉग' क्या है? मुझे एक फ़ाइल दिखाई दे रही है लेकिन यह (जाहिरा तौर पर) नहीं चल रही है।

धन्यवाद


किसी को जवाब पता है? अनुत्तरित प्रश्न पूछने के लिए मेरे पास एक कलम है।
Emmel

जवाबों:


4

मैंने यह कोशिश नहीं की है, लेकिन मैंने syslogd (/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

और आप अपने रास्ते पर हैं।


अपने माध्यमिक प्रश्न का उत्तर दें - newsyslog के समान है logrotate अक्सर लिनक्स सिस्टम पर पाया जाता है। man newsyslog (या ऑनलाइन ) आपको और बताएगा।

जैसा कि स्नो लेपर्ड के साथ स्थापित किया गया है, इसे हर 30 मिनट में चलाया जाता है launchd अपनी मुट्ठी में इस बिट के अनुसार:

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

बहुत बढ़िया! ठीक वही उत्तर है जिसकी मुझे तलाश थी। मैंने अभी इसका परीक्षण किया और हां, यह पुष्टि करता है कि यह काम करता है। धन्यवाद, डौग।
Emmel

11

ध्यान दें कि यदि आप ऐसा करने की कोशिश कर रहे हैं हिम तेंदुआ सर्वर मशीन (कम से कम 10.6.4 के साथ), आपको पता चलेगा कि /System/Library/LaunchDaemons/com.apple.syslogd.plist में कोई टिप्पणी-रहित अनुभाग नहीं है (और यह कि प्लिस्ट फ़ाइल बाइनरी प्रारूप में संग्रहीत है) ।

हालाँकि, डॉग उद्धरण जो कुंजी को कॉपी और पेस्ट करता है, वह ट्रिक करेगा, हालाँकि पहले आपको फ़ाइल के प्रारूप को इस प्रकार टेक्स्ट में बदलना होगा:

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

... और आपको इसे संभवतः बाद में परिवर्तित करना चाहिए (रूपांतरण सीटू में होता है):

sudo plutil -convert binary1 /System/Library/LaunchDaemons/com.apple.syslogd.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>

एक और ध्यान दें: यदि, मेरी तरह, आप अपने AirPort बेस स्टेशनों (और / या टाइम कैप्सूल ') को अपने सर्वर पर Syslog आउटपुट भेजना चाहते हैं, तो वे सुविधा 0 का उपयोग करते हैं, जिसे बदला नहीं जा सकता । इसका अर्थ है कि वे /etc/syslog.conf में निम्नलिखित डिफ़ॉल्ट प्रविष्टि के कारण स्वचालित रूप से /var/log/appfirewall.log पर लॉग इन होंगे:

local0.*                                               /var/log/appfirewall.log

ओएस के सर्वर संस्करण पर, आप सुरक्षित रूप से फ़ाइल नाम को उदा में बदल सकते हैं। एक बार AirPort.log को निम्न आदेश जारी करने के बाद:

sudo touch /var/log/AirPort.log

... के बाद से Apple के अनुप्रयोग फ़ायरवॉल (socketfilterfw) डिफ़ॉल्ट रूप से बंद है (और एक सर्वर पर दूर रहना चाहिए - ipfw आप सब वास्तव में चाहते हैं)। मुझे यकीन नहीं है कि अगर एक अलग syslog सुविधा का उपयोग करने के लिए socketfilterfw को फिर से कॉन्फ़िगर करना संभव है।


1
बस मैं क्या देख रहा था, एकदम सही जवाब!
deceze

10.6.7 पर परीक्षण किया गया और ठीक काम करता है। धन्यवाद!
Alexandre L Telles

यह वही था जो मैं करने की कोशिश कर रहा था! अर्थात्, मेरे 4 एईबीएस को मेरे एक्सरोस रनिंग एसएलएस में लॉग इन करें। बहुत सराहना की!
Dennis Wurster

मैं आमतौर पर -udp_in arg जोड़ता हूं, इसलिए यदि मैं इसे दूरस्थ श्रोता के रूप में चला रहा हूं, तो मैं ps कमांड से बता सकता हूं। <key>ProgramArguments</key> <array> <string>/usr/sbin/syslogd</string> <string>-udp_in</string> </array>
tgunr

माउंटेन लायन पर ये निर्देश ठीक काम करते हैं (सर्वर नहीं)
Nelson

5

स्नो लेपर्ड पर 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.