CentOS / RHEL 7 में Rslog के साथ एक केंद्रीकृत लॉग सर्वर कैसे बनाएँ


सिस्टम प्रशासक के लिए CentOS 7 या RHEL 7 सर्वर सिस्टम पर किसी समस्या की पहचान करने या उसका निवारण करने के लिए, उसे सिस्टम में हुई घटनाओं को जानना और देखना होगा /var/log निर्देशिका में सिस्टम में संग्रहीत लॉग फ़ाइलों से समय की अवधि।

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

CentOS/RHEL 7 सिस्टम पर, Rsyslog डेमन मुख्य लॉग सर्वर है जिसे प्रीइंस्टॉल्ड किया गया है, इसके बाद Systemd जर्नल डेमन ( "journald )।

क्लाइंट/सर्वर आर्किटेक्चर सेवा के रूप में निर्माण में Rsyslog सर्वर और एक साथ दोनों भूमिकाएं प्राप्त कर सकते हैं। यह एक सर्वर के रूप में चल सकता है और नेटवर्क में अन्य उपकरणों द्वारा प्रेषित सभी लॉग को इकट्ठा कर सकता है या यह एक दूरस्थ समापन बिंदु syslog सर्वर पर लॉग इन सभी आंतरिक सिस्टम घटनाओं को भेजकर क्लाइंट के रूप में चला सकता है।

जब rsyslog क्लाइंट के रूप में कॉन्फ़िगर किया गया है, तो लॉग को स्थानीय फ़ाइल सिस्टम पर फ़ाइलों में स्थानीय रूप से संग्रहीत किया जा सकता है या उन्हें मशीन पर संग्रहीत फ़ाइलों में लिखने के बजाय दूरस्थ रूप से भेजा जा सकता है या घटनाओं को स्थानीय रूप से लॉग फ़ाइल लिखकर उन्हें दूरस्थ syslog सर्वर पर भेज सकता है उसी समय।

Syslog सर्वर निम्न योजना का उपयोग करके कोई भी लॉग संदेश संचालित करता है:

type (facility).priority (severity)  destination(where to send the log)

ए। सुविधा या प्रकार के डेटा को आंतरिक सिस्टम प्रक्रियाओं द्वारा दर्शाया जाता है जो संदेशों को उत्पन्न करता है। लिनक्स में आंतरिक प्रक्रियाएं (सुविधाएं) जो लॉग उत्पन्न करती हैं, निम्नानुसार मानकीकृत हैं:

  • auth = messages generated by authentication processes (login).
  • cron= messages generated by scheduled processes (crontab).
  • daemon = messages generated by daemons (internal services).
  • kernel = messages generated by the Linux Kernel itself.
  • mail = messages generated by a mail server.
  • syslog = messages generated by the rsyslog daemon itself.
  • lpr = messages generated by local printers or a print server.
  • local0 – local7 = custom messages defined by an administrator (local7 is usually assigned for Cisco or Windows).

B। प्राथमिकता (गंभीरता) का स्तर भी मानकीकृत है। प्रत्येक प्राथमिकता एक मानक संक्षिप्त नाम और एक संख्या के साथ दी गई है जैसा कि नीचे वर्णित है। 7 वीं प्राथमिकता सभी का उच्च स्तर है।

  • emerg = Emergency – 0
  • alert = Alerts – 1
  • err = Errors – 3
  • warn = Warnings – 4
  • notice = Notification – 5
  • info = Information – 6
  • debug = Debugging – 7

विशेष रुपये के कीवर्ड:

  • * = all facilities or priorities
  • none = the facilities have no given priorities Eg: mail.none

C। syslog स्कीमा के लिए तीसरा भाग गंतव्य निर्देशन द्वारा दर्शाया गया है। रुपयेलॉग डेमॉन स्थानीय फ़ाइल सिस्टम पर फ़ाइल में लिखे जाने के लिए लॉग संदेश भेज सकता है (ज्यादातर फ़ाइल में /var/log/ निर्देशिका) या किसी अन्य स्थानीय प्रक्रिया में पाइप किया जा सकता है या एक को भेजा जा सकता है स्थानीय उपयोगकर्ता कंसोल (स्टडआउट करने के लिए), या संदेश को टीसीपी/यूडीपी प्रोटोकॉल के माध्यम से दूरस्थ syslog सर्वर पर भेजें, या यहां तककि संदेश को /dev/null पर छोड़ दें।

केंद्रीय लॉग सर्वर के रूप में CentOS/RHEL 7 कॉन्फ़िगर करने के लिए, पहले हमें यह जांचने और सुनिश्चित करने की आवश्यकता है कि /var विभाजन जहां सभी लॉग फ़ाइल रिकॉर्ड की गई हैं (काफी कुछ GB न्यूनतम) अन्य उपकरणों द्वारा भेजी जाने वाली सभी लॉग फ़ाइलों को संग्रहीत करने में सक्षम होने के लिए। /var/log/ निर्देशिका को माउंट करने के लिए एक अलग ड्राइव (LVM, RAID) का उपयोग करना एक अच्छा निर्णय है।

  1. CentOS 7.3 Installation Procedure
  2. RHEL 7.3 Installation Procedure

CentOS / RHEL 7 सर्वर में रुपये को कैसे कॉन्फ़िगर करें

1। डिफ़ॉल्ट रूप से, Rsyslog सेवा स्वचालित रूप से स्थापित है और CentOS/RHEL 7 में चलना चाहिए। यह जाँचने के लिए कि क्या सिस्टम में डेमॉन शुरू किया गया है, रूट कमांड को विशेषाधिकारों के साथ जारी करें।

# systemctl status rsyslog.service

यदि सेवा डिफ़ॉल्ट रूप से नहीं चल रही है, तो rsyslog डेमन शुरू करने के लिए नीचे दिए गए कमांड को निष्पादित करें।

# systemctl start rsyslog.service

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

# yum install rsyslog

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

# vi /etc/rsyslog.conf

Rsyslog मुख्य कॉन्फ़िगरेशन फ़ाइल में, UDP ट्रांसपोर्ट रिसेप्शन को 514// के माध्यम से UDP ट्रांसपोर्ट रिसेप्शन प्रदान करने के लिए निम्न पंक्तियों को खोजें और उन्हें अनचाहे लाइनों (हैशटैग # साइन इन करें) को हटा दें। बंदरगाह। यूडीपी मानक प्रोटोकॉल है जिसका उपयोग लॉग ट्रांसलॉग द्वारा Rslog के लिए किया जाता है।

$ModLoad imudp 
$UDPServerRun 514

4। यूडीपी प्रोटोकॉल में टीसीपी ओवरहेड नहीं होता है, जो टीसीपी प्रोटोकॉल की तुलना में डेटा संचारित करने के लिए तेज़ बनाता है। दूसरी ओर, यूडीपी प्रोटोकॉल प्रेषित डेटा की विश्वसनीयता को आश्वस्त नहीं करता है।

हालाँकि, यदि आपको लॉग रिसेप्शन के लिए टीसीपी प्रोटोकॉल का उपयोग करने की आवश्यकता है, तो आपको खोज करना चाहिए और निम्नलिखित लाइनों को /etc/rsyslog.conf फ़ाइल से अनइंस्टॉल करना होगा, ताकि रुपये को बचाने के लिए Rsyslog डेमॉन को कॉन्फ़िगर करने और 514 पर एक टीसीपी सॉकेट सुनने के लिए। बंदरगाह। रिसेप्शन के लिए टीसीपी और यूडीपी सुनने वाले सॉकेट को एक साथ एक रुपएलॉग सर्वर पर कॉन्फ़िगर किया जा सकता है।

$ModLoad imtcp 
$InputTCPServerRun 514 

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

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

उपरोक्त रिमोटलॉग्स निर्देश ग्राहक के नाम और रिमोट क्लाइंट सुविधा (एप्लिकेशन) के आधार पर अलग-अलग फ़ाइलों को प्राप्त लॉग संदेश को इकट्ठा करने और लिखने के लिए रुसीलॉग डेमॉन को निर्देश देता है जो परिभाषित गुणों के आधार पर संदेशों को उत्पन्न करता है। टेम्प्लेट कॉन्फ़िगरेशन में प्रस्तुत: % HOSTNAME% और % PROGRAMNAME%

इन सभी लॉग फ़ाइलों को स्थानीय फाइल सिस्टम को क्लाइंट मशीन के होस्टनाम के नाम से समर्पित फाइल में लिखा जाएगा और इसे/var/log/निर्देशिका में संग्रहीत किया जाएगा।

& & ~ पुनर्निर्देशित नियम स्थानीय रूप से सर्वर को निर्देश देता है कि आगे प्राप्त लॉग संदेश को संसाधित करना बंद कर दें और संदेशों को छोड़ दें (उन्हें आंतरिक लॉग फ़ाइलों में न लिखें)।

रिमोटलॉग्स नाम इस टेम्पलेट निर्देश को दिया गया एक मनमाना नाम है। आप अपने टेम्पलेट के लिए जो भी नाम सबसे उपयुक्त पा सकते हैं, उसका उपयोग कर सकते हैं।

दूरस्थ क्लाइंट के आईपी पते के नाम से एक भी लॉग फ़ाइल में क्लाइंट से सभी प्राप्त संदेशों को लिखने के लिए, संदेश को उत्पन्न करने वाली सुविधा को फ़िल्टर किए बिना, नीचे दिए गए अंश का उपयोग करें।

$template FromIp,"/var/log/%FROMHOST-IP%.log" 
. ?FromIp & ~ 

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

$template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
authpriv.*   ?TmplAuth

नीचे अंश 7 सर्वर से एक टेम्प्लेट की परिभाषा दी गई है:

template(name="TmplMsg" type="string"
         string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log"
        )

उपरोक्त टेम्पलेट अंश के रूप में भी लिखा जा सकता है:

template(name="TmplMsg" type="list") {
    constant(value="/var/log/remote/msg/")
    property(name="hostname")
    constant(value="/")
    property(name="programname" SecurePath="replace")
    constant(value=".log")
    }

जटिल रूप-रेखा टेम्पलेट्स को लिखने के लिए, आदमी rsyslog.conf आदेश जारी करके या रुपये ऑनलाइन के प्रलेखन से परामर्श करके रुपएलॉग कॉन्फ़िगरेशन फ़ाइल मैनुअल पढ़ें।

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

# service rsyslog restart

7। अब तक, एक केंद्रीयकृत लॉग सर्वर को कार्य करने के लिए रूपया सर्वर को कॉन्फ़िगर किया जाना चाहिए और syslog क्लाइंट से संदेश रिकॉर्ड करना चाहिए। Rsyslog नेटवर्क सॉकेट्स को सत्यापित करने के लिए, रूट विशेषाधिकारों के साथ netstat कमांड चलाएं और rsyslog स्ट्रिंग को फ़िल्टर करने के लिए grep का उपयोग करें।

# netstat -tulpn | grep rsyslog 

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

# semanage -a -t syslogd_port_t -p udp 514
# semanage -a -t syslogd_port_t -p tcp 514 

9। यदि फ़ायरवॉल सक्षम और सक्रिय है, तो फ़ायरवॉल में rsyslog पोर्ट खोलने के लिए आवश्यक नियम जोड़ने के लिए नीचे दिए गए आदेश को चलाएँ।

# firewall-cmd --permanent --add-port=514/tcp
# firewall-cmd --permanent --add-port=514/udp
# firewall-cmd –reload

बस इतना ही! Rsyslog अब सर्वर मोड में कॉन्फ़िगर किया गया है और दूरस्थ क्लाइंट से लॉग को केंद्रीकृत कर सकता है। अगले लेख में, हम देखेंगे कि सेंटोस/आरएचईएल 7 सर्वर पर रूपलॉग क्लाइंट को कैसे कॉन्फ़िगर किया जाए।

दूरस्थ लॉग संदेशों के लिए केंद्रीय निगरानी बिंदु के रूप में रुपयेलॉग सर्वर का उपयोग करना आप लॉग फ़ाइलों का निरीक्षण कर सकते हैं और सिस्टम के दुर्घटनाग्रस्त होने या किसी प्रकार के हमले के दौरान ग्राहकों की स्वास्थ्य स्थिति या डिबग क्लाइंट के मुद्दों का अधिक आसानी से निरीक्षण कर सकते हैं।