ലിനക്സിൽ Rsyslog ഉപയോഗിച്ച് സെൻട്രൽ ലോഗിംഗ് സെർവർ എങ്ങനെ സജ്ജീകരിക്കാം


ഏതൊരു സോഫ്റ്റ്uവെയറിന്റെയോ ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെയോ നിർണായക ഘടകമാണ് ലോഗുകൾ. ലോഗുകൾ സാധാരണയായി ഉപയോക്താവിന്റെ പ്രവർത്തനങ്ങൾ, സിസ്റ്റം ഇവന്റുകൾ, നെറ്റ്uവർക്ക് ആക്uറ്റിവിറ്റി എന്നിവയും മറ്റും അവർ ഉദ്ദേശിക്കുന്നതിനെ ആശ്രയിച്ച് രേഖപ്പെടുത്തുന്നു. ലിനക്സ് സിസ്റ്റങ്ങളിൽ ഏറ്റവും വ്യാപകമായി ഉപയോഗിക്കുന്ന ലോഗിംഗ് സിസ്റ്റങ്ങളിലൊന്നാണ് rsyslog.

വിവിധ തരത്തിലുള്ള ഉറവിടങ്ങളിൽ നിന്ന് (സിസ്റ്റങ്ങൾ/ആപ്ലിക്കേഷനുകൾ) ഡാറ്റ സ്വീകരിക്കുകയും ഒന്നിലധികം ഫോർമാറ്റുകളിലേക്ക് ഔട്ട്പുട്ട് ചെയ്യുകയും ചെയ്യുന്ന ശക്തവും സുരക്ഷിതവും ഉയർന്ന പ്രവർത്തനക്ഷമതയുള്ളതുമായ ലോഗ് പ്രോസസ്സിംഗ് സിസ്റ്റമാണ് Rsyslog.

ഇത് ഒരു സാധാരണ സിസ്uലോഗ് ഡെമണിൽ നിന്ന് പൂർണ്ണമായും ഫീച്ചർ ചെയ്ത, എന്റർപ്രൈസ് ലെവൽ ലോഗിംഗ് സിസ്റ്റത്തിലേക്ക് പരിണമിച്ചു. ഇത് ഒരു ക്ലയന്റ്/സെർവർ മോഡലിലാണ് രൂപകൽപ്പന ചെയ്uതിരിക്കുന്നത്, അതിനാൽ ഇത് ഒരു ക്ലയന്റ് ആയും കൂടാതെ/അല്ലെങ്കിൽ മറ്റ് സെർവറുകൾ, നെറ്റ്uവർക്ക് ഉപകരണങ്ങൾ, റിമോട്ട് ആപ്ലിക്കേഷനുകൾ എന്നിവയ്uക്കായും ഒരു സെൻട്രൽ ലോഗിംഗ് സെർവറായി കോൺഫിഗർ ചെയ്യാവുന്നതാണ്.

ഈ ഗൈഡിന്റെ ആവശ്യത്തിനായി, ഞങ്ങൾ ഇനിപ്പറയുന്ന ഹോസ്റ്റുകൾ ഉപയോഗിക്കും:

  • സെർവർ: 192.168.241.140
  • ക്ലയന്റ്: 172.31.21.58

Rsyslog സെർവർ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യുകയും കോൺഫിഗർ ചെയ്യുകയും ചെയ്യാം

മിക്ക ലിനക്സ് വിതരണങ്ങളും rsyslog പാക്കേജ് പ്രീഇൻസ്റ്റാൾ ചെയ്തിട്ടാണ് വരുന്നത്. ഇത് ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ലെങ്കിൽ, കാണിച്ചിരിക്കുന്നതുപോലെ നിങ്ങളുടെ Linux പാക്കേജ് മാനേജർ ടൂൾ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഇത് ഇൻസ്റ്റാൾ ചെയ്യാം.

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

rsyslog ഇൻസ്റ്റാൾ ചെയ്തുകഴിഞ്ഞാൽ, നിങ്ങൾ ഇപ്പോൾ സേവനം ആരംഭിക്കേണ്ടതുണ്ട്, അത് ബൂട്ടിൽ യാന്ത്രികമായി ആരംഭിക്കാൻ പ്രവർത്തനക്ഷമമാക്കുകയും systemctl കമാൻഡ് ഉപയോഗിച്ച് അതിന്റെ നില പരിശോധിക്കുകയും വേണം.

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

