CentOS/RHEL 8-ൽ Rsyslog ഉള്ള ഒരു കേന്ദ്രീകൃത ലോഗ് സെർവർ സജ്ജീകരിക്കുക


ഒരു CentOS 8 അല്ലെങ്കിൽ RHEL 8 സെർവറിലെ പ്രശ്നങ്ങൾ തിരിച്ചറിയുന്നതിനോ വിശകലനം ചെയ്യുന്നതിനോ ഒരു സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്റർമാർക്ക്, /var-ൽ കാണുന്ന ലോഗ് ഫയലുകളിൽ നിന്ന് ഒരു പ്രത്യേക കാലയളവിൽ സെർവറിൽ സംഭവിച്ച ഇവന്റുകൾ അറിയുകയും കാണുകയും ചെയ്യേണ്ടത് പ്രധാനമാണ്. /ലോഗ് സിസ്റ്റത്തിലെ ഡയറക്ടറി.

സെർവറിലെ സിസ്uലോഗ് (സിസ്റ്റം ലോഗിംഗ് പ്രോട്ടോക്കോൾ) സിസ്റ്റത്തിന് ഒരു നെറ്റ്uവർക്കിൽ ഒരു സെൻട്രൽ ലോഗ് മോണിറ്ററിംഗ് പോയിന്റായി പ്രവർത്തിക്കാൻ കഴിയും, അവിടെ എല്ലാ സെർവറുകൾ, നെറ്റ്uവർക്ക് ഉപകരണങ്ങൾ, സ്വിച്ചുകൾ, റൂട്ടറുകൾ, ലോഗുകൾ സൃഷ്uടിക്കുന്ന ആന്തരിക സേവനങ്ങൾ, പ്രത്യേക ആന്തരിക പ്രശ്uനവുമായോ വിവരദായകമായ സന്ദേശങ്ങളോ ആയി ബന്ധിപ്പിച്ചാലും. അവരുടെ രേഖകൾ അയയ്ക്കാൻ കഴിയും.

ഒരു CentOS/RHEL 8 സെർവറിൽ, ഡീഫോൾട്ടായി പ്രീഇൻസ്റ്റാൾ ചെയ്uതിരിക്കുന്ന ഏറ്റവും പ്രധാനപ്പെട്ട ലോഗ് സെർവറാണ് Rsyslog ഡെമൺ, തുടർന്ന് Systemd ജേണൽ ഡെമൺ (ജേർണൽഡ്).

Rsyslog ഒരു ഓപ്പൺ സോഴ്uസ് യൂട്ടിലിറ്റിയാണ്, ഇത് ഒരു ക്ലയന്റ്/സെർവർ ആർക്കിടെക്ചർ സേവനമായി വികസിപ്പിച്ചെടുക്കുകയും സ്വതന്ത്രമായി രണ്ട് റോളുകളും നേടുകയും ചെയ്യുന്നു. ഇതിന് ഒരു സെർവറായി പ്രവർത്തിക്കാനും നെറ്റ്uവർക്കിലൂടെ മറ്റ് ഉപകരണങ്ങൾ കൈമാറുന്ന എല്ലാ ലോഗുകളും ശേഖരിക്കാനും അല്ലെങ്കിൽ വിദൂര സിസ്uലോഗ് സെർവറിലേക്ക് ലോഗ് ചെയ്uതിരിക്കുന്ന എല്ലാ ആന്തരിക സിസ്റ്റം ഇവന്റുകളും അയച്ചുകൊണ്ട് ഒരു ക്ലയന്റ് ആയി പ്രവർത്തിക്കാനും കഴിയും.

  1. സ്ക്രീൻഷോട്ടുകൾക്കൊപ്പം \CentOS 8.0″ ഇൻസ്റ്റാളേഷൻ
  2. സ്ക്രീൻഷോട്ടുകൾക്കൊപ്പം RHEL 8-ന്റെ ഇൻസ്റ്റാളേഷൻ

