Zabbix HTTP Agent
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 :