ขั้นตอนการดำเนินการทำ Zabbix 5 เพื่อให้ส่งแจ้งเตือนผ่าน LINE Notify โดยใช้ Webhook
(The how to procedure for Zabbix 5 sending alert via LINE Notify using Webhook)ขั้นตอนที่ 1: ทำการสร้าง "Media types" ในรูปแบบ "Webhook" เพื่อรองรับการทำงานการแจ้งเตือนผ่าน LINE, โดยไปที่เมนู Adminstration -> Media types -> Create media type
(Step 1: Creating "Media types" with type "Webhook" for suppored customising send LINE alert. Goto Adminstration -> Media types -> Create media type)
ขั้นตอนที่ 2: ที่หน้าจอ "Media types" กำหนดรายละเอียดดังนี้
(Step 2: On menu named "Media types" specified parameters as following.)
Name: YOUR_MEDIA_TYPE_NAME - e.g.: LineWebhook
Type: Webhook
Script parameters:
- URL ---> https://notify-api.line.me/api/notify
- To ---> {ALERT.SENDTO}
- Subject ---> {ALERT.SUBJECT}
- Message ---> {ALERT.MESSAGE}
- linetoken ---> {$LINENOTIFYTOKEN}
Script: FOLLOWING AFTER IMAGE
====================
try {
#Zabbix.Log(4, 'webhook script value='+value);
var params = JSON.parse(value);
var req = new CurlHttpRequest();
var fields = {};
var resp;
req.AddHeader('Content-Type : application/x-www-form-urlencoded');
req.AddHeader('Authorization: Bearer '+params.linetoken);
resp = req.Post(params.URL, 'message='+encodeURIComponent(params.Subject));
#Zabbix.Log(4, 'webhook response='+resp);
} catch (error) {
#Zabbix.Log(4, 'webhook json : '+value);
#Zabbix.Log(4, 'webhook error : '+error);
resp = error;
}
return JSON.stringify(resp);
====================
ขั้นตอนที่ 3: กำหนดให้ "Message Templates" อย่างน้อยคือ "Problem" และ "Problem recovery", โดยไปที่แท็ป Message templates เลือก Add ที่ Message type อย่างน้อยคือ "Problem" และ "Problem recovery"
(Step 3: Configure the "Message Template" at least are "Problem" and "Problem recovery" , Goto Message templates tab and add Message type at least are "Problem" and "Problem recovery")
(Step 3: Configure the "Message Template" at least are "Problem" and "Problem recovery" , Goto Message templates tab and add Message type at least are "Problem" and "Problem recovery")
ขั้นตอนที่ 4: สามารถทดสอบ "Media Type" ที่สร้างขึ้น ว่าสามารถทำการส่ง Line Notify ได้หรือไม่ โดยสำหรับ linetoken สามารถนำ token ที่ได้จาก LINE มาใส่ได้เลย
(Step 4: To testing this "Media Type" for sending Line Notify, You can fill linetoken with token that get from LINE.)
(Step 4: To testing this "Media Type" for sending Line Notify, You can fill linetoken with token that get from LINE.)
ขั้นตอนที่ 5: สร้าง "Macro" แบบ "Global" ในรูปแบบ "SecureText" ชื่อ {$LINENOTIFYTOKEN} โดยใส่ค่า token ที่ได้จาก line มาใส่ โดยไปที่เมนู Administration -> General -> Macros
(Step 5: Create "Macro" on "Global" type with "SecureText" capability named {$LINENOTIFYTOKEN} and fill with token that get from LINE.)
(Step 5: Create "Macro" on "Global" type with "SecureText" capability named {$LINENOTIFYTOKEN} and fill with token that get from LINE.)
ขั้นตอนที่ 6: กำหนดให้ "User" ที่เกี่ยวข้องใช้งาน "Media" ที่สร้างขึ้นตามขั้นตอนที่ 2-3, โดยไปที่เมนู Administration -> Users -> เลือกผู้ใช้งานที่ต้องการ เช่น Admin -> Media โดยกำหนด "Type" เป็นชื่อ Media Type ที่สร้างขึ้นตามขั้นตอนที่ 2-3
(Step 6: Configure the related "User" to using "Media" that created in step no. 2-3, Goto Administration -> Users -> Choose related User such as Admin -> Media the set to "Type")
(Step 6: Configure the related "User" to using "Media" that created in step no. 2-3, Goto Administration -> Users -> Choose related User such as Admin -> Media the set to "Type")
ขั้นตอนที่ 7: กำหนด "Action" ที่เกี่ยวข้องใช้งาน "Media" ที่สร้างขึ้นตามขั้นตอนที่ 2, โดยไปที่เมนู Configuration -> Actions -> เลือกชื่อ Action ที่ต้องการ หรือสร้าง Action ใหม่ -> จากนั้นกำหนดรายละเอียดดังนี้
(Step 7: Configure the related "Action" to using "Media" that created in step no. 2, Goto Configuration -> Actions -> Choose related Action or Create new Action -> Then specified detail as following.)
เมนู "Action" (Action menu)
Name: YOUR_ACTION_NAME - e.g.: actiontriggerhigh
Condition: YOUR_ACTION_WILL_BE_WORKING_CONDITION - e.g.: Trigger severity equals High.
Enables: Seleted
(Step 7: Configure the related "Action" to using "Media" that created in step no. 2, Goto Configuration -> Actions -> Choose related Action or Create new Action -> Then specified detail as following.)
เมนู "Action" (Action menu)
Name: YOUR_ACTION_NAME - e.g.: actiontriggerhigh
Condition: YOUR_ACTION_WILL_BE_WORKING_CONDITION - e.g.: Trigger severity equals High.
Enables: Seleted
ขั้นตอนที่ 8: กำหนด แท็ป "Operations" (Operations tab configuration)
(A) ส่วนการทำงาน "Operations" ทำการ Add ผู้ใช้งานที่ได้ทำการกำหนดไว้ในขั้นตอนที่ 6 และเลือก "Send only to" ตามที่ได้สร้างขึ้นในขั้นตอนที่ 2-3
(For "Operations" section, Add the user that configured in step no. 6 and select "Send only to" that created on step no. 2-3)
(B) เช่นเดียวกันสำหรับ (A) ในส่วนการทำงาน "Recovery operations" ทำการ Add ผู้ใช้งานที่ได้ทำการกำหนดไว้ในขั้นตอนที่ 6 และเลือก "Send only to" ตามที่ได้สร้างขึ้นในขั้นตอนที่ 2-3
(As same as (A), For "Recovery operations" section, Add the user that configured in step no. 6 and select "Send only to" that created on step no. 2-3)
จากนั้น: สามารถสร้าง Trigger และทดสอบการทำงานเพื่อให้มีการส่ง Alert ผ่าน Line Notify ได้ต่อไป
(After that: Could create the Trigger and testing the scenario for sending alert via Line Notify)
ผมลองหลายรอบแล้ว ไม่ทราบว่าผมทำผิดส่วนไหน ไม่ผ่านสักที T_T
ตอบลบเหมือนลองแก้หลายๆส่วนดูแล้ว ตัว message ใน line ไม่ส่งมาด้วย เห็นแต่ตัว subject
ตอบลบขึ้น errror "Media type test failed.
ตอบลบSyntaxError: invalid token (line 2)" แก้ยังไงครับ
ผมลองเอา # ในโค๊ดออกใช้ได้ครับ
ลบขึ้น errror "Media type test failed.
ตอบลบSyntaxError: invalid token (line 2)" แก้ยังไงครับ
message ไม่ออกตามที่ตั้ง แก้ไขอย่างไนครับ
ตอบลบProblem: Unavailable by ICMP ping ***ส่ง line เตือนมาแค่นี้เองครับ***
ลบลอง script ไม่ผ่าน
ตอบลบwebhook error : ReferenceError: identifier 'CurlHttpRequest' undefined
ตอบลบลองแล้วนะครับขึ้น Error นี้ครับ ผมใช้ zabbix docker