Log parsing

ในปัจจุบันล็อก (Log) มีความจำเป็นในกระบวนการพัฒนา และการดูแลรักษาระบบ โดยเป็นส่วนที่บันทึกรายละเอียดข้อมูลการทำงานต่าง ๆ ซึ่งช่วยให้ผู้พัฒนา และผู้ดูแลระบบสามารถเฝ้าสังเกตระบบและวิเคราะห์เหตุการณ์หรือพฤติกรรมที่ผิดปกติและสามารถแก้ไขได้อย่างทันท่วงที ในระบบที่มีขนาดที่ใหญ่และมีความซับซ้อน เช่น ศูนย์ข้อมูล หรือคลัสเตอร์เซิร์ฟเวอร์ขนาดใหญ่หลายๆระบบในปัจจุบัน มีอัตราการเกิดของล็อกเพิ่มขึ้นอย่างมหาศาล ทำให้วิธีดั้งเดิมที่ให้ผู้พัฒนาหรือผู้ดูแลระบบเฝ้าสังเกตข้อความในล็อกบนหน้าจอเพื่อหาความผิดปกติของระบบเป็นได้ได้ยากหรือแทบจะเป็นไปไม่ได้เลย เพราะเหตุนี้จึงได้มีการศึกษาวิธีการใหม่ ๆ ในการตรวจจับเหตุการณ์หรือพฤติกรรมที่ผิดปกติจากล็อก โดยแนวทางที่เป็นที่นิยมในปัจจุบันคือ การใช้เทคนิคการเรียนรู้ของเครื่อง (Machine Learning) อย่างไรก็ตามเนื่องจากข้อมูลล็อกนั้นเป็นข้อมูลที่ไม่มีโครงสร้างที่ชัดเจนแน่นอน  การที่จะทำให้โมเดลสามารถวิเคราะห์ข้อมูลล็อกได้อย่างมีประสิทธิภาพนั้นจึงถือเป็นความท้าท้ายอย่างยิ่ง 

กระบวนการแปลงล็อก (Log parsing) โดยปกติจะเป็นกระบวนการแรกในการเตรียมข้อมูลเพื่อแปลงล็อกให้เป็นข้อมูลที่มีโครงสร้าง ตามตัวอย่างในรูปที่ 1 เพื่อให้สามารถนำข้อมูลมาใช้งานได้สะดวก เช่น การเสิร์ช การกรองล็อก และการจับกลุ่มล็อก และช่วยให้โมเดลการเรียนรู้ของเครื่องสามารถเรียนรู้จากล็อกได้อย่างมีประสิทธิภาพ 

รูปที่ 1 ตัวอย่างผลลัพธ์ของการแปลงล็อก

[2] โดยแต่ละ Event Template ประกอบด้วยส่วนข้อความที่เป็นค่าคงที่ (constant) ซึ่งจะไม่มีการเปลี่ยนแปลงและเป็นส่วนที่ใช้แยกเทมเพลตของล็อก อีกส่วนคือข้อความที่ตัวแปร (variable) ซึ่งสามารถเปลี่ยนแปลงได้ขึ้นอยู่กับข้อมูลหรือเหตุการที่เกิดขึ้นในแต่ละช่วงเวลา

ตัวอย่างการนำล็อกมาใช้งานประกอบด้วย

  • การวิเคราะห์การใช้งาน (Usage Analysis) การวิเคราะห์การใช้งานเป็นงานทั่วไปที่เป็นส่วนหนึ่งในดูแลและพัฒนาระบบซอฟต์แวร์ เช่น การวิเคราะห์พฤติกรรมของผู้ใช้งาน การทำ API profiling และการทำ workload modeling ซึ่งการประยุกต์นำล็อกมาใช้งานโดยทั่วไปจะใช้ Log Event Structure เป็นข้อมูลนำเข้าเพื่อนำมาวิเคราะห์
  • การตรวจจับหาความผิดปกติ (Anomaly Detection) การตรวจจับหาความผิดปกติเป็นหนึ่งในงานหลักที่สำคัญในการสอดส่องดูแลระบบ (System Monitoring) โดยล็อกที่บันทึกการทำงานของระบบเป็นข้อมูลที่สำคัญที่สามารถนำมาใช้ในการวิเคราะห์ตรวจหาพฤติกรรมที่ผิดปกติของระบบด้วยวิธีการเรียนรู้ของเครื่อง (Machine Learning) เช่น Principle Component Analysis (PCA), Deep Learning ซึ่งกระบวนการแปลงล็อกเป็นหนึ่งในขั้นตอนของกระบวนการทำ Data Preprocessing เพื่อเทรนโมเดลการเรียนรู้ของเครื่อง
  • การระบุปัญหาที่ความซ้ำซ้อน (Duplicate issue identification) ในทางปฏิบัติ ปัญหาที่เกิดขึ้นในระบบ เช่น ปัญหาการเชื่อมต่อ (connection loss) สามารถเกิดข้อมูลการรายงานปัญหาที่ซ้ำซ้อนได้เนื่องจากเมื่อเกิดปัญหาผู้ใช้งานหลายคนแจ้งปัญหาเดียวเดียวกัน การระบุปัญหาที่ซ้ำซ้อนที่โดยอัตโนมัติจะช่วยผ่อนภาระให้ผู้พัฒนาระบบและผู้ดูแลระบบได้ ซึ่งข้อมูลเหตุการณ์ที่เกิดขึ้นแบบมีโครงสร้างก็เป็นสิ่งที่จำเป็นในการนำมาแก้ปัญหานี้
  • การวินิจฉัยการเกิดความล้มเหลว (Failure diagnosis) การวินิจฉัยความล้มเหลวแบบแมนนวลเป็นงานที่ต้องใช้เวลามากและท้าทาย เนื่องจากข้อมูลล็อกไม่เพียงแต่มีปริมาณมากเท่านั้น แต่มีรายละเอียดและความซับซ้อนสูง การศึกษาและวิจัยในปัจจุบันได้มีการทำการวิเคราะห์สาเหตุที่ก่อให้เกิดความล้มเหลวโดยอัตโนมัติโดยใช้เทคนิคการเรียนรู้ของเครื่อง (Machine Learning) และการทำ Data Preprocessing ก็มีความจำเป็นเช่นเดียวกัน

