लिनक्स में Rslog के साथ सेंट्रल लॉगिंग सर्वर को कैसे सेटअप करें


लॉग्स किसी भी सॉफ़्टवेयर या ऑपरेटिंग सिस्टम का एक महत्वपूर्ण घटक है। लॉग आमतौर पर उपयोगकर्ता की क्रियाओं, सिस्टम इवेंट्स, नेटवर्क गतिविधि और इतने अधिक को रिकॉर्ड करते हैं, जो उनके इरादे पर निर्भर करते हैं। लिनक्स सिस्टम पर सबसे व्यापक रूप से उपयोग किए जाने वाले लॉगिंग सिस्टम में से एक rsyslog है।

Rsyslog एक शक्तिशाली, सुरक्षित और उच्च-प्रदर्शन लॉग प्रोसेसिंग सिस्टम है जो विभिन्न प्रकार के स्रोत (सिस्टम/एप्लिकेशन) से डेटा स्वीकार करता है और इसे कई प्रारूपों में आउटपुट करता है।

यह एक नियमित रूप से विकसित हुआ है syslog डेमॉन पूरी तरह से चित्रित, उद्यम स्तर लॉगिंग सिस्टम के लिए। यह एक क्लाइंट/सर्वर मॉडल में डिज़ाइन किया गया है, इसलिए इसे क्लाइंट और/या अन्य सर्वर, नेटवर्क डिवाइस और रिमोट एप्लिकेशन के लिए केंद्रीय लॉगिंग सर्वर के रूप में कॉन्फ़िगर किया जा सकता है।

इस गाइड के उद्देश्य के लिए, हम निम्नलिखित मेजबान का उपयोग करेंगे:

  • Server: 192.168.241.140
  • Client: 172.31.21.58

Rsyslog सर्वर को कैसे इनस्टॉल और कॉन्फ़िगर करें

अधिकांश लिनक्स वितरण rsyslog पैकेज के साथ आते हैं। यदि यह स्थापित नहीं है, तो आप अपने लिनक्स पैकेज मैनेजर टूल का उपयोग करके इसे स्थापित कर सकते हैं।

$ sudo yum update && yum install rsyslog 	#CentOS 7
$ sudo apt update && apt install rsyslog	#Ubuntu 16.04, 18.04

एक बार rsyslog इंस्टॉल हो जाने के बाद, आपको अभी के लिए सेवा शुरू करने की आवश्यकता है, इसे बूट पर ऑटो-स्टार्ट करने के लिए सक्षम करें और सिस्टम कमांड के साथ इसे जांचें।

$ sudo systemctl start rsyslog
$ sudo systemctl enable rsyslog
$ sudo systemctl status rsyslog

मुख्य rsyslog कॉन्फ़िगरेशन फ़ाइल /etc/rsyslog.conf पर स्थित है, जो मॉड्यूल लोड करता है, वैश्विक निर्देशों को परिभाषित करता है, लॉग संदेशों को संसाधित करने के नियम शामिल हैं और इसमें

$ sudo vim /etc/rsyslog.conf

डिफ़ॉल्ट रूप से, systemd जर्नल से संरचित लॉग संदेश आयात करने के लिए और syslog स्वीकार करने के लिए rsyslog imjournal और imusock मॉड्यूल का उपयोग करता है। यूनिक्स सॉकेट के माध्यम से स्थानीय प्रणाली पर चल रहे अनुप्रयोगों के संदेश क्रमशः।

नेटवर्क/सेंट्रल लॉगिंग सर्वर के रूप में rsyslog को कॉन्फ़िगर करने के लिए, आपको प्रोटोकॉल सेट करने की आवश्यकता है (या तो UDP या TCP या दोनों) यह दूरस्थ syslog रिसेप्शन के साथ-साथ उपयोग करेगा। पोर्ट इसे सुनता है।

यदि आप एक UDP कनेक्शन का उपयोग करना चाहते हैं, जो कि तेज, लेकिन अविश्वसनीय है, तो नीचे दी गई पंक्तियों को खोजें और अनसेफ करें (पोर्ट की जगह 514 ) आप इसे सुनना चाहते हैं, यह चाहिए पोर्ट पते से मेल खाते हैं जो क्लाइंट को संदेश भेजते हैं, हम rsyslog क्लाइंट को कॉन्फ़िगर करते समय इसे और देखेंगे)।