ഒരു CentOS/RHEL 8 സെർവറിൽ ഒരു കേന്ദ്രീകൃത ലോഗ് സെർവർ സജ്ജീകരിക്കുന്നതിന്, റെക്കോർഡ് ചെയ്uത എല്ലാ ലോഗ് ഫയലുകളും സംഭരിക്കുന്നതിന് /var പാർട്ടീഷനിൽ മതിയായ ഇടമുണ്ടോ (കുറഞ്ഞത് കുറച്ച് GB) നിങ്ങൾ സ്ഥിരീകരിക്കേണ്ടതുണ്ട്. നെറ്റ്uവർക്കിലെ മറ്റ് ഉപകരണങ്ങൾ അയയ്ക്കുന്ന സിസ്റ്റത്തിൽ. /var/log/ ഡയറക്uടറി മൌണ്ട് ചെയ്യുന്നതിന് ഒരു പ്രത്യേക ഡ്രൈവ് (LVM അല്ലെങ്കിൽ RAID) ഉണ്ടായിരിക്കണമെന്ന് ഞാൻ ശുപാർശ ചെയ്യുന്നു.

CentOS/RHEL 8-ൽ Rsyslog സെർവർ എങ്ങനെ കോൺഫിഗർ ചെയ്യാം

1. ഞാൻ പറഞ്ഞതുപോലെ, Ryslog സേവനം CentOS/RHEL 8 സെർവറിൽ ഇൻസ്റ്റാൾ ചെയ്യുകയും സ്വയമേവ പ്രവർത്തിക്കുകയും ചെയ്യുന്നു. സിസ്റ്റത്തിൽ ഡെമൺ പ്രവർത്തിക്കുന്നുണ്ടോയെന്ന് പരിശോധിക്കുന്നതിന്, ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

# systemctl status rsyslog.service

സേവനം സ്ഥിരസ്ഥിതിയായി പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ, rsyslog ഡെമൺ ആരംഭിക്കുന്നതിന് ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

# systemctl start rsyslog.service

2. നിങ്ങൾ ഒരു കേന്ദ്രീകൃത ലോഗിംഗ് സെർവറായി ഉപയോഗിക്കാൻ ഉദ്ദേശിക്കുന്ന സിസ്റ്റത്തിൽ Rsyslog യൂട്ടിലിറ്റി ഡിഫോൾട്ടായി ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ലെങ്കിൽ, rsyslog പാക്കേജ് ഇൻസ്റ്റാൾ ചെയ്യുന്നതിനും ഡെമൺ ആരംഭിക്കുന്നതിനും ഇനിപ്പറയുന്ന dnf കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

# dnf install rsyslog
# systemctl start rsyslog.service

3. ഒരിക്കൽ Rsyslog യൂട്ടിലിറ്റി ഇൻസ്റ്റാൾ ചെയ്തുകഴിഞ്ഞാൽ, ബാഹ്യ ക്ലയന്റുകൾക്ക് ലോഗ് സന്ദേശങ്ങൾ ലഭിക്കുന്നതിനായി പ്രധാന കോൺഫിഗറേഷൻ ഫയൽ /etc/rsyslog.conf തുറന്ന് നിങ്ങൾക്ക് ഇപ്പോൾ rsyslog ഒരു കേന്ദ്രീകൃത ലോഗിംഗ് സെർവറായി ക്രമീകരിക്കാം.

# vi /etc/rsyslog.conf

/etc/rsyslog.conf കോൺഫിഗറേഷൻ ഫയലിൽ, 514 പോർട്ട് വഴി Rsyslog സെർവറിലേക്ക് UDP ട്രാൻസ്പോർട്ട് റിസപ്ഷൻ നൽകുന്നതിന് ഇനിപ്പറയുന്ന വരികൾ കണ്ടെത്തി കമന്റ് ചെയ്യുക. ലോഗ് ട്രാൻസ്മിഷനായി Rsyslog സാധാരണ UDP പ്രോട്ടോക്കോൾ ഉപയോഗിക്കുന്നു.

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