പ്രധാന rsyslog കോൺഫിഗറേഷൻ ഫയൽ സ്ഥിതി ചെയ്യുന്നത് /etc/rsyslog.conf ആണ്, അത് മൊഡ്യൂളുകൾ ലോഡുചെയ്യുന്നു, ആഗോള നിർദ്ദേശങ്ങൾ നിർവചിക്കുന്നു, ലോഗ് സന്ദേശങ്ങൾ പ്രോസസ്സ് ചെയ്യുന്നതിനുള്ള നിയമങ്ങൾ ഉൾക്കൊള്ളുന്നു, കൂടാതെ വിവിധ ആപ്ലിക്കേഷനുകൾ/സേവനങ്ങൾക്കായി /etc/rsyslog.d/ എന്നതിലെ എല്ലാ കോൺഫിഗറേഷൻ ഫയലുകളും ഇതിൽ ഉൾപ്പെടുന്നു. .

$ sudo vim /etc/rsyslog.conf

സ്ഥിരസ്ഥിതിയായി, systemd ജേണലിൽ നിന്ന് ഘടനാപരമായ ലോഗ് സന്ദേശങ്ങൾ ഇറക്കുമതി ചെയ്യുന്നതിനും Unix സോക്കറ്റുകൾ വഴി ലോക്കൽ സിസ്റ്റത്തിൽ പ്രവർത്തിക്കുന്ന ആപ്ലിക്കേഷനുകളിൽ നിന്ന് syslog സന്ദേശങ്ങൾ സ്വീകരിക്കുന്നതിനും rsyslog, imjournal, imusock മൊഡ്യൂളുകൾ ഉപയോഗിക്കുന്നു.

ഒരു നെറ്റ്uവർക്ക്/സെൻട്രൽ ലോഗിംഗ് സെർവറായി rsyslog കോൺഫിഗർ ചെയ്യുന്നതിന്, വിദൂര സിസ്uലോഗ് റിസപ്ഷനും അത് കേൾക്കുന്ന പോർട്ടിനും ഉപയോഗിക്കുന്ന പ്രോട്ടോക്കോൾ (UDP അല്ലെങ്കിൽ TCP അല്ലെങ്കിൽ രണ്ടും) നിങ്ങൾ സജ്ജീകരിക്കേണ്ടതുണ്ട്.

നിങ്ങൾക്ക് വേഗതയേറിയതും എന്നാൽ വിശ്വസനീയമല്ലാത്തതുമായ ഒരു യുഡിപി കണക്ഷൻ ഉപയോഗിക്കണമെങ്കിൽ, ചുവടെയുള്ള വരികൾ തിരയുകയും അഭിപ്രായമിടാതിരിക്കുകയും ചെയ്യുക (514-ന് പകരം നിങ്ങൾ അത് കേൾക്കാൻ ആഗ്രഹിക്കുന്ന പോർട്ട് ഉപയോഗിച്ച്, ഇത് ക്ലയന്റുകൾ സന്ദേശങ്ങൾ അയയ്uക്കുന്ന പോർട്ട് വിലാസവുമായി പൊരുത്തപ്പെടണം, ഞങ്ങൾ നോക്കും. ഒരു rsyslog ക്ലയന്റ് കോൺഫിഗർ ചെയ്യുമ്പോൾ ഇതിൽ കൂടുതൽ).

$ModLoad imudp
$UDPServerRun 514

TCP കണക്ഷൻ ഉപയോഗിക്കുന്നതിന് (ഇത് വേഗത കുറഞ്ഞതും എന്നാൽ കൂടുതൽ വിശ്വസനീയവുമാണ്), ചുവടെയുള്ള വരികൾ തിരയുകയും അഭിപ്രായമിടാതിരിക്കുകയും ചെയ്യുക.

$ModLoad imtcp
$InputTCPServerRun 514

ഈ സാഹചര്യത്തിൽ, UDP, TCP കണക്ഷനുകൾ ഒരേ സമയം ഉപയോഗിക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു.

അടുത്തതായി, ഇനിപ്പറയുന്ന ഫോർമാറ്റിൽ റിമോട്ട് ലോഗുകൾ പ്രോസസ്സ് ചെയ്യുന്നതിനുള്ള റൂൾസെറ്റ് നിങ്ങൾ നിർവചിക്കേണ്ടതുണ്ട്.

facility.severity_level	destination (where to store log)

