XymonのアラートをSlackに飛ばすシェルスクリプト

Slackはやってるねー。必要な機能がきちんと動くことと、UXについて真剣に考えてるんだろうなぁという感じが伝わってくるところが良いと感じています。あとは、豊富なインテグレーション!のはずなんだけど、残念ながらXymonのインテグレーションは無いので、WebHookを使ってアラートをSlackに飛ばせるようにした。

アラートをXymonからチーム開発向けのめっちゃグレートなグループチャットidobataにpostする」を参考にざっと動かしてるうちにこうなった感じなので、ペイロードのエスケープが嫌な感じになってるけど晒してみます。

#!/bin/sh

SLACK_WEB_HOOK_URL=${RCPT}

SLACK_COLOR='good'
if [ "${BBCOLORLEVEL}" = 'red' ]; then
  SLACK_COLOR='danger'
elif [ "${BBCOLORLEVEL}" = 'yellow' ]; then
  SLACK_COLOR='warning'
elif [ "${BBCOLORLEVEL}" = 'purple' ]; then
  SLACK_COLOR='#5C2A86'
fi

SLACK_VALUE=`echo -e "${BBALPHAMSG}" | perl -p -e 's/\n/\\\n/g'`

SLACK_PAYLOAD="payload={\"channel\": \"#tech\", \"username\": \"xymon@`hostname`\", \"icon_emoji\": \":ghost:\", \"attachments\": [ { \"fallback\": \"${BBHOSTNAME} is ${BBCOLORLEVEL}\", \"pretext\": \"${BBHOSTNAME} is ${BBCOLORLEVEL}\", \"color\": \"${SLACK_COLOR}\", \"fields\": [ { \"title\": \"${BBSVCNAME}\", \"value\": \"${SLACK_VALUE}\", \"short\": false } ] }] }"

echo "${SLACK_PAYLOAD}"
curl -s -X POST --data-urlencode "${SLACK_PAYLOAD}" "${SLACK_WEB_HOOK_URL}"

とりあえず、近いうちに動かしてみよう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です