ວິທີການຕິດຕັ້ງ Server logging Central ກັບ Rsyslog ໃນ Linux


ບັນທຶກແມ່ນສ່ວນປະກອບ ສຳ ຄັນຂອງຊອບແວຫຼືລະບົບປະຕິບັດການໃດໆ. ບັນທຶກສ່ວນໃຫຍ່ມັກຈະບັນທຶກການກະ ທຳ ຂອງຜູ້ໃຊ້, ເຫດການລະບົບ, ກິດຈະ ກຳ ເຄືອຂ່າຍແລະອື່ນໆ, ຂື້ນກັບສິ່ງທີ່ພວກມັນມີຈຸດປະສົງ. ໜຶ່ງ ໃນລະບົບການຕັດໄມ້ທີ່ໃຊ້ກັນຢ່າງແຜ່ຫຼາຍທີ່ສຸດໃນລະບົບ Linux ແມ່ນ rsyslog.

Rsyslog ແມ່ນລະບົບການປຸງແຕ່ງບັນທຶກຂໍ້ມູນທີ່ມີປະສິດທິພາບສູງ, ມີຄວາມປອດໄພແລະມີປະສິດຕິພາບສູງເຊິ່ງຍອມຮັບຂໍ້ມູນຈາກຫລາຍໆແຫລ່ງທີ່ແຕກຕ່າງກັນ (ລະບົບ/ແອບພິເຄຊັນ) ແລະສົ່ງຜົນໃຫ້ມັນອອກເປັນຫລາຍຮູບແບບ.

ມັນໄດ້ປ່ຽນແປງຈາກ syslog daemon ປົກກະຕິໄປສູ່ລະບົບການຕັດໄມ້ໃນລະດັບວິສາຫະກິດທີ່ມີຮູບແບບເຕັມຮູບແບບ. ມັນຖືກອອກແບບມາໃນຮູບແບບຂອງລູກຄ້າ/server, ສະນັ້ນມັນສາມາດຖືກຕັ້ງຄ່າໃຫ້ເປັນລູກຄ້າແລະ/ຫຼືເປັນເຄື່ອງບັນທຶກຂໍ້ມູນສູນກາງ ສຳ ລັບເຄື່ອງແມ່ຂ່າຍອື່ນ, ອຸປະກອນເຄືອຂ່າຍແລະການ ນຳ ໃຊ້ຫ່າງໄກສອກຫຼີກ.

ສຳ ລັບຈຸດປະສົງຂອງ ຄຳ ແນະ ນຳ ນີ້, ພວກເຮົາຈະ ນຳ ໃຊ້ເຈົ້າພາບຕໍ່ໄປນີ້:

  • Server: 192.168.241.140
  • ລູກຄ້າ: 172.31.21.58

ວິທີການຕິດຕັ້ງແລະຕັ້ງຄ່າ Server Rsyslog

ການແຈກຈ່າຍ Linux ສ່ວນຫລາຍມາພ້ອມກັບຊຸດ 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, ເຊິ່ງໂຫລດໂມດູນ, ກຳ ນົດທິດທາງທົ່ວໂລກ, ມີກົດລະບຽບ ສຳ ລັບການປຸງແຕ່ງຂໍ້ຄວາມບັນທຶກແລະມັນຍັງລວມເອົາແຟ້ມ config ທັງ ໝົດ ໃນ /etc/rsyslog.d/ ສຳ ລັບໂປແກຼມຕ່າງໆ/ບໍລິການຕ່າງໆ .

$ sudo vim /etc/rsyslog.conf

ໂດຍຄ່າເລີ່ມຕົ້ນ, rsyslog ໃຊ້ໂມດູນ imjournal ແລະ imusock ສຳ ລັບການ ນຳ ເຂົ້າຂໍ້ມູນບັນທຶກທີ່ມີໂຄງສ້າງຈາກວາລະສານ systemd ແລະ ສຳ ລັບການຍອມຮັບຂໍ້ຄວາມ syslog ຈາກແອັບພລິເຄຊັນທີ່ແລ່ນຢູ່ໃນລະບົບທ້ອງຖິ່ນຜ່ານ Unix socks ຕາມ ລຳ ດັບ.

