ວິທີການສ້າງ Server Central Log ກັບ Rsyslog ໃນ CentOS/RHEL 7


ເພື່ອໃຫ້ຜູ້ເບິ່ງແຍງລະບົບສາມາດ ກຳ ນົດຫຼືແກ້ໄຂບັນຫາທີ່ເກີດຂື້ນໃນລະບົບເຊີຟເວີຂອງ CentOS 7 ຫຼື RHEL 7, ມັນຕ້ອງຮູ້ແລະເບິ່ງເຫດການທີ່ເກີດຂື້ນໃນລະບົບໃນໄລຍະເວລາສະເພາະຈາກບັນທຶກແຟ້ມເກັບຮັກສາໄວ້ໃນລະບົບໃນ/var/log directory.

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

ໃນລະບົບ CentOS/RHEL 7, Rsyslog daemon ແມ່ນ server server ຕົ້ນຕໍທີ່ຕິດຕັ້ງໄວ້ກ່ອນ, ຕິດຕາມດ້ວຍ Systemd Journal Daemon (journald).

Rsyslog server ໃນການກໍ່ສ້າງເປັນບໍລິການສະຖາປັດຕະຍະ ກຳ ຂອງລູກຄ້າ/server ແລະສາມາດບັນລຸທັງສອງພາລະບົດບາດພ້ອມກັນ. ມັນສາມາດເຮັດວຽກເປັນ server ແລະເກັບ ກຳ ຂໍ້ມູນບັນທຶກທັງ ໝົດ ທີ່ສົ່ງຕໍ່ໂດຍອຸປະກອນອື່ນໃນເຄືອຂ່າຍຫລືມັນສາມາດເຮັດວຽກເປັນລູກຄ້າໄດ້ໂດຍການສົ່ງເຫດການທັງ ໝົດ ຂອງລະບົບພາຍໃນເຂົ້າສູ່ server syslog endpoint remote.

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

ເຊີຟເວີ Syslog ເຮັດວຽກຂໍ້ຄວາມບັນທຶກໃດໆໂດຍໃຊ້ໂຄງການຕໍ່ໄປນີ້:

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

A. ຂໍ້ມູນສະຖານທີ່ຫລືປະເພດແມ່ນສະແດງໂດຍຂັ້ນຕອນຂອງລະບົບພາຍໃນທີ່ສ້າງຂໍ້ຄວາມ. ໃນຂະບວນການພາຍໃນ Linux (ສິ່ງ ອຳ ນວຍຄວາມສະດວກ) ທີ່ສ້າງບັນທຶກແມ່ນໄດ້ມາດຕະຖານດັ່ງຕໍ່ໄປນີ້:

  • auth = ຂໍ້ຄວາມທີ່ສ້າງຂື້ນໂດຍຂະບວນການກວດສອບ (ເຂົ້າສູ່ລະບົບ).
  • cron = ຂໍ້ຄວາມທີ່ສ້າງຂື້ນໂດຍຂະບວນການທີ່ ກຳ ນົດ (crontab).
  • daemon = ຂໍ້ຄວາມທີ່ສ້າງຂື້ນໂດຍ daemons (ບໍລິການພາຍໃນ).
  • ແກ່ນແຄນ = ຂໍ້ຄວາມທີ່ຜະລິດໂດຍ Linux Kernel ເອງ.
  • mail = ຂໍ້ຄວາມທີ່ຜະລິດໂດຍເຄື່ອງແມ່ຂ່າຍເມລ.
  • syslog = ຂໍ້ຄວາມທີ່ຜະລິດຈາກ daad rsyslog ເອງ.
  • lpr = ຂໍ້ຄວາມທີ່ຜະລິດໂດຍຜູ້ພິມທ້ອງຖິ່ນຫຼືເຄື່ອງແມ່ຂ່າຍພິມ.
  • local0 - local7 = ຂໍ້ຄວາມທີ່ ກຳ ຫນົດເອງ ກຳ ນົດໂດຍຜູ້ບໍລິຫານ (local7 ມັກຈະຖືກມອບ ໝາຍ ໃຫ້ Cisco ຫຼື Windows).

