ตรวจสอบรายละเอียดเกี่ยวกับ Metric ของ Mackerel
ผู้เขียนบทความนี้ : 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
หลังจากตั้งค่าแล้ว เราสามารถตรวจสอบdisk
Monitor Metric ที่ถูกเพิ่มขึ้นมาได้จากหน้าจอ Host (สำหรับ Windows/Linux)
2. การตั้งค่าโดยใช้ Expression monitor
ตั้งค่าการแจ้งเตือนของ Warning เมื่อปริมาณความจุ Disk มีการใช้งานถึง 60% และตั้งค่าการแจ้งเตือนของ Critical เมื่อปริมาณความจุ Disk มีการใช้งานถึง 95%
การตั้งค่านี้จะดำเนินการผ่านคอนโซลการจัดการ Mackerel
เลือกMonitors
จากเมนูด้านซ้าย แล้วคลิกNew 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 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 จากสำนักงานโตเกียวครับ
-
ตามเว็บไซต์ help ของ Mackerel ฟังก์ชัน
Expression monitor
เป็นฟังก์ชันทดลอง ณ เดือนธันวาคม 2021 และมีโอกาสที่จะเปลี่ยนแปลงได้ในอนาคต เนื่องจากเป็นฟังก์ชันก่อนการเปิดตัวอย่างเป็นทางการ ↩
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP จากบริษัท Classmethod (Thailand) ครับ !