Cloud Functionsの実行回数がしきい値を超えたら検知するCloud Monitoringアラートを作成してみた

Cloud Functionsの実行回数がしきい値を超えたら検知するCloud Monitoringアラートを作成してみた

念のためにこちらも設定しておきたいですね。
Clock Icon2024.06.29

クラスメソッド株式会社データアナリティクス事業本部所属のニューシロです。
今回はGoogle CloudのサービスであるCloud Functionsの実行回数がしきい値を超えたら検知するCloud Monitoringアラートを作成してみました。

前提

Cloud Functionsとは

Google Cloud Functions は、クラウド サービスの構築と接続に使用するサーバーレスのランタイム環境です。Cloud Functions を使用すると、クラウドのインフラストラクチャやサービスで生じたイベントに関連する、シンプルで一義的な関数を作成できます。対象のイベントが発生すると、Cloud Functions がトリガーされ、コードがフルマネージドの環境で実行されます。

Cloud Functionsを用いると簡単にGoogle Cloud上でコードの実行が行えます。手軽に使用できるFaaSです。

なぜやるのか

Cloud Functionsが想定以上の回数実行されると、高額な料金が発生することが考えられます。
例えば可能性のある構成として、再帰処理が考えられます。

このような構成だと、想定しない挙動が起こった際に、無限に再帰処理が行われる可能があります。
想定以上の回数が実行された際に検知するアラートをあらかじめ設定しておくことで、早期に対応を取ることが可能となります。

本題

環境について

検証環境を準備します。
検証とはいえ、実際に再帰処理を実行して回数を増やす手法は避けたいため、以下のようにCloud SchedulerでCloud Functionsを起動する構成で検証します。

Cloud Schedulerによって短時間に想定以上の回数Cloud Functionsを実行させ、それによりCloud Monitoringアラートを検知させられるか検証します。

Cloud Functions作成

今回はCloud Functionsのコードは特に気にする必要はありません。適当に用意します。

import functions_framework


@functions_framework.cloud_event
def hello_pubsub(cloud_event):
    print("Hello Pub/Sub!")

functions-framework==3.*

このコードを使用して、Pub/SubトリガーでCloud Functionsをデプロイします。
あわせて、トリガー対象となるPub/Subトピックも作成しておきます。

Cloud Scheduler作成

Cloud Schedulerを作成します。
CRON式は*/10 * * * *と指定することで、まずは10分ごとに1回だけ通知する設定にしておきます。

作成したPub/Subトピックを通知先に指定しておきます(プロジェクト名は伏せています)。

これでCloud Schedulerの作成は完了です。

Cloud Monitoringアラート作成

Cloud Monitoringアラートを作成します。+ CREATE POLICYを押下します。

Select a metricではCloud FunctionExecutionsを選択することで、Cloud Functionsの実行回数をカウントすることができます

フィルタの追加で対象のCloud Functionsの名前を指定しておきます。
今回は、10分間のCloud Functions実行回数の合計をモニタリングしようと思いますので、Transform dataではローリング ウィンドウ10分ローリング ウィンドウ関数sumを指定します。
これにより、10分間の関数実行回数の合計が検知対象になります。

下記のようにしきい値の位置しきい値より上しきい値5に指定することで、10分間で5回より多くCloud Functionsが実行されたらアラートが検知されるようにします。他の欄も下記のように設定します。

しきい値を超えたら即時通知してくれるよう、Advansed Optionsの再テストウィンドウは0秒に設定します。

通知チャンネルはメールを指定しました(名前は伏せてあります)。他の欄も下記のように設定しました(細かい説明は割愛します)。

これでCloud Monitoringアラートの設定は完了です。

アラート検知

現在、Cloud SchedulerでCloud Functionsを10分おきに1回のみ起動させているため、今回設定したCloud Monitoringアラートの「10分間で5回より多く起動」はしておりません。
よってCloud Schedulerを実行しても、アラートが発報することはありません。

ではCloud SchedulerのCRON式を変更し、Cloud Monitoringアラートで検知できるか検証してみます。
「10分おきに1回」から「1分おきに1回」へ変更します。

1分ごとの実行へ変更することで、10分間に10回はCloud Functionsが起動します。
10分間で5回を超えるため、これでアラートを検出するはずです

想定通り、アラート通知のメールが届きました!上記はメール通知の画面です。

Cloud Monitoringアラートの指標でも、しきい値を超えていることがわかります。

最後にまとめ

Cloud MonitoringアラートでCloud Functionsの実行回数について検知することができました。 他にも色々な指標で設定できますので、今後も試していこうと思います。

引用・参照まとめ

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.