コンテンツに移動
DevOps & SRE

例外メッセージを Slack と Webhook から配信してスピーディな解決を実現

2022年4月21日
Google Cloud Japan Team

※この投稿は米国時間 2022 年 4 月 6 日に、Google Cloud blog に投稿されたものの抄訳です。

新しいアプリケーションの開発は楽しいものですが、アプリ開発に伴うクラッシュのトラブルシューティングと修正に関してはそうとは言えません。多くの組織が DevOps モデルを急いで採用するなか、一部では開発者とオペレーション チームを分断する従来構造が依然として残っています。このような環境では、開発者がアプリを構築してそれをオペレーション チームに送信し、オペレーション チームが本番環境スタックの展開とメンテナンスを行います。

こうしたワークフローでは、クラッシュの検出と解決に時間がかかりがちです。クラッシュの検出にかかる時間を短縮するために、Google Cloud では最近、アラート サービス向けの新しい通知チャネルを導入しました。今回の新たな通知チャネルのリリースによって、SlackWebhook の両方から Error Reporting 通知を送信できるようになりました。

Error Reporting の概要

Error Reporting では、実行中のクラウド サービスの障害の分析、集計、通知の受信を行うことができます。この情報は Cloud Logging に取り込んだログから生成できます。また、発生のヒストグラム、影響を受けるバージョンのリスト、リクエスト URL、リクエストログへのリンクなど、エラーの詳細が表示される専用ページも用意されています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_Error_Reporting_interface.max-1300x1300.jpg

今回のリリースの内容

最近リリースした新たなアラート通知チャネルによって、Error Reporting の通知機能が Slack と Webhook にも対応するようになりました。

今回のリリースにより、自社で構成した Slack チャンネル、または Webhook を使用して好きなコラボレーション プラットフォームで直接クラッシュに関する通知を受信できるようになりました。

受信したクラッシュ情報はその後、スピーディな処理、話し合いを経て解決できます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_Slack_and_Webhooks.max-900x900.jpg

これらの新しいチャネルが既存の Error Reporting メール通知機能と Google Cloud Console モバイルアプリに加わることになります。

Error Reporting とこれらの通知を有効にするための手順

スタック トレースなどのエラーイベントを含むログが Cloud Logging に取り込まれるとすぐに Error Reporting が自動的に有効になります。Cloud Logging を使用しない場合は、新しいプロジェクトで Error Reporting を自己構成できます。

新しい通知チャネルを構成する方法については、こちらで Slack と Webhook それぞれの方法を確認するか、このままこのページを読み進めてください。

Slack の有効化

  1. Slack の場合: Slack サイトで Slack ワークスペースとチャネルを作成します。チャンネル URL をメモしておきます。

  2. Cloud Console で [Monitoring] を選択します。

  3. [アラート]、[Edit notification channels] の順にクリックします。

  4. [Slack] セクションで、[Add new] をクリックして Slack のログインページを開きます。

    1. Slack ワークスペースを選択します。

    2. [許可] をクリックして Cloud Monitoring の Slack ワークスペースへのアクセスを有効にします。この操作を行うと、通知チャンネルの Monitoring 構成ページに戻ります。

    3. 通知に使用する Slack チャンネルの名前を入力します。

    4. Slack 通知チャンネルの表示名を入力します。

    5. (省略可)Cloud Monitoring と Slack ワークスペースの間の接続をテストするには、[テスト通知を送信する] をクリックします。接続に成功すると、指定した Slack 通知チャネルにメッセージ「これはテストのアラート通知です」が表示されます。通知チャネルで通知の受信を確認してください。

  5. 通知に使用する Slack チャネルがプライベート チャネルの場合は、Monitoring アプリをそのチャネルに手動で招待する必要があります。

    1. Slack を開きます。

    2. Monitoring の通知として指定したチャネルに移動します。

    3. チャネルで次のメッセージを入力して送信することで、Monitoring アプリをチャネルに招待します。

    4. /invite @Google Cloud Monitoring

    5. Monitoring で通知チャネルを作成するときに指定したチャネルに、Monitoring アプリを招待するようにしてください。パブリック チャネルへの Monitoring アプリの招待は任意です。

Webhook の有効化

  1. Webhook ハンドラ: Monitoring から Webhook データを受信するパブリック エンドポイント URL を指定します。

  2. Cloud Console で [Monitoring] を選択します。

  3. [アラート]、[Edit notification channels] の順にクリックします。

  4. [Webhook] セクションで [Add new] をクリックします。

  5. ダイアログの項目をすべて入力します。

  6. [接続をテストする] をクリックして、テスト ペイロードを Webhook エンドポイントに送信します。受信側エンドポイントに移動して配信を確認します。

  7. [保存] をクリックします。

Webhook スキーマ

Error Reporting の Webhook スキーマ構造は以下のとおりです。

スキーマの構造、バージョン 1.0

読み込んでいます...

基本認証

Cloud Monitoring から送信された Webhook リクエストに加えて、基本的な認証では、ユーザー名とパスワードに HTTP 仕様が使用されます。Cloud Monitoring では、サーバーが適切な WWW-Authenticate ヘッダーで 401 レスポンスを返す必要があります。基本認証の詳細については、次を参照してください。

トークン認証

トークン認証では、エンドポイント URL のクエリ文字列パラメータと、サーバーがそれ自体と Monitoring の間で秘密であると期待するキーが必要です。トークンを含む URL の例を次に示します。

https://www.myserver.com/stackdriver-hook?auth_token=1234-abcd

Monitoring がインシデントをエンドポイント URL に送信した場合、サーバーは添付されたトークンを検証できます。この認証方法は、SSL/TLS を使用して HTTP リクエストを暗号化し、スヌーパにトークンを知られないようにする場合により効果的です。

Python でのサーバー例については、このサンプル サーバーをご覧ください。

使ってみる

Error Reporting コンソールにアクセスしたことがない場合はぜひこちらからアクセスしてみてください。Error Reporting コンソールの詳細についてはこちらのドキュメントをご覧ください。通知を構成する準備が整ったら、現在のアラートと通知の戦略に SlackWebhook のどちらが適しているかを検討してみてください。

質問がある場合や、Error Reporting の他のユーザーとディスカッションしたい場合は、Google Cloud コミュニティの Cloud Operations セクションにアクセスして、ディスカッション トピックを投稿してください。


- Google Cloud プロダクト マネージャー Eyamba Ita
- Google Cloud カスタマー エンジニア Alek Szilagyi
投稿先