ขั้นตอนการดำเนินการทำ Zabbix เพื่อให้ส่งแจ้งเตือนผ่าน LINE Notify ที่มีรูปภาพ Graph
(The how to procedure for Zabbix sending alert via LINE Notify with Graph image)
ขั้นตอนที่ 1: ทำการสร้าง "Media types" ในรูปแบบ "Script" เพื่อรองรับการทำงานการเขียนโปรแกรมส่งการแจ้งเตือนผ่าน LINE, โดยไปที่เมนู Adminstration -> Media types -> Create media type
(Step 1: Creating "Media types" with type "Script" 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.: LineGraph
Type: Script
Script name: YOUR_SHELL_SCRIPT_NAME - e.g.: linegraph
Script parameters:
ขั้นตอนที่ 3: กำหนดให้ "User" ที่เกี่ยวข้องใช้งาน "Media" ที่สร้างขึ้นตามขั้นตอนที่ 2, โดยไปที่เมนู Administration -> Users -> เลือกผู้ใช้งานที่ต้องการ เช่น Admin -> Media โดยกำหนด "Type" เป็นชื่อ Media Type ที่สร้างขึ้นตามขั้นตอนที่ 2
(Step 3: Configure the related "User" to using "Media" that created in step no. 2, Goto Administration -> Users -> Choose related User such as Admin -> Media the set to "Type")
ขั้นตอนที่ 4: กำหนด "Action" ที่เกี่ยวข้องใช้งาน "Media" ที่สร้างขึ้นตามขั้นตอนที่ 2, โดยไปที่เมนู Configuration -> Actions -> เลือกชื่อ Action ที่ต้องการ หรือสร้าง Action ใหม่ -> จากนั้นกำหนดรายละเอียดดังนี้
(Step 4: 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.: SendEmailLine
Condition: YOUR_ACTION_WILL_BE_WORKING_CONDITION - e.g.: Trigger severity.
Enables: Seleted
(A) เมนู "Operations/Recovery operations/Update operations" (Operations/Recovery operations/Update operations menu)
Default message: Including wording "Graph: [{ITEM.ID1}]"
Operations: รายละเอียดตามเมนูย่อย "Operation details" (Please following Operation details sub-menu)
(B) เมนูย่อย "Operation details" -> จะปรากฎหลังจากที่คลิก "New" or "Edit"
(Operation details sub-menu -> After clicking "New" or "Edit")
Send to Users: YOUR_ALERT_RELATED_USERS - e.g.: Admin
Send only to: YOUR_MEDIA - e.g.: LineGraph
Default message: Seleted
**กำหนดรายละเอียดตามขั้นตอน (A) และ (B) สำหรับเมนู "Recovery operations/Update operations" ให้ครบถ้วน
(Completed configure setting (A) and (B) on Recovery operations/Update operations menu)**
ขั้นตอนที่ 5: สร้างไฟล์ Shell script ในไดเร็คทอรี /usr/lib/zabbix/alertscripts (ตัวอย่าง CentOS) บนเครื่อง Zabbix สำหรับทำงานในการส่ง ข้อมูลรายละเอียด และรูปภาพกราฟ การแจ้งเตือนผ่านช่องทาง LINE Notify โดยชื่อไฟล์จะต้องตรงกับที่กำหนดไว้ในขั้นตอนที่ 2 - ชื่อพารามิเตอร์ "Script name" เช่น linegraph
(Step 5: Create Shell script file in /usr/lib/zabbix/alertscripts directory (Example of CentOS) on Zabbix server machine for sending information and graph picture via LINE Notify. This script file name must be the same on Step no.2 - Parameter named "Script name" such as linegraph)
ตัวอย่างไฟล์ shell script (Example of shell script file)
ขั้นตอนที่ 6: กำหนดให้ไฟล์ shell script ดังกล่าว สามารถ execute ได้ โดยคำสั่งดังต่อไปนี้บนระบบปฏิบัติการบนเครื่อง Zabbix
(Step 6: Set shell script file permission to allow executable on Zabbix server operating system - OS as following command)
# chmod +x /usr/lib/zabbix/alertscripts/YOUR_SCRIPT_FILE
ตัวอย่าง (Example)
# chmod +x /usr/lib/zabbix/alertscripts/linegraph
Reference:
https://github.com/diegosmaia/zabbix-telegram
(The how to procedure for Zabbix sending alert via LINE Notify with Graph image)
ขั้นตอนที่ 1: ทำการสร้าง "Media types" ในรูปแบบ "Script" เพื่อรองรับการทำงานการเขียนโปรแกรมส่งการแจ้งเตือนผ่าน LINE, โดยไปที่เมนู Adminstration -> Media types -> Create media type
(Step 1: Creating "Media types" with type "Script" 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.: LineGraph
Type: Script
Script name: YOUR_SHELL_SCRIPT_NAME - e.g.: linegraph
Script parameters:
- {ALERT.SENDTO} ---> Remember: This is $1 in your shell script
- {ALERT.SUBJECT} ---> Remember: This is $2 in your shell script
- {ALERT.MESSAGE} ---> Remember: This is $3 in your shell script
ขั้นตอนที่ 3: กำหนดให้ "User" ที่เกี่ยวข้องใช้งาน "Media" ที่สร้างขึ้นตามขั้นตอนที่ 2, โดยไปที่เมนู Administration -> Users -> เลือกผู้ใช้งานที่ต้องการ เช่น Admin -> Media โดยกำหนด "Type" เป็นชื่อ Media Type ที่สร้างขึ้นตามขั้นตอนที่ 2
(Step 3: Configure the related "User" to using "Media" that created in step no. 2, Goto Administration -> Users -> Choose related User such as Admin -> Media the set to "Type")
ขั้นตอนที่ 4: กำหนด "Action" ที่เกี่ยวข้องใช้งาน "Media" ที่สร้างขึ้นตามขั้นตอนที่ 2, โดยไปที่เมนู Configuration -> Actions -> เลือกชื่อ Action ที่ต้องการ หรือสร้าง Action ใหม่ -> จากนั้นกำหนดรายละเอียดดังนี้
(Step 4: 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.: SendEmailLine
Condition: YOUR_ACTION_WILL_BE_WORKING_CONDITION - e.g.: Trigger severity.
Enables: Seleted
(A) เมนู "Operations/Recovery operations/Update operations" (Operations/Recovery operations/Update operations menu)
Default message: Including wording "Graph: [{ITEM.ID1}]"
Operations: รายละเอียดตามเมนูย่อย "Operation details" (Please following Operation details sub-menu)
(B) เมนูย่อย "Operation details" -> จะปรากฎหลังจากที่คลิก "New" or "Edit"
(Operation details sub-menu -> After clicking "New" or "Edit")
Send to Users: YOUR_ALERT_RELATED_USERS - e.g.: Admin
Send only to: YOUR_MEDIA - e.g.: LineGraph
Default message: Seleted
**กำหนดรายละเอียดตามขั้นตอน (A) และ (B) สำหรับเมนู "Recovery operations/Update operations" ให้ครบถ้วน
(Completed configure setting (A) and (B) on Recovery operations/Update operations menu)**
ขั้นตอนที่ 5: สร้างไฟล์ Shell script ในไดเร็คทอรี /usr/lib/zabbix/alertscripts (ตัวอย่าง CentOS) บนเครื่อง Zabbix สำหรับทำงานในการส่ง ข้อมูลรายละเอียด และรูปภาพกราฟ การแจ้งเตือนผ่านช่องทาง LINE Notify โดยชื่อไฟล์จะต้องตรงกับที่กำหนดไว้ในขั้นตอนที่ 2 - ชื่อพารามิเตอร์ "Script name" เช่น linegraph
(Step 5: Create Shell script file in /usr/lib/zabbix/alertscripts directory (Example of CentOS) on Zabbix server machine for sending information and graph picture via LINE Notify. This script file name must be the same on Step no.2 - Parameter named "Script name" such as linegraph)
ตัวอย่างไฟล์ shell script (Example of shell script file)
#!/bin/bash
ZBX_URL="http://127.0.0.1/zabbix"
USERNAME="YOUR_ZABBIX_WEB_USER" # e.g.: Admin
PASSWORD="YOUR_ZABBIX_WEB_PASSWORD" # e.g.: zabbix
PERIOD=10800
ZABBIXVERSION34="1"
GRAPHID=$3
GRAPHID=$(echo $GRAPHID | grep -o -E "(Graph: \[[0-9]{7}\])|(Graph: \[[0-9]{6}\])|(Graph: \[[0-9]{5}\])|(Graph: \[[0-9]{4}\])|(Graph: \[[0-9]{3}\])")
GRAPHID=$(echo $GRAPHID | grep -o -E "([0-9]{7})|([0-9]{6})|([0-9]{5})|([0-9]{4})|([0-9]{3})")
case $GRAPHID in
''|*[!0-9]*) INC_GRAPH=0 ;;
*) INC_GRAPH=1 ;;
esac
WIDTH=800
CURL="/usr/bin/curl"
#NEW_UUID=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 4 | head -n 1)
NEW_UUID=$RANDOM
COOKIE="/tmp/zapi_cookie-$(date "+%Y.%m.%d-%H.%M.%S")-${NEW_UUID}"
PNG_PATH="/tmp/zapi_graph-$(date "+%Y.%m.%d-%H.%M.%S")-${NEW_UUID}.png"
if [ $(($INC_GRAPH)) -eq '1' ]; then
${CURL} -k -s -c ${COOKIE} -b ${COOKIE} -d "name=${USERNAME}&password=${PASSWORD}&autologin=1&enter=Sign%20in" ${ZBX_URL}"/index.php" > /dev/null
if [ "${GRAPHID}" == "000001" ]; then
GRAPHID="00002";
${CURL} -k -s -c ${COOKIE} -b ${COOKIE} -d "graphid=${GRAPHID}&period=${PERIOD}&width=${WIDTH}" ${ZBX_URL}"/chart2.php" -o "${PNG_PATH}";
elif [ "${GRAPHID}" == "000002" ]; then
GRAPHID="00003";
${CURL} -k -s -c ${COOKIE} -b ${COOKIE} -d "graphid=${GRAPHID}&period=${PERIOD}&width=${WIDTH}" ${ZBX_URL}"/chart2.php" -o "${PNG_PATH}";
elif [ "${GRAPHID}" == "000003" ]; then
GRAPHID="00004";
${CURL} -k -s -c ${COOKIE} -b ${COOKIE} -d "graphid=${GRAPHID}&period=${PERIOD}&width=${WIDTH}" ${ZBX_URL}"/chart2.php" -o "${PNG_PATH}";
else
if [ "${ZABBIXVERSION34}" == "1" ]; then
${CURL} -k -s -c ${COOKIE} -b ${COOKIE} -d "itemids=${GRAPHID}&period=${PERIOD}&width=${WIDTH}&profileIdx=web.item.graph" ${ZBX_URL}"/chart.php" -o "${PNG_PATH}";
else
${CURL} -k -s -c ${COOKIE} -b ${COOKIE} -d "itemids=${GRAPHID}&period=${PERIOD}&width=${WIDTH}" ${ZBX_URL}"/chart.php" -o "${PNG_PATH}";
fi
fi
${CURL} -X POST -H "Authorization: Bearer YOUR_LINE_NOTIFY_TOKEN" -F "message=$2" -F "imageFile=@${PNG_PATH}" https://notify-api.line.me/api/notify
else
${CURL} -X POST -H "Authorization: Bearer YOUR_LINE_NOTIFY_TOKEN" -F "message=$2" https://notify-api.line.me/api/notify
fi
rm -f ${COOKIE}
rm -f ${PNG_PATH}
ขั้นตอนที่ 6: กำหนดให้ไฟล์ shell script ดังกล่าว สามารถ execute ได้ โดยคำสั่งดังต่อไปนี้บนระบบปฏิบัติการบนเครื่อง Zabbix
(Step 6: Set shell script file permission to allow executable on Zabbix server operating system - OS as following command)
# chmod +x /usr/lib/zabbix/alertscripts/YOUR_SCRIPT_FILE
ตัวอย่าง (Example)
# chmod +x /usr/lib/zabbix/alertscripts/linegraph
Reference:
https://github.com/diegosmaia/zabbix-telegram