GCPのCloud MonitoringでのアラートをDiscordで受け取る

GCEのCPU使用率にアラートを設定する

Cloud MonitoringでのCPU使用率アラートをDiscordに送りたいという記事です。

Advertisement

GCPのCloud MonitoringでのアラートをDiscordで受け取る

GCEのCPU使用率にアラートを設定する

現在GCEのCPU使用率をCloud Monitoringで監視し、アラートをメールに送るように設定してあります。

メール通知でも大きな問題は無いのですが、Discordに通知されたほうが都合が良いのでDiscordに送られるようにします。

なお、アラートの通知先としてWebhookに対応していますが、DiscordのWebhookでは使えないのでDiscordに通知を送るためにはまぁまぁの手間をかける必要があります。

Discordの準備

DiscordのWebhookを利用して簡単に通知を送る

Discordに通知を送るためにDiscord側の準備が必要なので、上の記事のWebhookの作成までを行ってください。

Cloud Functionsの利用

Discordに通知を送るためのコードを実行する必要があるのでCloud Functionsを利用します。

メニューを開いてその他のプロダクトを開き、サーバーレスの欄にあるCloud Functionsを選択します。

関数を作成をクリックするとAPIの有効化を要求されるので有効にしてください。

関数名などは好みでOKです。

トリガー

今回はアラートをトリガーにして実行したいので、Cloud Pub/Subを選択します。

トピックを選択を開き、トピックを作成するをクリックしてトピックを作成します。

適当なトピックIDを入力して作成してください。

作成後、保存をクリックしてください。

次へをクリックし、実行したいプログラムに合わせてランタイムを指定し、エディタにソースコードを貼り付けてください。

なお、今回はPythonで通知を送るだけのコードを記述しました。

from discordwebhook import Discord
alert_webhook = Discord(url="ここにWebhookURL")
def main(event, context):
    alert_webhook.post(content="Alert-CPU utilization", username="Google Cloud Platform")

requirements.txtに

discordwebhook

を指定してデプロイをクリックしてください。

作成後表示されるトピックの名前をコピーしておいてください。

通知チャンネルの設定

Google Cloud Platformを開き、メニューからMonitaring→アラート、EDIT NOTIFICATION CHANNELSをクリック、Pub/SubをADD NEWし、適当に命名して先程コピーしたトピックの名前を貼り付ければOKです。

この際、権限に関する注意事項が表示されていると思うので、そこの

service-hoge@gcp-sa-monitoring-notification.iam.gserviceaccount.com

のような部分をコピーしておいてください。

権限の許可

アラートを飛ばせるように権限を許可します。

メニュー→分析の欄にあるPub/Subを開いてください。

先ほど作成したトピックIDのその他の操作から権限の表示を開き、プリンシパルを追加をクリックしてください。

新しいプリンシパルに先程コピーした

service-hoge@gcp-sa-monitoring-notification.iam.gserviceaccount.com

のような部分を貼り付け、ロールにPub/SubのPub/Subパブリッシャーを選択して保存してください。

テストの実行

もう一度メニューからMonitaring→アラート、EDIT NOTIFICATION CHANNELSをクリックし、先ほど作成したPub/Subの編集を開き、テスト通知を送信をクリックして動作を確認してください。

アラート設定

あとはアラートの設定を行い、Notification Channelsに作成したPub/Subを割り当てればOKです。

Advertisement

これでアラートがDiscordに送られるようになります。