2&>1

AWSとかGCPとかGolangとかとか

zabbixからの通知をMicrosoftTearmsに飛ばす話

今までslackとchatworkにしてたんですけど新たにMicrosoftがやってるTearmsというのを導入することになったので障害通知を飛ばしてみました。

とりあえずzabbixに配置するスクリプトは以下。

#!/bin/bash

# Teams incoming web-hook URL 
url='https://outlook.office.com/webhook/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'               
curlheader='-H "Content-Type: application/json"'
agent='-A "zabbix-teams-alertscript / https://github.com/ericoc/zabbix-slack-alertscript"'
curlmaxtime='-m 60'

#zabbixのスクリプトパラメータから取得
subject="$1"

#Subjectが障害発生か復旧か判断
#
echo $1 |grep 障害

if [[ "$?" -eq 1 ]]; then
#復旧時は緑
        THEMECOLOR='43EA00'
else
#障害時は赤
        THEMECOLOR='EA4300'
fi

#zabbixのスクリプトパラメータから取得
message="${subject}: $2"

payload=\""{\\\"title\\\": \\\"${status} \\\", \\\"text\\\": \\\"${message} \\\", \\\"themeColor\\\": \\\"${THEMECOLOR}\\\"}"\"

curldata=$(echo -d "$payload")

eval curl $curlmaxtime $curlheader $curldata $url $agent

zabbix側ではスクリプトパラメータで {ALERT.SUBJECT} {ALERT.MESSAGE} を設定。

スクリプトパラメータで直接{{TRIGGER.STATUS} を受け取りたかったけどできない模様。 そのためSubjectから障害or復旧を判断する(2byte文字なのがイケてない)

最終的にこんな漢字でポストされる

f:id:piyojir0:20190409155703j:plain
earmsの表示

まとめ

slackみたいにアイコンまで変えたい

以上