ເພື່ອຕັ້ງຄ່າ rsyslog ເປັນເຄືອຂ່າຍ/ເຊີເວີ້ຕັດໄມ້ສູນກາງ, ທ່ານ ຈຳ ເປັນຕ້ອງ ກຳ ນົດໂປໂຕຄອນ (ບໍ່ວ່າຈະເປັນ UDP ຫຼື TCP ຫລືທັງສອງ) ມັນຈະໃຊ້ ສຳ ລັບການຮັບ syslog ຫ່າງໄກສອກຫຼີກເຊັ່ນດຽວກັບພອດທີ່ມັນຟັງ.

ຖ້າທ່ານຕ້ອງການໃຊ້ການເຊື່ອມຕໍ່ UDP, ເຊິ່ງໄວກວ່າແຕ່ບໍ່ ໜ້າ ເຊື່ອຖື, ຄົ້ນຫາແລະບໍ່ສະດວກສາຍຂ້າງລຸ່ມນີ້ (ປ່ຽນແທນເລກທີ່ 514 ກັບພອດທີ່ທ່ານຕ້ອງການໃຫ້ມັນຟັງ, ນີ້ຄວນກົງກັບທີ່ຢູ່ທີ່ Port ທີ່ລູກຄ້າສົ່ງຂໍ້ຄວາມໄປຫາ, ພວກເຮົາຈະເບິ່ງ ທີ່ນີ້ເພີ່ມເຕີມເມື່ອ ກຳ ນົດຄ່າລູກຄ້າ rsyslog).

$ModLoad imudp
$UDPServerRun 514

ເພື່ອ ນຳ ໃຊ້ການເຊື່ອມຕໍ່ TCP (ເຊິ່ງຊ້າກວ່າແຕ່ ໜ້າ ເຊື່ອຖືກວ່າ), ຄົ້ນຫາແລະບໍ່ສະດວກຕາມເສັ້ນທາງລຸ່ມ.

$ModLoad imtcp
$InputTCPServerRun 514

ໃນກໍລະນີນີ້, ພວກເຮົາຕ້ອງການໃຊ້ທັງການເຊື່ອມຕໍ່ UDP ແລະ TCP ພ້ອມໆກັນ.

ຕໍ່ໄປ, ທ່ານ ຈຳ ເປັນຕ້ອງ ກຳ ນົດລະບຽບການ ສຳ ລັບການປະມວນຜົນບັນທຶກຫ່າງໄກສອກຫຼີກໃນຮູບແບບຕໍ່ໄປນີ້.

facility.severity_level	destination (where to store log)

ບ່ອນທີ່:

  • ສິ່ງ ອຳ ນວຍຄວາມສະດວກ: ແມ່ນປະເພດຂອງຂະບວນການ/ການສ້າງຂໍ້ຄວາມ, ພວກມັນປະກອບມີ auth, cron, daemon, kernel, local0..local7. ການໃຊ້ * ໝາຍ ເຖິງສິ່ງ ອຳ ນວຍຄວາມສະດວກທັງ ໝົດ.
  • severity_level: ແມ່ນປະເພດຂອງ log log: emerg-0, alert-1, crit-2, err-3, warning-4, notice-5, info-6, debug-7. ການ ນຳ ໃຊ້ * ໝາຍ ເຖິງລະດັບຄວາມຮຸນແຮງທັງ ໝົດ ແລະບໍ່ມີຄວາມ ໝາຍ ຫຍັງເລີຍໃນລະດັບຄວາມຮຸນແຮງ.
  • ຈຸດ ໝາຍ ປາຍທາງ: ແມ່ນທັງໄຟລ໌ໃນທ້ອງຖິ່ນຫລື server server ຫ່າງໄກສອກຫຼີກ (ທີ່ ກຳ ນົດໃນ IP: port).

