vague memory

うろ覚えを無くしていこうともがき苦しむ人の備忘録

Opsgenie Monit Integration

Monit から Opsgenie へアラートを通知します。

f:id:htnosm:20210118075308p:plain

公式ではメールでの連携方法が紹介されていますが、 各監視対象ホストでメール送信を有効化するのが手間だったのでAPIを利用します。

前置き

軽く探索してみた所、下記情報があります。

これらを参考にスクリプトを作成しました。

Monit -> Opsgenie 通知用スクリプト

設定

Opsgenie APIキー取得

REST API のインテグレーションから取得します。

  • [Team] -> 対象のチーム -> [Integrations] -> APIインテグレーション

f:id:htnosm:20210118075313p:plain

スクリプト格納

監視対象ホストにて、任意の場所にスクリプトをダウンロードします。

wget https://raw.githubusercontent.com/htnosm/opsgenie-monit.sh/main/opsgenie-trigger
wget https://raw.githubusercontent.com/htnosm/opsgenie-monit.sh/main/opsgenie-resolve

ダウンロードした2つのスクリプトに実行権限を与え、スクリプト内の OPSGENIE_API_KEY を書き換えます。

# 実行権限付与
chmod +x opsgenie-*
# OPSGENIE_API_KEY="1234567890abcdef1234567890abcdef"
↓
OPSGENIE_API_KEY="Opsgenie APIキー"

Monit設定

Failure、Success それぞれにアラート作成、クローズのスクリプトを指定します。

check process crond with pidfile /var/run/crond.pid
    if does not exist for 3 cycles
        then exec "/etc/monit/opsgenie-trigger"
    else if passed for 3 cycles
        then exec "/etc/monit/opsgenie-resolve"

正常に設定できていれば、Monit に連動して Opsgenie のアラート作成とクローズが行えます。

  • Alert created via API

f:id:htnosm:20210118075319p:plain

  • Alert closed via API

f:id:htnosm:20210118075324p:plain