4. യുഡിപി പ്രോട്ടോക്കോളിന് ടിസിപി ഓവർഹെഡ് ഇല്ല, കൂടാതെ ഇത് ടിസിപി പ്രോട്ടോക്കോളിനേക്കാൾ വേഗത്തിൽ ഡാറ്റാ ട്രാൻസ്മിഷൻ ചെയ്യുന്നു. മറുവശത്ത്, ട്രാൻസ്മിറ്റ് ചെയ്ത ഡാറ്റയുടെ വിശ്വാസ്യത UDP പ്രോട്ടോക്കോൾ ഉറപ്പുനൽകുന്നില്ല.

എന്നിരുന്നാലും, ലോഗ് റിസപ്ഷനു വേണ്ടി നിങ്ങൾക്ക് TCP പ്രോട്ടോക്കോൾ ഉപയോഗിക്കണമെങ്കിൽ, 514 പോർട്ടിൽ ഒരു TCP സോക്കറ്റ് ബൈൻഡ് ചെയ്യുന്നതിനും കേൾക്കുന്നതിനുമായി Rsyslog ഡെമൺ കോൺഫിഗർ ചെയ്യുന്നതിനായി /etc/rsyslog.conf എന്ന കോൺഫിഗറേഷൻ ഫയലിൽ താഴെ പറയുന്ന വരികൾ കണ്ടെത്തി അൺകമന്റ് ചെയ്യണം.

module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

5. റിമോട്ട് സന്ദേശങ്ങൾ സ്വീകരിക്കുന്നതിന് ഇപ്പോൾ ഒരു പുതിയ ടെംപ്ലേറ്റ് സൃഷ്ടിക്കുക, കാരണം ഈ ടെംപ്ലേറ്റ് പ്രാദേശിക Rsyslog സെർവറിനെ നയിക്കും, സിസ്uലോഗ് നെറ്റ്uവർക്ക് ക്ലയന്റുകൾ അയച്ച സന്ദേശങ്ങൾ എവിടെ സംരക്ഷിക്കണം.

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

$template RemoteLogs നിർദ്ദേശം Rsyslog ഡെമണിന്, ട്രാൻസ്മിറ്റ് ചെയ്ത എല്ലാ ലോഗ് സന്ദേശങ്ങളും വ്യത്യസ്uത ഫയലുകളിലേക്ക് ശേഖരിക്കാനും എഴുതാനും വഴികാട്ടുന്നു. ടെംപ്ലേറ്റ് കോൺഫിഗറേഷൻ: %HOSTNAME%, %PROGRAMNAME%.

ലഭിച്ച എല്ലാ ലോഗ് ഫയലുകളും പ്രാദേശിക ഫയൽസിസ്റ്റത്തിലേക്ക് ക്ലയന്റ് മെഷീന്റെ ഹോസ്റ്റ്നാമത്തിന്റെ പേരിലുള്ള ഒരു അനുവദിച്ച ഫയലിലേക്ക് എഴുതുകയും /var/log/ ഡയറക്ടറിയിൽ സൂക്ഷിക്കുകയും ചെയ്യും.

& ~ റീഡയറക്uട് റൂൾ, ലഭിച്ച ലോഗ് സന്ദേശം കൂടുതൽ പ്രോസസ്സ് ചെയ്യുന്നത് നിർത്താനും സന്ദേശങ്ങൾ നീക്കം ചെയ്യാനും ലോക്കൽ Rsyslog സെർവറിനോട് നിർദ്ദേശിക്കുന്നു (അത് ആന്തരിക ലോഗ് ഫയലുകളിലേക്ക് എഴുതരുത്).

RemoteLogs എന്നത് ഈ ടെംപ്ലേറ്റ് നിർദ്ദേശത്തിന് നൽകിയിരിക്കുന്ന ഒരു അനിയന്ത്രിതമായ പേരാണ്. നിങ്ങളുടെ ടെംപ്ലേറ്റിന് ഏറ്റവും അനുയോജ്യമായ ഏത് പേരും നിങ്ങൾക്ക് ഉപയോഗിക്കാം.

കൂടുതൽ സങ്കീർണ്ണമായ Rsyslog ടെംപ്ലേറ്റുകൾ ക്രമീകരിക്കുന്നതിന്, man rsyslog.conf കമാൻഡ് പ്രവർത്തിപ്പിച്ച് Rsyslog കോൺഫിഗറേഷൻ ഫയൽ മാനുവൽ വായിക്കുക അല്ലെങ്കിൽ Rsyslog ഓൺലൈൻ ഡോക്യുമെന്റേഷൻ പരിശോധിക്കുക.

