Zabbix HTTP Agent

Prawit Tangmanopeanchai
3 min readSep 12, 2022

--

12 September 2022

หากเราต้องการจะใช้ zabbix ในการอ่านค่ามาจาก api บ้างจะต้องทำอย่างไร ?

เดิมเคยใช้แต่ web scenario แต่วันนี้ได้อีกหนึ่งวิธี คือใช้ http agent ครับ

โดยครั้งนี้จะใช้ http agent ทำการขอค่าอุณหภูมิของพื้นที่ตามพิกัดละติจูด ลองติจูด จาก https://openweathermap.org/

ก่อนอื่นเราก็ต้องไปสมัครเป็นสมาชิกของ openweathermap.org ก่อน เสร็จแล้วเข้าไปที่ส่วนของ member แล้วเลือกที่ My API keys

จากนั้นก็พบ API key ของเรา

วิธีเรียก API มีรูปแบบดังนี้

โดยให้เราแทนค่า “{API key}” ด้วย API key ของเรา

ลอดทดสอบโดยการเรียกด้วย browse จะได้ผลลัพธ์ดังนี้

จะเห็นว่าเมื่อเราเรียก API ไปแล้วจะได้ค่ากลับมาเป็น JSON ตามภาพ

คราวนี้มาลองดึงข้อมูลจาก API นี้ด้วย Zabbix

ไปที่ menu configuration > hosts

จากนั้นกดไปที่ Items

แล้วกดที่ปุ่ม Create item ที่มุมบนขวา

ใส่ชื่อของ Item (ตั้งชื่ออะไรก็ได้)
เลือก Type เป็น HTTP agent
ใส่ค่า Key (ตั้งชื่อ key เป็นอะไรก็ได้)
ใส่ URL ที่เราทดสอบเมื่อก่อนหน้านี้เข้าไป แล้วกด “Parse”
Zabbix จะเอาค่า query string ไปใส่ไว้ในแต่ละช่องให้เราเอง

เมื่อเราใส่เสร็จแล้ว ให้กดปุ่ม “Test” ที่ด้านล่างของจอเพื่อทำการทดสอบ

หลังจากกดที่ปุ่ม “Get value” จะได้ค่า return กลับมาในช่อง Value

จะเห็นว่าค่าที่ return กลับมาจะเป็น JSON ตามที่เราเคยเรียกด้วย browser ไปก่อนหน้านี้

แต่คราวนี้เราต้องการแค่ค่าของอุณหภูมิเพียงค่าเดียวเท่านั้น จึงต้องทำการ config ให้ค่าที่ออกมาเป็นเพียงค่าอุณหภูมิเพียงค่าเดียว โดยจะเห็นว่าค่าของอุณหภูมิอยู่ในหมวดของ “main” มีชื่อ field ว่า “temp”

คราวนี้มาดูวิธีการ config กัน

ให้เรากด cancel เพื่อออกจากหน้าทดสอบก่อน แล้วให้เลือกไปที่ menu Preprocessing

จากนั้นให้ click ไปที่ link “Add”

เลือกที่ช่อง “Name” เป็น JSONPath แล้วใส่ค่า Paremeters เป็น “$.main.temp”
โดยที่ “.main.temp” เป็นค่าตามใน JSON คือหมวด “main” field “temp”
เลือก Type of information เป็น Numeric (float)

จากนั้นให้กดที่ปุ่ม “Test”

ให้กดที่ปุ่ม “Get value and test” ด้านล่าง จากนั้นจะได้ค่ากลับมาเป็นค่าของ temp ค่าเดียวตามที่เราต้องการแล้ว

เท่านี้เราก็จบการ config แล้ว ให้เรากดที่ปุ่ม Add เพื่อ save Item นี้

มาตรวจสอบต่อว่า Zabbix สามารถดึงค่ามาได้ถูกต้องหรือไม่ โดยไปที่ menu Monitoring > Lastest data

ใส่ชื่อ temp ในช่อง Name แล้วกดปุ่ม Apply จะเห็นว่า Zabbix สามารถดึงค่าอุณหภูมิโดยการเรียก api ของ openweathermap มาให้แล้ว

หวังว่าจะเป็นประโยชน์นะครับ

Reference :

--

--

Prawit Tangmanopeanchai
Prawit Tangmanopeanchai

Written by Prawit Tangmanopeanchai

Head of Cloud Implementation Unit at gosoft (Thailand)

No responses yet