ตรวจสอบรายละเอียดเกี่ยวกับ Metric ของ Mackerel

ผมได้ลองตั้งค่าเกณฑ์การตรวจสอบหน่วย Disk ที่แตกต่างกันใน Mackerel ทั้ง 2 วิธี โดยวิธีที่ 1 จะเข้าไปเขียนข้อมูลที่ใช้ตรวจสอบเพิ่มลงในไฟล์ config ใน OS ของหัวข้อ Monitors [ตั้งค่าการตรวจสอบโดยใช้ check-disk ที่มีอยู่ในชุดปลั๊กอินมาตรฐาน (official check plugin)] และวิธีที่ 2 จะดำเนินการตั้งค่าจากคอนโซลการจัดการ [ตั้งค่าการตรวจสอบโดยใช้ Expression monitor]

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ผู้เขียนบทความนี้ : POP จากบริษัท Classmethod (Thailand) ครับ

เนื้อหาในบทความนี้ผมได้แปลมาจากภาษาญี่ปุ่นที่ชื่อว่า [Mackerel] ディスク単位で異なる監視閾値を設定してみた
เจ้าของบทความนี้ก็คือ あしさん หรือ คุณ Ashi เป็นคนญี่ปุ่นครับ

เนื่องจากว่าเนื้อหาในบทความนี้แปลมาจากภาษาญี่ปุ่น เมื่อแปลมาเป็นภาษาไทยแล้วผมได้เรียบเรียงเนื้อหาใหม่เพื่อให้เข้าใจง่ายขึ้น ! เมื่อพร้อมแล้วเราไปดูรายละเอียดกันเลยครับ


สวัสดีครับ ผม Ashi จากสำนักงานโตเกียวครับ

Mackerel สามารถจัดการ resource โดยรวมได้โดยใช้ service และ role ต่อให้เราไม่ได้ตั้งค่าฟังก์ชันที่ต้องการใช้งานไว้อย่างละเอียด เราก็สามารถตั้งค่าการตรวจสอบล่วงหน้าได้ ผมมีความรู้สึกว่ามีความสะดวกสบายมากๆ

อย่างไรก็ตาม บางครั้งเราอาจมีความต้องการตั้งค่าบางอย่างที่มีความซับซ้อน ใช่ไหมครับ?

ตัวอย่างเช่น เราต้องการตั้งค่าเกณฑ์ของ Linux Server ที่แตกต่างกันเพื่อตรวจสอบหน่วย Disk เช่น
・ตรวจสอบโดยการใช้ check-disk: ตั้งค่า warning 90% และ critical 95%
・ตรวจสอบโดยใช้ Expression monitor: ตั้งค่า warning 60% และ critical 95%

สมมติว่าเป็นเงื่อนไขตามที่กล่าวมานี้ เนื่องจากได้ลองใช้งานจริงมาแล้ว ดังนั้นผมจะมาแนะนำวิธีการตรวจสอบ Disk ให้ครับ

สิ่งที่ต้องมี

จำเป็นต้องมีสภาพแวดล้อมที่ได้ตั้งค่าการตรวจสอบโดยใช้ Mackerel ไว้ล่วงหน้าแล้ว

สมมติว่าเราได้ทำการสร้าง Mackerel Organizationsและติดตั้ง Mackerel Agent ใน Instance และได้รับการตรวจสอบเรียบร้อยแล้วโดยให้ทำการตั้งค่าตามลิงก์บทความด้านล่างนี้ จากนั้นให้เริ่มทำตามขั้นตอนได้เลย


สำหรับผู้อ่านที่ต้องการศึกษาเพิ่มเติม สามารถดูที่ Mackerel Docs ตามลิงก์ด้านล่างนี้ได้เลย

ขั้นตอน

มีขั้นตอนการทำ 2 วิธี

1. การใช้check-diskที่มีอยู่ในชุดปลั๊กอินมาตรฐาน (official check plugin)

การตั้งค่านี้ขึ้นอยู่กับเวอร์ชัน Distribution หรือ Mackerel Agent ของ OS ที่เรากำลังใช้งานอยู่ ซึ่งเราสามารถติดตั้งปลั๊กอินมาตรฐาน (official check plugin) และสามารถตั้งค่าโดยเพิ่มรายการการตั้งค่าในไฟล์ config ของmackerel-agentได้

2. การใช้Expression monitor 1