ພວກເຮົາຈະ ນຳ ໃຊ້ກົດລະບຽບຕໍ່ໄປນີ້ເພື່ອເກັບ ກຳ ຂໍ້ມູນບັນທຶກຈາກໂຮດຫ່າງໄກສອກຫຼີກ, ໂດຍໃຊ້ແມ່ແບບ RemoteLogs. ໃຫ້ສັງເກດວ່າກົດລະບຽບເຫຼົ່ານີ້ຕ້ອງມີກ່ອນກົດລະບຽບໃດໆ ສຳ ລັບການປຸງແຕ່ງຂໍ້ຄວາມທ້ອງຖິ່ນ, ດັ່ງທີ່ສະແດງຢູ່ໃນພາບ ໜ້າ ຈໍ.

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

ເບິ່ງກົດລະບຽບຂ້າງເທິງ, ກົດລະບຽບ ທຳ ອິດແມ່ນ "$template RemoteLogs,"/var/log /% HOSTNAME% /% PROGRAMNAME% .log”

ຄຳ ສັ່ງ $template ບອກ rsyslog daemon ໃຫ້ລວບລວມແລະຂຽນທັງ ໝົດ ຂອງຂໍ້ຄວາມທີ່ຢູ່ຫ່າງໄກສອກຫຼີກເຂົ້າໄປໃນບັນທຶກທີ່ແຕກຕ່າງກັນພາຍໃຕ້/var/log, ອີງໃສ່ຊື່ໂຮດ (ຊື່ເຄື່ອງລູກຄ້າ) ແລະສະຖານທີ່ລູກຄ້າຫ່າງໄກສອກຫຼີກ (ໂປແກຼມ/ແອັບພລິເຄຊັນ) ທີ່ສ້າງຂໍ້ຄວາມດັ່ງທີ່ໄດ້ ກຳ ນົດ ໂດຍການຕັ້ງຄ່າທີ່ມີຢູ່ໃນ RemoteLogs ຂອງແມ່ແບບ.

ສາຍທີສອງ“ *. *? RemoteLogs” ໝາຍ ເຖິງການບັນທຶກຂໍ້ຄວາມຈາກທຸກສະຖານທີ່ໃນທຸກລະດັບທີ່ຮຸນແຮງໂດຍໃຊ້ການຕັ້ງຄ່າຂອງແມ່ແບບ RemoteLogs.

ສາຍສຸດທ້າຍ“ & ~” ແນະ ນຳ rsyslog ໃຫ້ຢຸດການປະມວນຜົນຂໍ້ຄວາມເມື່ອມັນຖືກຂຽນໃສ່ແຟ້ມ. ຖ້າທ່ານບໍ່ລວມ“ & ~”, ຂໍ້ຄວາມຈະຖືກຂຽນໃສ່ແຟ້ມທ້ອງຖິ່ນ.

ມີແມ່ແບບອື່ນຫຼາຍຢ່າງທີ່ທ່ານສາມາດໃຊ້, ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມ, ເບິ່ງ ໜ້າ ຜູ້ຊາຍການຕັ້ງຄ່າ rsyslog (man rsyslog.conf) ຫຼືອ້າງອີງໃສ່ເອກະສານ online ຂອງ Rsyslog.

ມັນແມ່ນການຕັ້ງຄ່າເຊີຟເວີ rsyslog. ບັນທຶກແລະປິດເອກະສານການຕັ້ງຄ່າ. ເພື່ອປະຕິບັດການປ່ຽນແປງທີ່ຜ່ານມາ, ເລີ່ມຕົ້ນ da rs rslog daemon ໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

$ sudo systemctl restart rsyslog