B. ລະດັບບຸລິມະສິດ (ຄວາມຮຸນແຮງ) ແມ່ນໄດ້ມາດຕະຖານເຊັ່ນກັນ. ແຕ່ລະບຸລິມະສິດແມ່ນຖືກມອບ ໝາຍ ໃຫ້ມີຕົວຫຍໍ້ມາດຕະຖານແລະຕົວເລກທີ່ໄດ້ອະທິບາຍໄວ້ຂ້າງລຸ່ມນີ້. ບູລິມະສິດທີ 7 ແມ່ນລະດັບທີ່ສູງກວ່າທັງ ໝົດ.

  • emerg = ສຸກເສີນ - 0
  • ເຕືອນ = ການແຈ້ງເຕືອນ - 1
  • ຜິດພາດ = ຂໍ້ຜິດພາດ - 3
  • ເຕືອນ = ຄຳ ເຕືອນ - 4
  • ແຈ້ງການ = ແຈ້ງການ - 5
  • ຂໍ້ມູນ = ຂໍ້ມູນ - 6
  • debug = ການແກ້ໄຂ - 7

ຄຳ ສຳ ຄັນຂອງ Rsyslog:

  • * = ທຸກສິ່ງ ອຳ ນວຍຄວາມສະດວກຫຼືບູລິມະສິດ
  • ບໍ່ມີ = ສິ່ງ ອຳ ນວຍຄວາມສະດວກບໍ່ໄດ້ໃຫ້ຄວາມ ສຳ ຄັນເປັນຕົ້ນ: mail.none

C. ພາກທີສາມ ສຳ ລັບໂຄງການ syslog ແມ່ນສະແດງໂດຍ ຄຳ ແນະ ນຳ ກ່ຽວກັບຈຸດ ໝາຍ ປາຍທາງ. Rsyslog daemon ສາມາດສົ່ງຂໍ້ຄວາມບັນທຶກເພື່ອຂຽນໃນແຟ້ມເອກະສານທີ່ຢູ່ໃນລະບົບແຟ້ມທ້ອງຖິ່ນ (ສ່ວນຫຼາຍແມ່ນຢູ່ໃນແຟ້ມໃນ/var/log/directory) ຫຼືຖືກສົ່ງໄປຫາຂັ້ນຕອນອື່ນຂອງທ້ອງຖິ່ນຫຼືສົ່ງໄປທີ່ console user ຂອງທ້ອງຖິ່ນ (ເພື່ອ stdout) , ຫຼືສົ່ງຂໍ້ຄວາມໄປຫາ server syslog ຫ່າງໄກສອກຫຼີກຜ່ານໂປໂຕຄອນ TCP/UDP, ຫຼືແມ້ກະທັ້ງຍົກເລີກຂໍ້ຄວາມໄປຍັງ/dev/null.

ເພື່ອຕັ້ງຄ່າ CentOS/RHEL 7 ໃຫ້ເປັນລະບົບເຊັນເຊີເຊັນເຊີກາງ, ທຳ ອິດພວກເຮົາຕ້ອງກວດສອບແລະຮັບປະກັນວ່າສ່ວນແບ່ງ/var ທີ່ບັນທຶກແຟ້ມທັງ ໝົດ ຈະມີຂະ ໜາດ ໃຫຍ່ພໍ (ຈຳ ນວນ GB ໜ້ອຍ ສຸດ) ເພື່ອຈະສາມາດເກັບຮັກສາໄດ້ທັງ ໝົດ log file ທີ່ຈະຖືກສົ່ງໂດຍອຸປະກອນອື່ນ. ມັນເປັນການຕັດສິນໃຈທີ່ດີທີ່ຈະໃຊ້ drive ແຍກຕ່າງຫາກ (LVM, RAID) ເພື່ອຕິດຕັ້ງໄດເລກະທໍລີ/var/log /.

