Google Cloud Platform

Stackdriver のアラート ポリシーを管理、自動化する新しい方法

皆さんの組織が Google Stackdriver(モニタリング、ロギング、診断機能を提供するハイブリッド ツール スイート)をお使いなら、Stackdriver のアラート機能についてもよくご存じでしょう。DevOps チームはこの機能を使用して、クラウドで動作するアプリケーションに影響を与えるインシデントをモニタリングし、それらに対応します。

Stackdriver のアラート機能については、これまでたくさんのすばらしいフィードバックをいただきました。その最たるものが、アラートのポリシーを管理するためのプログラマティック インターフェースと、複数のクラウド プロジェクトにわたってそれらのポリシーを自動化する手段の必要性に関するフィードバックです。

Google はこのほど、Stackdriver Monitoring v3 API において、アラート ポリシー通知チャネルを管理するための新しいエンドポイントをベータ リリースしました。これにより、Stackdriver のアラート ポリシーと通知チャネルの作成、読み取り、書き込み、管理が可能になりました。

こうした管理作業は、サポートされている言語(Java または C#。さらに多くの言語が追ってサポートされます)のいずれかのクライアント ライブラリを使って、あるいはサポート言語の API(gRPCHTTP / JSON REST の両プロトコルをサポート)を直接呼び出すことで行えます。また Google Cloud SDK には、gcloud alpha monitoring policiesgcloud alpha monitoring channel-descriptorsgcloud alpha monitoring channels といったコマンドが用意されています。

アラート ポリシーと通知チャネルへのプログラマティックなアクセスは、次のような一般的なタスクを自動化することに役立ちます。

  • 異なるプロジェクト間でポリシーと通知チャネルをコピーする。たとえば、テスト、開発、本番環境の各プロジェクト間でコピーを行う。
  • 大量のアラートが発生したときにポリシーと通知チャネルを無効にし、後で再び有効にする。
  • ユーザー ラベルを利用して通知チャネルとポリシーの整理やフィルタリングを行う。
  • チームに新しい SMS 番号が追加されたら、プログラマティックに SMS チャネルを検証する。

ポリシーの整理

1 つの Google Cloud プロジェクト内に、さまざまなチームによって作成された多くのアラート ポリシーがある場合は、それらのポリシーの操作や整理が難しくなることがあります。Stackdriver Alerting API を使用すると、“ユーザー ラベル” を追加して、ポリシーにメタデータで注釈を付けることができます。そうすれば、ポリシーを見つけたり操作したりするのが容易になります。たとえば、すべてのポリシーを一覧表示するには、次のようにします。

  gcloud alpha monitoring policies list

特定のポリシーに自分のチームの名前でタグを付けるには、次のようにします。

  gcloud alpha monitoring policies update \
        "projects/my-project/alertPolicies/12345" \
        --update-user-labels=team=myteamname

これで、自分のチームの名前が付いたポリシーを簡単に検索できます。

  gcloud alpha monitoring policies list --filter='user_label.team="myteamname"'

チャネルの更新

DevOps チームに新メンバーが加わったときに、新メンバーが適切な通知をすべて受け取れるようにすべてのポリシーを更新しようとすると、非常に冗長な作業を強いられることがあります。そこで Alerting API を使用すれば、チームが所有するすべてのアラート ポリシーに新メンバーをすばやく追加できます。

最初に、新メンバーが持っている通知チャネルを調べます。

  gcloud alpha monitoring channels list

まだ通知チャネルを持っていない場合は作成できます。

  gcloud alpha monitoring channels create \
      --display-name="Anastasia Alertmaestro" \
      --type="email" \
      --channel-labels=email_address=aamaestro@alertme.tld

次に、該当するポリシーに通知チャネルを追加します。

  gcloud alpha monitoring policies update \
     "projects/my-project/alertPolicies/12345" \    
     --add-notification-channels="projects/my-project/notificationChannels/56789"

ポリシーを一覧表示するコマンドと組み合わせて、チーム内のすべてのポリシーに通知チャネルを追加する作業は、シンプルな BASH スクリプトを活用すれば簡単です。単調なポイント&クリックによる構成を何度も繰り返し行う必要はありません。

特定のエンドポイントへのアラートを無効化

ポケベルがひっきりなしに鳴り、アラートが際限なく届くときは、既存のすべてのポリシーからチャネルを削除するのではなく、チャネルへの通知を無効にするのが簡単です。

  gcloud alpha monitoring channels update \
    "projects/my-project/notificationChannels/9817323" \
    --enabled=false

まとめ

Stackdriver Monitoring v3 API で提供されるアラート ポリシーと通知チャネルの管理機能は、さまざまなタスクの簡素化や自動化に役立ちます。この機能が時間の節約につながることを私たちは願っています。そして皆さんのフィードバックをお待ちしています。

フィードバックは google-stackdriver-discussion@googlegroups.com にお送りください。

* この投稿は米国時間 4 月 3 日、Google Stackdriver の Software Engineer である Michael Safyan と、Product Manager である Amir Hermelin によって投稿されたもの(投稿はこちら)の抄訳です。

- By Michael Safyan, Software Engineer and Amir Hermelin, Product Manager, Google Stackdriver