ຕອນນີ້ພິສູດເຕົ້າຮັບເຄືອຂ່າຍ rsyslog. ໃຊ້ ຄຳ ສັ່ງ ss (ຫຼື grep ເພື່ອກັ່ນຕອງການເຊື່ອມຕໍ່ rsyslogd.

$ 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 

ຖ້າລະບົບໄດ້ເປີດໃຊ້ໄຟວໍ, ທ່ານ ຈຳ ເປັນຕ້ອງເປີດພອດ 514 ເພື່ອອະນຸຍາດໃຫ້ທັງສອງເຊື່ອມຕໍ່ UDP/TCP ກັບ server rsyslog, ໂດຍການເຮັດວຽກ.

------------- 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 Server

ຕອນນີ້ຢູ່ໃນລະບົບລູກຄ້າ, ໃຫ້ກວດເບິ່ງວ່າບໍລິການ 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

ເພື່ອບັງຄັບໃຫ້ days rsyslog ເຮັດ ໜ້າ ທີ່ເປັນລູກຄ້າ log ແລະສົ່ງຕໍ່ທຸກໆຂໍ້ມູນບັນທຶກທີ່ສ້າງຂື້ນໃນທ້ອງຖິ່ນໃຫ້ກັບ server server ຫ່າງໄກສອກຫຼີກ, ເພີ່ມກົດລະບຽບການສົ່ງຕໍ່ນີ້, ໃນຕອນທ້າຍຂອງເອກະສານດັ່ງທີ່ສະແດງຢູ່ໃນພາບ ໜ້າ ຈໍຕໍ່ໄປນີ້.

*. *  @@192.168.100.10:514

ກົດລະບຽບຂ້າງເທິງນີ້ຈະສົ່ງຂໍ້ຄວາມຈາກທຸກສະຖານທີ່ແລະທຸກລະດັບທີ່ຮຸນແຮງ. ເພື່ອສົ່ງຂໍ້ຄວາມຈາກສະຖານທີ່ສະເພາະ ສຳ ລັບຕົວຢ່າງ auth, ໃຫ້ໃຊ້ກົດລະບຽບຕໍ່ໄປນີ້.

auth. *  @@192.168.100.10:514

ບັນທຶກການປ່ຽນແປງແລະປິດເອກະສານການຕັ້ງຄ່າ. ເພື່ອປະຕິບັດການຕັ້ງຄ່າຂ້າງເທິງ, ເລີ່ມຕົ້ນ da rs rslog daemon.

$ sudo systemctl restart rsyslog

ວິທີການຕິດຕາມກວດກາການບັນທຶກໄລຍະໄກໃນ Rsyslog Server

ຂັ້ນຕອນສຸດທ້າຍແມ່ນການກວດສອບວ່າ 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 ແມ່ນລະບົບການປຸງແຕ່ງທ່ອນທີ່ມີປະສິດຕິພາບສູງ, ຖືກອອກແບບຕາມສະຖາປັດຕະຍະ ກຳ ຂອງລູກຄ້າ/server. ພວກເຮົາຫວັງວ່າທ່ານຈະສາມາດຕິດຕັ້ງແລະ ກຳ ຫນົດຄ່າ Rsyslog ເປັນເຄື່ອງແມ່ຂ່າຍການຕັດໄມ້ສູນກາງ/ເຄືອຂ່າຍແລະເປັນລູກຄ້າຕາມທີ່ໄດ້ສະແດງໃນຄູ່ມືນີ້

ທ່ານອາດຈະຕ້ອງການອ້າງອີງເຖິງ ໜ້າ ຄູ່ມື rsyslog ທີ່ກ່ຽວຂ້ອງເພື່ອຂໍຄວາມຊ່ວຍເຫຼືອເພີ່ມເຕີມ. ຮູ້ສຶກວ່າບໍ່ເສຍຄ່າທີ່ຈະໃຫ້ພວກເຮົາມີ ຄຳ ຕິຊົມຫຼືຖາມ ຄຳ ຖາມ.