เราสามารถตั้งค่าการตรวจสอบ Metric ได้โดยใช้ฟังก์ชันของ Mackerel ที่คำนวณด้วย Expression ครับ

จากที่อ่านคำอธิบายมาถึงตอนนี้ ผมคิดว่าน่าจะเป็น [????] ครั้งนี้ผมได้ทดลองใช้งานจริงทั้ง 2 วิธีแล้ว ก็เลยจะมาแนะนำครับ

ทดลองใช้งาน

1. การใช้ check-disk ที่มีอยู่ในชุดปลั๊กอินมาตรฐาน (official check plugin)

ตั้งค่าการแจ้งเตือนของ Warning เมื่อปริมาณความจุ Disk มีการใช้งานถึง 90% และตั้งค่าการแจ้งเตือนของ Critical เมื่อปริมาณความจุ Disk มีการใช้งานถึง 95%

วิธีนี้เราจะมาทำการแก้ไขไฟล์configในเซิร์ฟเวอร์ของหัวข้อที่จะ Monitor และเพิ่มการตั้งค่า Monitor ลงไป

เราอาจมีความจำเป็นต้องติดตั้ง official check plugin เพิ่มเติม โดยขึ้นอยู่กับ Distribution ของ OS ที่เราใช้งาน และ path ของไฟล์ตั้งค่านั้นอาจแตกต่างกัน ดังนั้นควรตรวจสอบ OS และ path ของไฟล์ตั้งค่าให้ดีก่อนที่จะทำการตั้งค่านะครับ

กรณีที่ใช้ระบบ Windows OS

official check plugin นั้นมาพร้อมกับ Agent ดังนั้นไม่จำเป็นต้องติดตั้งเพิ่มเติม

คัดลอกด้านล่างนี้ แล้ววางเพิ่มในไฟล์C:\Program Files (x86)\Mackerel\mackerel-agent\mackere-agent.conf

[plugin.checks.disk]
command = ["check-disk", "--path", "C:", "--warning", "10%", "--critical", "5%"]

Restart agent หลังจากเพิ่มเสร็จแล้ว

Restart-Service -Name mackerel-agent


กรณีที่ใช้ระบบ Linux OS

จำเป็นต้องติดตั้ง official check plugin เตรียมไว้ล่วงหน้า ถ้าติดตั้งแล้วเริ่มดำเนินการขั้นตอนด้านล่างนี้ได้เลยครับ

คัดลอกด้านล่างนี้ แล้ววางเพิ่มในไฟล์/etc/mackerel-agent/mackerel-agent.conf

[plugin.checks.disk]
command = ["check-disk", "--path", "/", "--warning", "10%", "--critical", "5%"]

Restart agent หลังจากเพิ่มเสร็จแล้ว

sudo systemctl restart mackerel-agent


หลังจากตั้งค่าแล้ว เราสามารถตรวจสอบdiskMonitor Metric ที่ถูกเพิ่มขึ้นมาได้จากหน้าจอ Host (สำหรับ Windows/Linux)

2. การตั้งค่าโดยใช้ Expression monitor

ตั้งค่าการแจ้งเตือนของ Warning เมื่อปริมาณความจุ Disk มีการใช้งานถึง 60% และตั้งค่าการแจ้งเตือนของ Critical เมื่อปริมาณความจุ Disk มีการใช้งานถึง 95%

การตั้งค่านี้จะดำเนินการผ่านคอนโซลการจัดการ Mackerel

เลือกMonitorsจากเมนูด้านซ้าย แล้วคลิกNew Monitor

เลือกExpression monitor

คัดลอกด้านล่างนี้วางในExpressionของ Scope

divide(
  host(<Mackerel Host ID>, filesystem.<File System Name>.used), host(<Mackerel Host ID>, filesystem.<File System Name>.size)
)
## เราจะคำนวณอัตราการใช้ Disk โดย (ปริมาณการใช้ Disk ของ Host) ÷ (ขนาด Disk)


※ เราสามารถตรวจสอบ Mackerel Host ID และชื่อ File System ได้โดยทำตามขั้นตอนด้านล่างนี้

เลือกHostsจากเมนูด้านซ้าย แล้วคลิก Instance ที่จะรับ Metric

สามารถตรวจสอบ Mackerel Host ID และชื่อ File System ได้จากหน้าจอรายละเอียดของ Instance