การแปลงข้อมูลล็อกที่ยังไม่มีโครงสร้างข้อมูลที่ชัดเจนให้เป็นข้อมูลที่มีโครงสร้างพร้อมใช้งานเป็นสิ่งที่จำเป็นและสิ่งที่มีความท้าทาย ซึ่งนำไปสู่การศึกษาและวิจัยเทคนิคที่สามารถนำมาใช้สร้างเครื่องมือเพื่อแปลงล็อกหลากหลายวิธีด้วยกัน ตัวอย่างเช่น SLCT (Simple Logfile Clustering Tool) เป็นเครื่องมือโอเพ่นซอร์สที่ออกแบบมาเพื่อแปลงล็อกและวิเคราะห์จัดกลุ่มเหตุการณ์ที่เกิดขึ้นในไฟล์ล็อกด้วยวิธี Clustering โดยผลลัพธ์ที่ได้จะอ้างอิงกับความถี่ในการเกิดขึ้นของคำที่อยู่ในล็อกแต่ละบรรทัด [3] IPLoM (Iterative Partitioning Log Mining) ใช้วิธี Clustering algorithm ที่มี 4 ขั้นตอนสำคัญ คือ การแบ่งพาร์ทิชันโดยพิจารณาจากจำนวนคำในแต่ละเหตุการณ์ การแบ่งพาร์ทิชันโดยใช้ตำแหน่งที่มี unique word น้อยที่สุด การแบ่งพาร์ทิชันโดยการหาความสัมพันธ์แบบ 1-1 และ สรุปผลแต่ละพาร์ทิชันโดยการนับ unique word ในแต่ละ position [4] Drain เป็นอีกเทคนิคที่นำมาใช้แปลงล็อก โดยในกระบวนประแปลงนั้น Drain ใช้ Fixed depth parse tree ซึ่งมีกฎที่ถูกออกแบบมาเพื่อทำงานแปลงล็อกไว้อยู่แล้ว ทำให้กระบวนการแปลงสามารถทำได้อย่างรวดเร็วและสามารถแปลงล็อกที่รับเข้ามาแบบ Streaming ได้ ทั้งนี้ยังมีเทคนิคอีกหลากหลายประเภทให้ศึกษาเลือกใช้ เช่น Spell ประยุกติใช้วิธี Longest common subsequence (LCS) [5] ในการนำมาแยกประเภทของแต่ละข้อความโดย ถ้าข้อคามล็อกถูกสร้างมาจากฟอร์แมทเดียวกัน แต่มีความต่างกันที่พารามิเตอร์ LCS ที่ได้จะถูกมองเป็นค่าคงที่ (constant)  หรือแม้กระทั่งนำ Deep Learning มาประยุกต์ใช้ในขั้นตอนการแปลงล็อก [6] โดยใช้เทคนิคที่เรียกว่า Supervised Leaning เพื่อใช้เป็น Masked Language Model ซึ่งเป็นโมเดลที่ใช้ทำนายคำที่ถูกแทนที่ด้วย masked token และนำมาประยุกต์ใช้ในการแยกแยะระหว่างค่าคงที่ (constant) กับตัวแปร (variable) ในแต่ละข้อความล็อก

Reference

[1] Jieming ZhuShilin HeJinyang LiuPinjia HeQi XieZibin ZhengMichael R. Lyu .Tools and Benchmarks for Automated Log Parsing, arXiv:1811.03509v2, 2018
[2] Xie, Xueshuo and Wang, Zhi and Xiao, Xuhang and Lu, Ye and Huang, Shenwei and Li, Tao. A Confidence-Guided Evaluation for Log Parsers Inner Quality, Mobile Networks and Applications (2021) 26:1638–1649
[2] Risto Vaarandi. A Data Clustering Algorithm for Mining Patterns from Event LogsIEEE Workshop on IP Operations & Management (IPOM), 2003.
[3] Adetokunbo Makanju, A. Nur Zincir-Heywood, Evangelos E. Milios. Clustering Event Logs Using Iterative PartitioningACM SIGKDD Conference on Knowledge Discovery and Data Mining (KDD), 2009.
[4] Pinjia He, Jieming Zhu, Zibin Zheng, and Michael R. Lyu. Drain: An Online Log Parsing Approach with Fixed Depth TreeIEEE International Conference on Web Services (ICWS), 2017.
[5] Min Du, Feifei Li. Spell: Streaming Parsing of System Event LogsIEEE International Conference on Data Mining (ICDM), 2016.
[6] Sasho Nedelkoski, Jasmin Bogatinovski, Alexander Acker, Jorge Cardoso, and Odej Kao. Self-Supervised Log Parsing, arXiv:2003.07905v1, 2020


By :

/

Share :


บทความอื่นๆที่น่าสนใจ

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save