lnav - ເບິ່ງແລະວິເຄາະບັນທຶກ Apache ຈາກ Linux Terminal


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

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

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

ການຕິດຕັ້ງແລະເປີດ lnav ໃນ Linux

ການຕິດຕັ້ງ lnav, ໃຊ້ລະບົບການຈັດການຊຸດຂອງການແຈກຈ່າຍຂອງທ່ານ.

# aptitude install lnav          [Debian and derivatives]
# yum install epel-release lnav  [CentOS 7 and similar]

ເມື່ອການຕິດຕັ້ງ ສຳ ເລັດແລ້ວ, ເປີດ ນຳ ໃຊ້ lnav ຕາມເສັ້ນທາງທີ່ແນ່ນອນໄປທີ່ໄດເລກະທໍລີບ່ອນທີ່ທ່ອນທີ່ຕ້ອງໄດ້ກວດກາຢູ່. ເນື່ອງຈາກວ່າມັນຈະເປັນ /var/log ໂດຍປົກກະຕິ, ໃຫ້ເຮັດ:

# lnav /var/log/httpd

ເພື່ອກວດກາບັນທຶກຂອງ server ຂອງ web Apache ໃນ CentOS 7:

ໃຫ້ພິຈາລະນາໂດຍຫຍໍ້ກ່ຽວກັບຜົນໄດ້ຮັບທີ່ສະແດງຢູ່ໃນຮູບພາບກ່ອນ ໜ້າ ນີ້:

  • ມຸມຂວາເທິງສຸດສະແດງໃຫ້ເຫັນເອກະສານທີ່ ກຳ ລັງຖືກກວດກາຢູ່ (access_log-20170519 ແລະ access_log). ເມື່ອທ່ານເລື່ອນລົງຫລືຂຶ້ນລົງ, ທ່ານຈະສັງເກດວ່າຊື່ໄຟລ໌ອາດຈະປ່ຽນແປງເມື່ອທ່ານໄປຈາກບ່ອນອື່ນ.
  • 40x ການຕອບສະ ໜອງ HTTP (ຕົວຢ່າງ: ບໍ່ພົບຫລືຖືກຫ້າມ) ຖືກສະແດງເປັນ ຄຳ ເວົ້າ, ໃນຂະນະທີ່ ຄຳ ຕອບ 20 ເທົ່າແມ່ນສະແດງຢູ່ໃນຂໍ້ຄວາມປົກກະຕິ.
  • ທີ່ຢູ່ IP ຈະປາກົດເປັນສີຂຽວເຂັ້ມ.

ແນ່ນອນວ່າມັນເບິ່ງງາມບໍ່ແມ່ນບໍ? ແຕ່ໃຫ້ຂຸດເລິກເລັກນ້ອຍໃນຕອນນີ້, ແລະພວກເຮົາຈະເຫັນວ່າ lnav ໃຫ້ຫຼາຍກວ່າຜົນຜະລິດທີ່ມີສີສັນທີ່ສວຍງາມ.

ຖ້າທ່ານຢາກຮູ້ກ່ຽວກັບເຫດຜົນທີ່ບັນທຶກຂໍ້ຜິດພາດບໍ່ຖືກສະແດງ, ທ່ານຈະພົບ ຄຳ ຕອບຕໍ່ມາໃນບົດຄວາມນີ້. ສະນັ້ນຈົ່ງສືບຕໍ່ອ່ານ!

ການປັບປ່ຽນຜົນໄດ້ຮັບກັບຕົວເລືອກແລະ Hotkey

ກ່ອນທີ່ພວກເຮົາຈະ ດຳ ເນີນການຕໍ່ໄປ, ກະລຸນາຂຽນບັນດາຕົວເລກ ຈຳ ນວນ ໜຶ່ງ ທີ່ຈະຊ່ວຍໃຫ້ພວກເຮົາສາມາດເຄື່ອນຍ້າຍຜ່ານຜົນຜະລິດຂອງ lnav ແລະມຸມເບິ່ງທີ່ມີໄດ້ງ່າຍຂຶ້ນ:

  • e ຫຼື E ເພື່ອເຕັ້ນໄປຫາຂໍ້ຜິດພາດຕໍ່ໄປ/ກ່ອນ ໜ້າ ນີ້.
  • w ຫຼື W ເພື່ອເຕັ້ນໄປຫາຂໍ້ຄວາມເຕືອນຕໍ່ໄປ/ກ່ອນ ໜ້າ ນີ້.
  • b ຫຼື Backspace ເພື່ອຍ້າຍໄປ ໜ້າ ກ່ອນ ໜ້າ ນີ້.
  • ຊ່ອງທີ່ຈະຍ້າຍໄປ ໜ້າ ຕໍ່ໄປ.
  • g ຫຼື G ເພື່ອຍ້າຍໄປທາງເທິງ/ລຸ່ມຂອງມຸມມອງປັດຈຸບັນ.