# man rsyslog.conf

6. മുകളിലുള്ള കോൺഫിഗറേഷൻ മാറ്റങ്ങൾ വരുത്തിയ ശേഷം, ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിച്ച് സമീപകാല മാറ്റങ്ങൾ പ്രയോഗിക്കുന്നതിന് നിങ്ങൾക്ക് Rsyslog ഡെമൺ പുനരാരംഭിക്കാം.

# service rsyslog restart

7. ഒരിക്കൽ നിങ്ങൾ Rsyslog സെർവർ പുനരാരംഭിച്ചുകഴിഞ്ഞാൽ, അത് ഇപ്പോൾ ഒരു കേന്ദ്രീകൃത ലോഗ് സെർവറായി പ്രവർത്തിക്കുകയും സിസ്uലോഗ് ക്ലയന്റുകളിൽ നിന്നുള്ള സന്ദേശങ്ങൾ രേഖപ്പെടുത്തുകയും ചെയ്യും. Rsyslog നെറ്റ്uവർക്ക് സോക്കറ്റുകൾ സ്ഥിരീകരിക്കുന്നതിന്, rsyslog സ്ട്രിംഗ് ഫിൽട്ടർ ചെയ്യുന്നതിന് grep യൂട്ടിലിറ്റി പ്രവർത്തിപ്പിക്കുക.

# netstat -tulpn | grep rsyslog 

CentOS 8-ൽ netstat കമാൻഡ് ഇൻറ്റാൾ ചെയ്തില്ലെങ്കിൽ, താഴെ പറയുന്ന കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങൾക്കത് ഇൻസ്റ്റാൾ ചെയ്യാം.

# dnf whatprovides netstat
# dnf install net-tools

8. നിങ്ങൾക്ക് CentOS/RHEL 8-ൽ SELinux സജീവമാണെങ്കിൽ, നെറ്റ്uവർക്ക് സോക്കറ്റ് തരം അനുസരിച്ച് rsyslog ട്രാഫിക് അനുവദിക്കുന്നതിന് ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

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

CentOS 8-ൽ semanage കമാൻഡ് ഇൻസ്റ്റാൾ ചെയ്തില്ലെങ്കിൽ, താഴെ പറയുന്ന കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഇത് ഇൻസ്റ്റാൾ ചെയ്യാം.

# dnf whatprovides semanage
# dnf install policycoreutils-python-utils

9. നിങ്ങൾക്ക് സിസ്റ്റത്തിൽ ഒരു ഫയർവാൾ സജീവമാണെങ്കിൽ, ഫയർവാൾഡിലെ പോർട്ടുകളിൽ rsyslog ട്രാഫിക് അനുവദിക്കുന്നതിന് ആവശ്യമായ നിയമങ്ങൾ ചേർക്കുന്നതിനായി ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

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

കാണിച്ചിരിക്കുന്നതുപോലെ വൈറ്റ്uലിസ്റ്റ് ചെയ്uത IP ശ്രേണികളിൽ നിന്ന് പോർട്ട് 514-ലെ ഇൻകമിംഗ് കണക്ഷനുകൾ പരിമിതപ്പെടുത്താനും നിങ്ങൾക്ക് കഴിയും.

# firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="tcp" accept'
# firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="udp" accept'
# firewall-cmd --reload

അത്രയേയുള്ളൂ! Rsyslog ഇപ്പോൾ ഒരു കേന്ദ്രീകൃത ലോഗ് സെർവറായി ക്രമീകരിച്ചിരിക്കുന്നു, കൂടാതെ റിമോട്ട് ക്ലയന്റുകളിൽ നിന്ന് ലോഗുകൾ ശേഖരിക്കാനും കഴിയും. അടുത്ത ലേഖനത്തിൽ, CentOS/RHEL 8 സെർവറിൽ Rsyslog ക്ലയന്റ് എങ്ങനെ കോൺഫിഗർ ചെയ്യാമെന്ന് നോക്കാം.