เมื่อกรอกข้อมูลเข้าไปแล้ว กราฟจะแสดงขึ้นมาแบบนี้โดยอัตโนมัติ

ใส่ค่าเกณฑ์ที่ต้องการ (กรณีที่อัตราการใช้ 60% ให้ระบุ 0.6 แบบนี้)

ตั้งชื่อ Monitor ตามต้องการ

คลิกCreate

ตรวจสอบสิ่งที่แสดงอยู่ในรายการของ Monitor Settings จะเห็นว่ามี Expression monitor แสดงขึ้นมาแล้ว

เมื่อมีการแจ้งเตือน ก็จะแสดงแบบนี้

วิธีไหนดีกว่ากัน?

ถ้าต้องการ Monitor แค่ Instance ตัวเดียว ผมคิดว่าควรตั้งค่า Monitor โดยใช้ Expression monitorดีกว่าครับ

การเริ่มต้นระบบใหม่และการเพิ่มการตั้งค่านั้นทำได้ง่าย เนื่องจากการตั้งค่าได้เสร็จสิ้นในหน้าคอนโซลการจัดการ Mackerel แล้ว ก็ไม่จำเป็นต้องไปเขียนคำสั่งเพิ่มในไฟล์ config ภายใน server โดยตรง

อย่างไรก็ตาม ฟังก์ชันนี้เป็นฟังก์ชันก่อนการเปิดตัวอย่างเป็นทางการในปัจจุบันนี้ตามที่ได้อธิบายไว้ หากกังวลเกี่ยวกับประเด็นนั้น ก็ควรพิจารณาก่อนการใช้งาน


ในทางกลับกัน ถ้ามี Instance ที่กำหนดค่าเฉพาะใน Monitor (เช่น การใช้ Autoscaling) ก็จะมีกรณีที่เลือกMonitor โดยใช้ check-disk ชุดปลั๊กอินมาตรฐาน (official check plugin)

กรณีที่ใช้งาน Autoscaling จะขึ้นอยู่กับการกำหนดค่า Service/Role ของ Mackerel ซึ่งมีบางกรณีที่อาจทำไม่ได้ จึงมีความจำเป็นต้องเปลี่ยนการตั้งค่า Monitor Metric ทุกครั้งที่มีการ Scale out เช่น Role เป็นต้น

ในกรณีนั้น หากต้องการเพิ่มคำสั่งการตั้งค่าในไฟล์ config โดยตรง เราสามารถจัดการในตอนที่จะ Scale out ได้

ตัวอย่างตอนต่อไป

เมื่อตั้งค่า Metric ของหน่วย Disk แล้ว ถ้าตั้งค่าซ้ำกับ Metric อื่น เช่น Service Metric ระบบอาจไม่แจ้งเตือนตามที่คาดไว้

สถานะมีดังนี้

  • Monitor Metric A : การตั้งค่าเกณฑ์การตรวจสอบ Disk เป็น 90%
  • Monitor Metric B : การตั้งค่าเกณฑ์การตรวจสอบ Disk เป็น 95%

กรณีที่อัตราการใช้งาน Disk เป็น 91% จะไม่เกิดการแจ้งเตือนที่ A แต่การแจ้งเตือนถูกยิงไปที่ B ดังนั้น Monitor Metric B จึงไม่ทำงานอย่างมีประสิทธิภาพ

เมื่อลองคิดดูดีๆแล้ว ก็เป็นเรื่องปกติ แต่ในสภาพแวดล้อมที่มีการตั้งค่า Monitor Metric ซ้ำกันโดยใช้ Service และ Role ก็มักจะเกิดขึ้นได้

บทความครั้งต่อไป คิดว่าอยากจะอธิบายเกี่ยวกับการรับมือปัญหาที่กล่าวมานี้

จบแล้วครับ ผม Ashi จากสำนักงานโตเกียวครับ


  1. ตามเว็บไซต์ help ของ Mackerel ฟังก์ชันExpression monitorเป็นฟังก์ชันทดลอง ณ เดือนธันวาคม 2021 และมีโอกาสที่จะเปลี่ยนแปลงได้ในอนาคต เนื่องจากเป็นฟังก์ชันก่อนการเปิดตัวอย่างเป็นทางการ

ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ

POP จากบริษัท Classmethod (Thailand) ครับ !

Link อ้างอิง