$ModLoad imudp
$UDPServerRun 514

टीसीपी कनेक्शन (जो धीमा लेकिन अधिक विश्वसनीय है) का उपयोग करने के लिए, नीचे की पंक्तियों को खोजें और अनसुना करें।

$ModLoad imtcp
$InputTCPServerRun 514

इस मामले में, हम एक ही समय में यूडीपी और टीसीपी दोनों कनेक्शनों का उपयोग करना चाहते हैं।

इसके बाद, आपको निम्न प्रारूप में दूरस्थ लॉग को संसाधित करने के लिए नियम को परिभाषित करने की आवश्यकता है।

facility.severity_level	destination (where to store log)

कहा पे:

  • facility: is type of process/application generating message, they include auth, cron, daemon, kernel, local0..local7. Using * means all facilities.
  • severity_level: is type of log message: emerg-0, alert-1, crit-2, err-3, warn-4, notice-5, info-6, debug-7. Using * means all severity levels and none implies no severity level.
  • destination: is either local file or remote rsyslog server (defined in the form IP:port).

हम रिमोटलॉग्स टेम्पलेट का उपयोग करके, दूरस्थ होस्ट से लॉग एकत्र करने के लिए निम्नलिखित नियम का उपयोग करेंगे। ध्यान दें कि ये नियम स्थानीय संदेशों को संसाधित करने के लिए किसी भी नियम से पहले आने चाहिए, जैसा कि स्क्रीनशॉट में दिखाया गया है।

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs 
& ~

उपरोक्त नियम को देखते हुए, पहला नियम है "RemoteLogs,"/var/log /% HOSTNAME% /% PROGRAMNAME% .log ""

निर्देश होस्टनाम के आधार पर /var/log के तहत अलग-अलग लॉग में प्राप्त किए गए दूरस्थ संदेशों को इकट्ठा करने और लिखने के लिए rsyslog डेमॉन को बताता है। क्लाइंट मशीन का नाम) और दूरस्थ क्लाइंट सुविधा (प्रोग्राम/एप्लिकेशन) जिसने संदेशों को टेम्पलेट RemoteLogs में मौजूद सेटिंग्स द्वारा परिभाषित किया।

दूसरी पंक्ति "*। *? रिमोटलॉग्स" का अर्थ है सभी सुविधाओं से सभी संदेशों को गंभीरता के स्तरों पर रिकॉर्ड करना रिमोटलॉग्स टेम्पलेट कॉन्फ़िगरेशन।

अंतिम पंक्ति "& & ~ " एक फ़ाइल में लिखे जाने के बाद संदेश को संसाधित करने से रोकने के लिए rsyslog को निर्देश देता है। यदि आप ”& amp शामिल नहीं हैं; ~ " , संदेश इसके बजाय स्थानीय फ़ाइलों को लिखा जाएगा।

कई अन्य टेम्पलेट हैं जिनका आप उपयोग कर सकते हैं, अधिक जानकारी के लिए, rsyslog कॉन्फ़िगरेशन मैन पेज देखें ( man rsyslog.conf ) या रुपयेलॉग ऑनलाइन दस्तावेज़ देखें।

यह rsyslog सर्वर को कॉन्फ़िगर करने के साथ है। कॉन्फ़िगरेशन फ़ाइल को सहेजें और बंद करें। हाल के परिवर्तनों को लागू करने के लिए, निम्नलिखित कमांड के साथ rsyslog डेमॉन को पुनरारंभ करें।

$ sudo systemctl restart rsyslog

अब rsyslog नेटवर्क सॉकेट को सत्यापित करें। ss कमांड (या समान झंडे के साथ netstat) कमांड का उपयोग करें और rsyslogd कनेक्शन को फ़िल्टर करने के लिए grep में आउटपुट को पाइप करें।

$ sudo ss -tulnp | grep "rsyslog"

अगला, CentOS 7 पर, यदि आपके पास SELinux सक्षम है, तो नेटवर्क सॉकेट प्रकार के आधार पर rsyslog ट्रैफ़िक की अनुमति देने के लिए निम्न आदेश चलाएँ।

$ sudo semanage -a -t syslogd_port_t -p udp 514
$ sudo semanage -a -t syslogd_port_t -p tcp 514 

