Zabbix with custom script
๓๐ พฤษภาคม ๒๕๖๕
จริง ๆ แล้ว zabbix เองก็มีคำสั่งที่ใช้ในการตรวจสอบเอาไว้ให้เราใช้มากมายอยู่แล้ว แต่ในบางครั้งเราเองมีความต้องการที่จะ monitor ข้อมูลของเราเองที่ zabbix ไม่มีคำสั่งไว้ให้ใช้จะทำยังไง ?
zabbix อนุญาตให้เราสามารถสร้างคำสั่งที่ใช้ในการ monitor ขึ้นมาเองได้ โดยให้เราเขียนชุดคำสั่งขึ้นมาเองโดยใช้ภาษาอะไรก็ได้ตามที่เราถนัด แล้วให้นำคำสั่งนั้นไปไว้ที่ “/usr/lib/zabbix/externalscripts” โดยที่ชุดคำสั่งนี้ต้องจะมี permission เป็น executable (+x) ด้วยนะครับ
มาดูตัวอย่างกันครับ
ลองสร้าง shell script ขึ้นมา 1 file ตั้งชื่อว่า “count_process.sh” โดย script นี้จะรับ input เป็นชื่อของ user ที่เป็นเจ้าของ process ใน script มีคำสั่งดังนี้
ps aux | grep $1 | wc -l
คำ script นี้จะรับ input เป็นชื่อของเจ้าของ process หลังจากที่ script ทำงานก็ใช้คำสั่ง “ps aux” แล้ว filter ด้วย user ที่ส่งเข้ามาทาง input (“$1”) แล้วส่งต่อไปให้คำสั่ง “wc -l” เพื่อนับจำนวนบรรทัดของ output
ลองทำสอบ script ดูโดยให้นับจำนวน process ของ user “zabbix” และ user “root”
จะได้ว่า process ของ user zabbix มีจำนวน 55 processes และ process ของ user root มีจำนวน 166 processes
การนำไปใช้งาน
เมื่อเรามีคำสั่งที่พร้อมทำงานแล้ว และได้นำไปวางไว้ที่ “/usr/lib/zabbix/externalscripts” แล้ว คราวนี้ก็ให้เข้าที่หน้าของ zabbix แล้วเลือก Configuration > Hosts > Items
จากนั้นให้กดที่ Create item ที่มุมบนด้านขวา
ช่อง Name : ให้ตั้งชื่อของ item ที่เราสร้าง
ช่อง Type : อันนี้ให้เลือกเป็น “External check”
ช่อง Key : ให้ใส่ชื่อของ script ของเรา แล้วใน input parameter (ตัวอย่างนี้ใช้ user root) ให้ใส่ไว้ในวงเล็บก้ามปู
ช่อง Type of information : อันนี้ output ของเราออกมาเป็นตัวเลข ช่องนี้ก็ให้เป็น Numeric
ช่อง Update interval : อันนี้เราใส่ 1m เพื่อให้คำสั่งนี้ทำงานทุก ๆ 1 นาที
คราวนี้ก่อนที่เราจะทำการเพิ่ม item นี้เข้าไป ก็ให้ทำการทดสอบก่อน โดยกดที่ปุ่ม “Test”
ให้กดที่ปุ่ม Get value
เราก็จะได้ผลลัพธ์เป็น 167 ที่เป็นจำนวน process ของ user root ออกมา
ทดสอบเป็นที่เรียบร้อยแล้ว เราก็กดปุ่ม add ได้แล้ว หลังเรา add เข้าไปแล้วเราก็จะพบ item ที่เรา add อยู่ในรายการของ zabbix แล้ว