ເມື່ອບັນທຶກຖືກ ໝູນ ວຽນ, ເອກະສານເກົ່າອາດຈະຖືກບີບອັດ (ຫລືບໍ່) ຂື້ນກັບການຕັ້ງຄ່າທີ່ລະບຸໄວ້ໃນແຟ້ມການຕັ້ງຄ່າ logrotate. ເພື່ອປະກອບໄຟລ໌ທີ່ບີບອັດໄວ້ໃນຜົນຜະລິດ, ເປີດ lnav ດັ່ງຕໍ່ໄປນີ້:

# lnav -r /var/log/httpd

ຖ້າທ່ານຕ້ອງການເບິ່ງທີ່ໃກ້ຊິດກ່ຽວກັບວິທີທີ່ lnav ປະຕິບັດງານ, ທ່ານສາມາດເປີດໂປແກຼມດ້ວຍຕົວເລືອກ -d ຕິດຕາມດ້ວຍຊື່ແຟ້ມບ່ອນທີ່ຂໍ້ມູນ debug ຈະຖືກຂຽນຫາ, ດັ່ງນັ້ນ:

# lnav /var/log/httpd -d lnav.txt

ໃນຕົວຢ່າງນີ້, ຂໍ້ມູນ debug ທີ່ຖືກສ້າງຂື້ນເມື່ອ lnav ເລີ່ມຕົ້ນຈະຖືກຂຽນໃສ່ແຟ້ມຊື່ lnav.txt ພາຍໃນໄດເລກະທໍລີເຮັດວຽກໃນປະຈຸບັນ.

ສອງສາມແຖວ ທຳ ອິດຂອງເອກະສານນັ້ນຈະຖືກສະແດງຢູ່ໃນຮູບຕໍ່ໄປນີ້:

ຂໍ້ຄວາມທີ່ເນັ້ນໃຫ້ເຫັນວ່າ lnav ໂຫລດແຟ້ມຮູບແບບເລີ່ມຕົ້ນແລະໂດຍສະເພາະຮູບແບບ access_log ເພື່ອແຍກທ່ອນເຂົ້າໃຊ້ Apache. ນອກຈາກນັ້ນ, lnav ອະນຸຍາດໃຫ້ແຍກອອກແຕ່ລະແຖວຂອງຜົນຜະລິດເພື່ອໃຫ້ຜົນຜະລິດກາຍເປັນສາຍຕາແລະເຂົ້າໃຈງ່າຍຂຶ້ນ.

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

ເພື່ອກັບໄປໃຊ້ຮູບແບບປົກກະຕິ, ກົດ p ອີກຄັ້ງ.

ດຽວນີ້, ຖ້າທ່ານຕ້ອງການເບິ່ງບົດສະຫຼຸບຂອງບັນທຶກຕາມວັນທີແລະເວລາ, ໃຫ້ກົດ i . ຍົກຕົວຢ່າງ, ຂໍ້ຄວາມທີ່ເນັ້ນໃຫ້ເຫັນວ່າໃນວັນຈັນທີ 10 ເດືອນເມສາ, ໃນລະຫວ່າງ 10 ແລະ 11 ໂມງແລງ, ມີ ຄຳ ຮ້ອງຂໍ HTTP ຈຳ ນວນ 37 ຄັ້ງເຊິ່ງມີ 14 ຂໍ້ທີ່ເຮັດໃຫ້ເກີດຄວາມຜິດພາດ.