यदि सिस्टम में फ़ायरवॉल सक्षम है, तो आपको rsyslog सर्वर से UDP/TCP दोनों को चलाने के लिए पोर्ट 514 खोलने की आवश्यकता है।

------------- On CentOS ------------- 
$ sudo firewall-cmd --permanent --add-port=514/udp
$ sudo firewall-cmd --permanent --add-port=514/tcp
$ sudo firewall-cmd --reload

------------- On Ubuntu -------------
$ sudo ufw allow 514/udp
$ sudo ufw allow 514/tcp
$ sudo ufw reload 

रुपये को क्लाइंट लॉग कॉन्फ़िगर करने के लिए कैसे लॉग लॉग Rsyslog सर्वर के लिए

अब क्लाइंट सिस्टम पर, जांचें कि क्या rsyslog सेवा निम्नलिखित कमांड के साथ चल रही है या नहीं।

$ sudo systemctl status rsyslog

यदि यह स्थापित नहीं है, तो इसे स्थापित करें और सेवा शुरू करें जैसा कि पहले दिखाया गया है।

$ sudo yum update && yum install rsyslog 	#CentOS 7
$ sudo apt update && apt install rsyslog	#Ubuntu 16.04, 18.04
$ sudo systemctl start rsyslog
$ sudo systemctl enable rsyslog
$ sudo systemctl status rsyslog

एक बार जब rsyslog सेवा उठ रही है और चल रही है, तो मुख्य कॉन्फ़िगरेशन फ़ाइल खोलें जहां आप डिफ़ॉल्ट कॉन्फ़िगरेशन में परिवर्तन करेंगे।

$ sudo vim /etc/rsyslog.conf

लॉग क्लाइंट के रूप में कार्य करने के लिए rsyslog डेमॉन को मजबूर करने के लिए और दूरस्थ rsyslog सर्वर पर सभी स्थानीय रूप से जेनरेट किए गए लॉग संदेशों को अग्रेषित करें, इस फ़ॉरवर्डिंग नियम को, फ़ाइल के अंत में निम्न स्क्रीनशॉट में दिखाए अनुसार जोड़ें।

*. *  @@192.168.100.10:514

उपरोक्त नियम सभी सुविधाओं और सभी गंभीरता स्तरों पर संदेश भेजेगा। उदाहरण के लिए एक विशिष्ट सुविधा से संदेश भेजने के लिए स्थिति , निम्न नियम का उपयोग करें।

auth. *  @@192.168.100.10:514

परिवर्तन सहेजें और कॉन्फ़िगरेशन फ़ाइल बंद करें। उपरोक्त सेटिंग्स को लागू करने के लिए, rsyslog डेमॉन को पुनरारंभ करें।

$ sudo systemctl restart rsyslog

Rsyslog सर्वर पर रिमोट लॉगिंग की निगरानी कैसे करें

अंतिम चरण यह सत्यापित करना है कि क्या rsyslog वास्तव में क्लाइंट से संदेश प्राप्त कर रहा है और /var/log के तहत, hostname/programname.log फॉर्म में लॉग इन कर रहा है।

पैरेंट लॉग्स डायरेक्टरी की लंबी लिस्टिंग के लिए एक ls कमांड चलाएं और जांचें कि क्या कोई निर्देशिका ip-172.31.21.58 (या जो भी आपके क्लाइंट मशीन का होस्टनाम है) कहा जाता है।

 
$ ls -l /var/log/

यदि निर्देशिका मौजूद है, तो इसके अंदर लॉग फ़ाइलों की जाँच करें, चलाकर।

$ sudo ls -l /var/log/ip-172-31-21-58/

Rsyslog एक उच्च-प्रदर्शन लॉग प्रोसेसिंग सिस्टम है, जिसे क्लाइंट/सर्वर आर्किटेक्चर में डिज़ाइन किया गया है। हमें उम्मीद है कि आप केंद्रीय/नेटवर्क लॉगिंग सर्वर के रूप में और इस गाइड में दिखाए गए क्लाइंट के रूप में Rsyslog को स्थापित और कॉन्फ़िगर करने में सक्षम हैं।

तुम भी अधिक मदद के लिए प्रासंगिक rsyslog मैनुअल पृष्ठों का उल्लेख करना चाहते हो सकता है। बेझिझक हमें कोई भी प्रतिक्रिया दें या प्रश्न पूछें।