Zabbix with custom script

Prawit Tangmanopeanchai
2 min readMay 30, 2022

--

๓๐ พฤษภาคม ๒๕๖๕

จริง ๆ แล้ว 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 แล้ว

--

--

Prawit Tangmanopeanchai
Prawit Tangmanopeanchai

Written by Prawit Tangmanopeanchai

Head of Cloud Implementation Unit at gosoft (Thailand)

No responses yet