👌

Cloud FunctionsのエラーをSlack通知する

2022/12/26に公開

こんにちは、スペースマーケットでバックエンドエンジニアをしております、Miotavaです。

弊社ではAWS環境メインでしたが、最近GCP環境の利用が多くなってきており、保守・運用のためエラー通知の方法を探していたところ、簡単にできましたので以下に雑記で恐縮ですがまとめます。

結論:GCPの管理画面上で設定が可能

結論としては、ログエクスプローラから簡単に設定することが可能でした。
最初どうやるかを考えていたときは別でエラーログ抽出用のCloud Functionsなどを立てて何か構築する必要があるのかな、と思っていたので感動でした笑

手順

1. Cloud Functions の詳細画面から Cloud Logging のログエクスプローラを開く

  • Cloud Functions でエラーログ通知したい関数の「関数の詳細」を開く
  • 「重大度」を「エラー」にする
  • 「ログ エクスプローラで表示」をクリック

2. ログを絞り込むためのクエリを設定

Tips: クエリについて

  • textPayload =~ "<正規表現>"
    • ログ出力した文字列を正規表現でマッチさせる
    • 例: textPayload =~ "My error detail: .*"
  • -textPayload = "<抽出対象から除外したいログの文字列>"
    • 抽出対象として除外したいログ文字列を指定できる
    • 上記正規表現との併用も可能
    • 例: -textPayload = "My error to be excluded"
  • resource.type"cloud_function" ではなく他のGCPサービスに変更すればCloud Functions以外のサービスでも本記事と同様の手順で投稿可能
  • severity については >= でログレベルを範囲指定できる。設定レベルについてはこちら参照ください。

3. 「アラートを作成」の各項目を設定

  • 上記ログエクスプローラ画面のクエリ編集画面下の「アラートを作成」ボタンを押下

3-1. 「1. Alert details」の設定内容

  • 「ドキュメント」には通知時に一緒に表示したいメッセージを設定します。

3-2. 「2. Choose logs to include in the alert」の設定内容

  • 基本クエリそのままでOK

3-3. 「3. Set notification frequency and autoclose duration」の設定内容

3-4. 「4. Who should be notified?」の設定内容

  • 「通知チャンネルを管理」を選択

4. 「通知チャンネル」を設定

  • 設定画面内の「Slack」項目右の「ADD NEW」を押下

  • アクセス許可をする場面が出るので「許可する」を選択

  • チャンネル名・アラート名を入力

  • 「テスト通知を送信」では実際に設定チャンネルへのテスト通知ができます(アラート名は特に反映されない)

実際にエラーが起こると・・・

以下のように通知されます!

Slackに通知されたメッセージ内のIncidentのIDをクリックするとエラーの詳細に飛べます。

これで少しでも早くエラーが出ていることに気づけるはず!(いらんエラーは出ないのが一番ですが・・・笑)

最後に

スペースマーケットでは、一緒にサービスを成長させていく仲間を探しています。
サービスに興味がある、技術的なチャレンジをしつつ事業を成長させてみたい方など是非是非お話しさせてください!

https://www.wantedly.com/projects/1061116

https://www.wantedly.com/projects/1113570

https://www.wantedly.com/projects/1113544

スペースマーケット Engineer Blog

Discussion