LoginSignup
0
0

More than 1 year has passed since last update.

Cloud Pub/Subメッセージが一定時間ACK処理されていない場合にアラート通知する方法

Last updated at Posted at 2021-12-07

はじめに

Cloud Pub/Subメッセージを使用したアプリケーションを作成した際、アプリ側でエラーになっていないのにも関わらずPub/Subメッセージが滞留するという現象が発生したので、Cloud Monitoringを使用して、Pub/Subメッセージが一定時間ACK処理されていない場合にアラートを通知する方法を記述します。

前提条件

  • GCPプロジェクトが作成済みであること
  • プロジェクトのPub/Sub APIが有効化されていること
  • Cloud SDKがインストールされている、または、Cloud Shellが使用できること
  • アカウントにPub/Subトピック・サブスクリプションの作成権限とCloud Monitoringアラートの作成権限が付与されていること

設定方法

Pub/Subトピックとサブスクリプションの作成

Pub/Subトピックとサブスクリプションをgcloudコマンドで作成します。

# トピック作成
$ gcloud pubsub topics create my-topic

# サブスクリプションの作成
$ gcloud pubsub subscriptions create my-sub --topic=my-topic

アラートポリシーの作成

Cloud MonitoringはGCPコンソール画面から作成します。

Menu > Monitoring > アラート でアラートポリシー画面を開き、[CREATE POLICY]ボタンを押下します。
1.png

[ADD CONDITION]ボタンを押下し、条件設定画面で下記の通りに各項目を設定します。(その他の項目はデフォルト値です。)

設定項目 設定値
Title Pub/Subメッセージが一定時間ACK処理されてません
Resource Type Cloud Pub/Sub Subscription
Metric Oldest unacked message age
Filter subscription_id="my-sub"
Period 1 minute
Condition triggers if Any time violates
Condition is above
Threshold 60000 ms
For most recent value

2.png
3.png

通知先のNotification Channelsを選択し、アラート名とドキュメントを下記の通りに設定します。

設定項目 設定値
アラート名 Pub/Subメッセージが一定時間ACK処理されてません
ドキュメント Pub/Subメッセージが一定時間ACK処理されてません

4.png

動作確認

gcloudコマンドでメッセージを登録します。

gcloud pubsub topics publish my-topic --message="hello"

1分程度待つと、Notification Channelsで設定した通知先にアラートが通知されます。
7.png

クリーンアップ

GCPコンソール画面でアラートポリシーを削除します。
ポリシーの詳細画面で[DELETE]ボタンを押下します。
5.png

gcloudコマンドでPub/Subリソースを削除します。

# メッセージの受信
$ gcloud pubsub subscriptions pull my-sub --auto-ack

# サブスクリプションの削除
$ gcloud pubsub subscriptions delete my-sub

# トピックの削除
$ gcloud pubsub topics delete my-topic

参考記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0