എവിടെ:

  • സൌകര്യം: പ്രോസസ്സ്/ആപ്ലിക്കേഷൻ ജനറേറ്റിംഗ് സന്ദേശത്തിന്റെ തരമാണ്, അവയിൽ ഓത്ത്, ക്രോൺ, ഡെമൺ, കേർണൽ, ലോക്കൽ0..ലോക്കൽ7 എന്നിവ ഉൾപ്പെടുന്നു. * ഉപയോഗിക്കുന്നത് എല്ലാ സൗകര്യങ്ങളും അർത്ഥമാക്കുന്നു.
  • severity_level: ലോഗ് സന്ദേശത്തിന്റെ തരമാണ്: emerg-0, alert-1, crit-2, err-3, warn-4, notice-5, info-6, debug-7. * ഉപയോഗിക്കുന്നത് എല്ലാ തീവ്രത ലെവലും അർത്ഥമാക്കുന്നു, ഒന്നും തീവ്രത ലെവലിനെ സൂചിപ്പിക്കുന്നില്ല.
  • ലക്ഷ്യം: ഒന്നുകിൽ ലോക്കൽ ഫയലോ റിമോട്ട് rsyslog സെർവറോ ആണ് (ഫോം IP:port ൽ നിർവചിച്ചിരിക്കുന്നത്).

RemoteLogs ടെംപ്ലേറ്റ് ഉപയോഗിച്ച് റിമോട്ട് ഹോസ്റ്റുകളിൽ നിന്ന് ലോഗുകൾ ശേഖരിക്കുന്നതിന് ഞങ്ങൾ ഇനിപ്പറയുന്ന റൂൾസെറ്റ് ഉപയോഗിക്കും. സ്ക്രീൻഷോട്ടിൽ കാണിച്ചിരിക്കുന്നതുപോലെ, പ്രാദേശിക സന്ദേശങ്ങൾ പ്രോസസ്സ് ചെയ്യുന്നതിനുള്ള ഏതെങ്കിലും നിയമങ്ങൾക്ക് മുമ്പായി ഈ നിയമങ്ങൾ വരണം എന്നത് ശ്രദ്ധിക്കുക.

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

മുകളിലെ റൂൾസെറ്റ് നോക്കുമ്പോൾ, ആദ്യ നിയമം \$ടെംപ്ലേറ്റ് റിമോട്ട്ലോഗുകൾ,/var/log/%HOSTNAME%/%PROGRAMNAME%.log ആണ്.

നിർവചിച്ച പ്രകാരം സന്ദേശങ്ങൾ ജനറേറ്റ് ചെയ്ത ഹോസ്റ്റ്നാമം (ക്ലയന്റ് മെഷീൻ നാമം), റിമോട്ട് ക്ലയന്റ് സൗകര്യം (പ്രോഗ്രാം/അപ്ലിക്കേഷൻ) എന്നിവയെ അടിസ്ഥാനമാക്കി, /var/log എന്നതിന് കീഴിലുള്ള വ്യത്യസ്uത ലോഗുകളിലേക്ക് ലഭിച്ച എല്ലാ റിമോട്ട് സന്ദേശങ്ങളും ശേഖരിക്കാനും എഴുതാനും $ടെംപ്ലേറ്റ് നിർദ്ദേശം rsyslog ഡെമണിനോട് പറയുന്നു. RemoteLogs എന്ന ടെംപ്ലേറ്റിലെ ക്രമീകരണങ്ങൾ വഴി.

രണ്ടാമത്തെ വരി \*.* ?RemoteLogs എന്നാൽ RemoteLogs ടെംപ്ലേറ്റ് കോൺഫിഗറേഷൻ ഉപയോഗിച്ച് എല്ലാ തീവ്രത തലങ്ങളിലും എല്ലാ സൗകര്യങ്ങളിൽ നിന്നും സന്ദേശങ്ങൾ റെക്കോർഡ് ചെയ്യുക എന്നാണ് അർത്ഥമാക്കുന്നത്.

അവസാന വരി \& ~ ഒരു ഫയലിലേക്ക് സന്ദേശങ്ങൾ എഴുതിക്കഴിഞ്ഞാൽ അത് പ്രോസസ്സ് ചെയ്യുന്നത് നിർത്താൻ rsyslog-നോട് നിർദ്ദേശിക്കുന്നു. നിങ്ങൾ “& ~” ഉൾപ്പെടുത്തിയില്ലെങ്കിൽ, പകരം സന്ദേശങ്ങൾ പ്രാദേശിക ഫയലുകളിലേക്ക് എഴുതപ്പെടും.

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

rsyslog സെർവർ കോൺഫിഗർ ചെയ്യുന്നത് അത്രമാത്രം. കോൺഫിഗറേഷൻ ഫയൽ സംരക്ഷിച്ച് അടയ്ക്കുക. സമീപകാല മാറ്റങ്ങൾ പ്രയോഗിക്കുന്നതിന്, ഇനിപ്പറയുന്ന കമാൻഡ് ഉപയോഗിച്ച് rsyslog ഡെമൺ പുനരാരംഭിക്കുക.

$ sudo systemctl restart rsyslog