ເມື່ອທ່ານໄດ້ຄົ້ນພົບບັນຫາທີ່ອາດເກີດຂື້ນໂດຍອີງໃສ່ໂປແກຼມ histogram ດັ່ງທີ່ສະແດງຢູ່ຂ້າງເທິງ, ທ່ານສາມາດກົດ i ເພື່ອອອກຈາກມຸມມອງເພື່ອກວດເບິ່ງມັນໃນລາຍລະອຽດເພີ່ມເຕີມໂດຍໃຊ້ຕົວຊີ້ບອກດັ່ງທີ່ໄດ້ອະທິບາຍກ່ອນ ໜ້າ ນີ້. ຫຼືທ່ານຍັງສາມາດໃຊ້ຄວາມສາມາດໃນການສ້າງ SQL ໂດຍການພິມ semicolon ແລະຂຽນແບບສອບຖາມແບບມາດຕະຖານ. ຍົກຕົວຢ່າງ, do:

;.schema

ເພື່ອເບິ່ງຕາຕະລາງທີ່ມີຢູ່ໃນລະບົບຖານຂໍ້ມູນ. ຫຼັງຈາກ ກຳ ນົດຕາຕະລາງທີ່ຖືກຕ້ອງ (access_log ໃນກໍລະນີຂອງພວກເຮົາ), ໃຫ້ກົດ q ແລະຫຼັງຈາກນັ້ນໃຫ້ໃຊ້ ຄຳ ຖາມຕໍ່ໄປນີ້ເພື່ອສົ່ງຂໍ້ມູນທັງ ໝົດ ທີ່ມີກ່ຽວກັບ ຄຳ ຮ້ອງຂໍທີ່ມາຈາກປີ 195.154.230.31:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

ໃຫ້ສັງເກດວ່າພວກເຮົາຍັງສາມາດກັ່ນຕອງຜົນໄດ້ຮັບໂດຍ log_time. ຈຸດແມ່ນ, ຖິ້ມໃນ SQL ພຽງເລັກນ້ອຍແລະທ້ອງຟ້າແມ່ນຂອບເຂດຈໍາກັດກ່ຽວກັບສິ່ງທີ່ທ່ານສາມາດເຮັດໄດ້ກັບ lnav.

ແບບຟອມການເຂົ້າລະຫັດແບບ Apache Default

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

ຮູບແບບເລີ່ມຕົ້ນແມ່ນ ກຳ ນົດໄວ້ໃນ ~/.lnav/format/default/default-format.json.sample, ແລະຮູບແບບອື່ນໆສາມາດເພີ່ມ ~/.lnav/ຮູບແບບໂດຍໃຊ້ການຂະຫຍາຍ .json .

ເຖິງຢ່າງໃດກໍ່ຕາມ, ການດັດແກ້ເອກະສານເຫຼົ່ານີ້ຮຽກຮ້ອງໃຫ້ມີຄວາມຄຸ້ນເຄີຍກັບ JSON (Javascript Object Notation) ແລະກັບຫ້ອງສະ ໝຸດ PCRE (Perl-Compatible Regular Expressions).

ສະນັ້ນເປັນຫຍັງ lnav ຈຶ່ງບໍ່ສະແດງເອກະສານບັນທຶກຂໍ້ຜິດພາດຂອງ Apache? ເຫດຜົນແມ່ນວ່າບັນທຶກເຫລົ່ານັ້ນບໍ່ກົງກັບການສະແດງອອກແບບປົກກະຕິໃດໆໃນເອກະສານຮູບແບບທີ່ມີຢູ່, ແລະດັ່ງນັ້ນຈຶ່ງຖືກຖືວ່າເປັນເອກະສານຂໍ້ຄວາມປົກກະຕິ (ໝາຍ ເຖິງເອກະສານທີ່ບໍ່ມີຮູບແບບບັນທຶກທີ່ໄດ້ໃຫ້).

ດັ່ງທີ່ໄດ້ກ່າວມາກ່ອນ ໜ້າ ນີ້, ທ່ານສາມາດສ້າງຮູບແບບຂອງຕົວເອງໄດ້ເມື່ອທ່ານຄຸ້ນເຄີຍກັບ JSON ແລະ PCRE. ສິ່ງນີ້ສາມາດໃຊ້ໄດ້ງ່າຍ, ຍົກຕົວຢ່າງ, ຖ້າທ່ານໄດ້ ກຳ ນົດບັນທຶກ Apache ທີ່ ກຳ ຫນົດເອງ.

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

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