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

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

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

クラスメソッド株式会社データアナリティクス事業本部所属のニューシロです。
今回は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の実行回数について検知することができました。 他にも色々な指標で設定できますので、今後も試していこうと思います。

引用・参照まとめ

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.