ഇപ്പോൾ rsyslog നെറ്റ്uവർക്ക് സോക്കറ്റുകൾ പരിശോധിക്കുക. rsyslogd കണക്ഷനുകൾ ഫിൽട്ടർ ചെയ്യാൻ ss കമാൻഡ് ഉപയോഗിക്കുക (അല്ലെങ്കിൽ grep.

$ sudo ss -tulnp | grep "rsyslog"

അടുത്തതായി, CentOS 7-ൽ, നിങ്ങൾ SELinux പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെങ്കിൽ, നെറ്റ്uവർക്ക് സോക്കറ്റ് തരം അടിസ്ഥാനമാക്കി 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 ക്ലയന്റ് എങ്ങനെ കോൺഫിഗർ ചെയ്യാം

ഇപ്പോൾ ക്ലയന്റ് സിസ്റ്റത്തിൽ, ഇനിപ്പറയുന്ന കമാൻഡ് ഉപയോഗിച്ച് 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

മുകളിലുള്ള നിയമം എല്ലാ സൗകര്യങ്ങളിൽ നിന്നും എല്ലാ തീവ്രത തലങ്ങളിൽ നിന്നും സന്ദേശങ്ങൾ അയയ്ക്കും. ഒരു നിർദ്ദിഷ്uട സൗകര്യത്തിൽ നിന്ന് സന്ദേശങ്ങൾ അയയ്uക്കാൻ, ഉദാഹരണത്തിന് auth, ഇനിപ്പറയുന്ന നിയമം ഉപയോഗിക്കുക.

auth. *  @@192.168.100.10:514

മാറ്റങ്ങൾ സംരക്ഷിച്ച് കോൺഫിഗറേഷൻ ഫയൽ അടയ്ക്കുക. മുകളിലുള്ള ക്രമീകരണങ്ങൾ പ്രയോഗിക്കുന്നതിന്, rsyslog ഡെമൺ പുനരാരംഭിക്കുക.

$ sudo systemctl restart rsyslog

Rsyslog സെർവറിൽ റിമോട്ട് ലോഗിംഗ് എങ്ങനെ നിരീക്ഷിക്കാം

ഹോസ്റ്റ്uനാമം/programname.log എന്ന ഫോമിൽ, /var/log-ന് കീഴിൽ, ക്ലയന്റിൽനിന്ന് rsyslog സന്ദേശങ്ങൾ സ്വീകരിക്കുകയും ലോഗ് ചെയ്യുകയും ചെയ്യുന്നുണ്ടോ എന്ന് പരിശോധിക്കുന്നതാണ് അവസാന ഘട്ടം.

പാരന്റ് ലോഗ് ഡയറക്uടറിയുടെ ദൈർഘ്യമേറിയ ലിസ്റ്റിംഗിലേക്ക് ഒരു ls കമാൻഡ് പ്രവർത്തിപ്പിക്കുക, കൂടാതെ ip-172.31.21.58 (അല്ലെങ്കിൽ നിങ്ങളുടെ ക്ലയന്റ് മെഷീന്റെ ഹോസ്റ്റ് നെയിം എന്തായാലും) എന്നൊരു ഡയറക്ടറി ഉണ്ടോയെന്ന് പരിശോധിക്കുക.

 
$ ls -l /var/log/

ഡയറക്uടറി നിലവിലുണ്ടെങ്കിൽ, പ്രവർത്തിപ്പിച്ച് അതിനുള്ളിലെ ലോഗ് ഫയലുകൾ പരിശോധിക്കുക.

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

ക്ലയന്റ്/സെർവർ ആർക്കിടെക്ചറിൽ രൂപകൽപന ചെയ്ത ഉയർന്ന പ്രവർത്തനക്ഷമതയുള്ള ലോഗ് പ്രോസസ്സിംഗ് സിസ്റ്റമാണ് Rsyslog. ഈ ഗൈഡിൽ പ്രദർശിപ്പിച്ചിരിക്കുന്നതുപോലെ, ഒരു സെൻട്രൽ/നെറ്റ്uവർക്ക് ലോഗിംഗ് സെർവറായും ഒരു ക്ലയന്റ് ആയും നിങ്ങൾക്ക് Rsyslog ഇൻസ്റ്റാൾ ചെയ്യാനും കോൺഫിഗർ ചെയ്യാനും കഴിയുമെന്ന് ഞങ്ങൾ പ്രതീക്ഷിക്കുന്നു.

കൂടുതൽ സഹായത്തിനായി നിങ്ങൾക്ക് പ്രസക്തമായ rsyslog മാനുവൽ പേജുകളും റഫർ ചെയ്യാവുന്നതാണ്. ഞങ്ങൾക്ക് എന്തെങ്കിലും ഫീഡ്uബാക്ക് നൽകാനോ ചോദ്യങ്ങൾ ചോദിക്കാനോ മടിക്കേണ്ടതില്ല.