zabbixのメディアタイプをスクリプトにしてAWSのSNSを使う

AWSでアラートをSNSで使用していると、他のアラートもSNSに統一したくなります。

zabbixの管理画面で

メディアタイプ > メディアタイプの作成

名前: SNS-Alert
タイプ: スクリプト
スクリプト名: sns_send.sh

で作成します。

ユーザーの詳細画面 > メディア > 追加

タイプ: SNS-Alert
送信先: {SNSのARN}

で作成します。

ZabbixServerの方で

vim /usr/lib/zabbix/alertscripts/sns_send.sh
---
#!/bin/sh

TOPIC_ARN=$1
SUBJECT=$2
MESSAGE=$3

echo "`date` $TOPIC_ARN $SUBJECT" >> /tmp/zabbix-sns.log

if [ "$SUBJECT" = "" -o "$TOPIC_ARN" = "" ]; then
  echo "usage: $0 {ARN SUBJECT MESSAGE}"
  exit 1
fi

if [ "$MESSAGE" = "" ]; then
  MESSAGE=$SUBJECT
fi

aws sns publish --topic-arn $TOPIC_ARN --subject "$SUBJECT" --message "$MESSAGE"
---
chmod +x /usr/lib/zabbix/alertscripts/sns_send.sh

という形でスクリプトを配置し、awscliをzabbixユーザーから実行できるようにしておきます。

sudo -u zabbix aws configure
---
access key, secret key など設定
---

でSNSでアラートを飛ばすことができます。