<

  • CentOS 7.3 ຂັ້ນຕອນການຕິດຕັ້ງ
  • RHEL 7.3 ຂັ້ນຕອນການຕິດຕັ້ງ
  • ວິທີການຕັ້ງຄ່າ Rsyslog ໃນ CentOS/RHEL 7 Server

    1. ໂດຍຄ່າເລີ່ມຕົ້ນ, ບໍລິການ Rsyslog ຖືກຕິດຕັ້ງໂດຍອັດຕະໂນມັດແລະຄວນເຮັດວຽກຢູ່ໃນ CentOS/RHEL 7. ເພື່ອກວດສອບວ່າ daemon ໄດ້ເລີ່ມຕົ້ນໃນລະບົບ, ອອກ ຄຳ ສັ່ງຕໍ່ໄປນີ້ໂດຍມີສິດທິພິເສດຮາກ.

    # systemctl status rsyslog.service
    

    ຖ້າບໍລິການບໍ່ເຮັດວຽກໂດຍຄ່າເລີ່ມຕົ້ນ, ໃຫ້ປະຕິບັດ ຄຳ ສັ່ງຕໍ່ໄປນີ້ເພື່ອເລີ່ມຕົ້ນ da rsyslog daemon.

    # systemctl start rsyslog.service
    

    2. ຖ້າຊຸດ rsyslog ບໍ່ໄດ້ຖືກຕິດຕັ້ງຢູ່ໃນລະບົບທີ່ທ່ານຕັ້ງໃຈ ນຳ ໃຊ້ເປັນເຄື່ອງແມ່ຂ່າຍການຕັດໄມ້ສູນກາງ, ອອກ ຄຳ ສັ່ງຕໍ່ໄປນີ້ໃນການຕິດຕັ້ງຊຸດ rsyslog.

    # yum install rsyslog
    

    3. ຂັ້ນຕອນ ທຳ ອິດທີ່ພວກເຮົາ ຈຳ ເປັນຕ້ອງເຮັດໃນລະບົບເພື່ອ ກຳ ນົດຄ່າ rsyslog daemon ເປັນ server server ກາງ, ສະນັ້ນມັນສາມາດໄດ້ຮັບຂໍ້ຄວາມບັນທຶກ ສຳ ລັບລູກຄ້າພາຍນອກ, ແມ່ນການເປີດແລະແກ້ໄຂ, ໂດຍ ນຳ ໃຊ້ຕົວແກ້ໄຂຂໍ້ຄວາມທີ່ທ່ານມັກ, ການຕັ້ງຄ່າຕົ້ນຕໍ file ຈາກ /etc/rsyslog.conf, ດັ່ງທີ່ ນຳ ສະ ເໜີ ໃນບົດຄັດຫຍໍ້ລຸ່ມນີ້.

    # vi /etc/rsyslog.conf
    

    ໃນເອກະສານການຕັ້ງຄ່າຕົ້ນຕໍຂອງ rsyslog, ຄົ້ນຫາແລະບໍ່ປະກອບສາຍດັ່ງຕໍ່ໄປນີ້ (ເອົາສັນຍາລັກ hashtag # ເລີ່ມຕົ້ນແຖວ) ເພື່ອໃຫ້ການຕ້ອນຮັບການຂົນສົ່ງ UDP ກັບເຊີບເວີ Rsyslog ຜ່ານພອດ 514. UDP ແມ່ນໂປໂຕຄອນມາດຕະຖານທີ່ໃຊ້ ສຳ ລັບການສົ່ງທ່ອນໂດຍ Rsyslog.

    $ModLoad imudp 
    $UDPServerRun 514
    

    4. ໂປໂຕຄອນ UDP ບໍ່ມີຄ່າຜ່ານ TCP, ເຊິ່ງເຮັດໃຫ້ການສົ່ງຂໍ້ມູນໄດ້ໄວກ່ວາອະນຸສັນຍາ TCP. ໃນທາງກົງກັນຂ້າມ, ໂປໂຕຄອນ UDP ບໍ່ຮັບປະກັນຄວາມ ໜ້າ ເຊື່ອຖືຂອງຂໍ້ມູນທີ່ຖືກສົ່ງຜ່ານ.

    ເຖິງຢ່າງໃດກໍ່ຕາມ, ຖ້າທ່ານຕ້ອງການໃຊ້ໂປໂຕຄອນ TCP ສຳ ລັບການຮັບທ່ອນໄມ້ທ່ານຕ້ອງໄດ້ຄົ້ນຫາແລະບໍ່ສະດວກຕໍ່ສາຍຕໍ່ໄປນີ້ຈາກ /etc/rsyslog.conf file ເພື່ອ ກຳ ນົດຄ່າຂອງ Rsyslog daemon ເພື່ອຜູກແລະຟັງເຕົ້າຮັບ TCP ຢູ່ໃນພອດ 514. ເຕົ້າຮັບຟັງ TCP ແລະ UDP ສຳ ລັບຕ້ອນຮັບສາມາດຕັ້ງຄ່າໄດ້ໃນເຊີຟເວີ Rsyslog ພ້ອມໆກັນ.

    $ModLoad imtcp 
    $InputTCPServerRun 514 
    

    5. ໃນບາດກ້າວຕໍ່ໄປ, ຢ່າປິດແຟ້ມເທື່ອ, ສ້າງແມ່ແບບ ໃໝ່ ທີ່ຈະຖືກ ນຳ ໃຊ້ເພື່ອຮັບຂໍ້ຄວາມທາງໄກ. ແມ່ແບບນີ້ຈະແນະ ນຳ ໃຫ້ server ຂອງ Rsyslog ທ້ອງຖິ່ນເກັບຮັກສາຂໍ້ຄວາມທີ່ໄດ້ຮັບທີ່ສົ່ງໂດຍລູກຄ້າເຄືອຂ່າຍ syslog. ແມ່ແບບຕ້ອງໄດ້ຖືກເພີ່ມກ່ອນການເລີ່ມຕົ້ນຂອງທ່ອນໄມ້ GLOBAL DIRECTIVES ດັ່ງທີ່ສະແດງຢູ່ໃນບົດຄັດຫຍໍ້ລຸ່ມນີ້.

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

    ຄຳ ສັ່ງແນະ ນຳ ທີ່ຢູ່ຂ້າງເທິງຂອງ RemoteLogs ໄດ້ແນະ ນຳ ໃຫ້ Daes Rsyslog ເກັບ ກຳ ແລະຂຽນຂໍ້ຄວາມບັນທຶກທັງ ໝົດ ທີ່ໄດ້ຮັບເຂົ້າໄປໃນແຟ້ມທີ່ແຕກຕ່າງກັນ, ໂດຍອີງໃສ່ຊື່ເຄື່ອງຂອງລູກຄ້າແລະສະຖານທີ່ລູກຄ້າຫ່າງໄກສອກຫຼີກ (ໃບສະ ໝັກ) ທີ່ສ້າງຂໍ້ຄວາມໂດຍອີງໃສ່ຄຸນສົມບັດທີ່ໄດ້ ກຳ ນົດໄວ້ໃນການຕັ້ງຄ່າຂອງແມ່ແບບ :% HOSTNAME% ແລະ% PROGRAMNAME%.

    ແຟ້ມບັນທຶກຂໍ້ມູນທັງ ໝົດ ເຫຼົ່ານີ້ຈະຖືກຂຽນໃສ່ລະບົບແຟ້ມທ້ອງຖິ່ນໄປຫາເອກະສານທີ່ອຸທິດຕົນທີ່ມີຊື່ຕາມຊື່ໂຮດຂອງເຄື່ອງຂອງລູກຄ້າແລະເກັບໄວ້ໃນ/var/log/directory.

    ກົດລະບຽບ & ~ ປ່ຽນເສັ້ນທາງສັ່ງໃຫ້ເຄື່ອງແມ່ຂ່າຍຂອງ Rsyslog ທ້ອງຖິ່ນຢຸດການປຸງແຕ່ງຂໍ້ຄວາມບັນທຶກທີ່ໄດ້ຮັບຕື່ມອີກແລະຍົກເລີກຂໍ້ຄວາມ (ບໍ່ໃຫ້ຂຽນໃສ່ແຟ້ມບັນທຶກພາຍໃນ).

    ຊື່ RemoteLogs ແມ່ນຊື່ທີ່ບໍ່ມັກທີ່ໄດ້ມອບໃຫ້ກັບ ຄຳ ສັ່ງຂອງແມ່ແບບນີ້. ທ່ານສາມາດໃຊ້ຊື່ໃດກໍ່ຕາມທີ່ທ່ານສາມາດຊອກຫາທີ່ ເໝາະ ສົມທີ່ສຸດ ສຳ ລັບແມ່ແບບຂອງທ່ານ.

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

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

    ຕົວຢ່າງອີກອັນ ໜຶ່ງ ຂອງແມ່ແບບທີ່ຂໍ້ຄວາມທັງ ໝົດ ທີ່ມີທຸງ ອຳ ນວຍຄວາມສະດວກຈະຖືກ ນຳ ໃຊ້ເຂົ້າໄປໃນຮູບແບບທີ່ມີຊື່ວ່າ "TmplAuth".

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

    ຂ້າງລຸ່ມນີ້ແມ່ນແບບຟອມຄັດເລືອກ ຄຳ ນິຍາມຂອງແມ່ແບບຈາກ Rsyslog 7 server:

    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 ທີ່ຊັບຊ້ອນ, ອ່ານຄູ່ມືການຕັ້ງຄ່າເອກະສານການຕັ້ງຄ່າ Rsyslog ໂດຍການອອກ ຄຳ ສັ່ງຜູ້ຊາຍ rsyslog.conf ຫຼືປຶກສາເອກະສານ online Rsyslog.

    6. ຫຼັງຈາກທີ່ທ່ານໄດ້ແກ້ໄຂເອກະສານການຕັ້ງຄ່າ Rsyslog ດ້ວຍການຕັ້ງຄ່າຂອງທ່ານເອງດັ່ງທີ່ໄດ້ອະທິບາຍຂ້າງເທິງ, ເລີ່ມຕົ້ນ daemon Rsyslog ເພື່ອ ນຳ ໃຊ້ການປ່ຽນແປງໂດຍການອອກ ຄຳ ສັ່ງດັ່ງຕໍ່ໄປນີ້:

    # service rsyslog restart
    

    7. ໂດຍດຽວນີ້, ເຄື່ອງແມ່ຂ່າຍຂອງ Rsyslog ຄວນໄດ້ຮັບການຕັ້ງຄ່າໃຫ້ເຮັດ ໜ້າ ທີ່ເກັບຂໍ້ມູນກາງແລະບັນທຶກຂໍ້ຄວາມຈາກລູກຄ້າ syslog. ເພື່ອກວດສອບເຕົ້າສຽບເຄືອຂ່າຍ Rsyslog, ດຳ ເນີນ ຄຳ ສັ່ງ netstat ດ້ວຍສິດທິພິເສດຮາກແລະໃຊ້ grep ເພື່ອກັ່ນຕອງສາຍເຊືອກ rsyslog.

    # netstat -tulpn | grep rsyslog 
    

    8. ຖ້າທ່ານໄດ້ເປີດໃຊ້ SELinux ໃນ CentOS/RHEL 7, ອອກ ຄຳ ສັ່ງຕໍ່ໄປນີ້ເພື່ອ ກຳ ນົດ SELinux ເພື່ອອະນຸຍາດໃຫ້ການຈະລາຈອນ rsyslog ຂື້ນຢູ່ກັບປະເພດຂອງເຕົ້າຮັບເຄືອຂ່າຍ.

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

    9. ຖ້າ Firewall ຖືກເປີດໃຊ້ງານແລະເຄື່ອນໄຫວຢູ່, ໃຫ້ໃຊ້ ຄຳ ສັ່ງຂ້າງລຸ່ມເພື່ອເພີ່ມກົດລະບຽບທີ່ ຈຳ ເປັນ ສຳ ລັບການເປີດພອດ rsyslog ໃນ Firewalld.

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

    ຫມົດເທົ່ານີ້! Rsyslog ຕອນນີ້ຖືກຕັ້ງຄ່າໃນໂຫມດຂອງເຊີຟເວີແລະສາມາດບັນທຶກຂໍ້ມູນບັນທຶກຈາກລູກຄ້າທາງໄກ. ໃນບົດຄວາມຕໍ່ໄປ, ພວກເຮົາຈະເຫັນວິທີການຕັ້ງຄ່າລູກຄ້າ Rsyslog ໃນເຊີຟເວີ CentOS/RHEL 7.

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