このドキュメントでは、クライアント ライブラリまたは Google Cloud CLI を使用して通知チャンネルを作成、管理する方法を説明します。どちらも Cloud Monitoring API を呼び出します。Cloud Monitoring は、通知チャンネルを使用して、アラート ポリシーの条件が満たされたときにユーザーまたはユーザーのオンコール チームに通知します。使用可能なチャンネルの種類がいくつかあり、種類ごとに通知チャンネル記述子に記述されています。特定の種類の通知チャネルは、その種類の記述子のインスタンスになっています。アラート ポリシーには、通知経路として使用する通知チャネルへの参照が含まれます。
通知チャネルは、アラート ポリシーで使用する前に存在している必要があります。通知チャネル記述子は提供されますが、通知チャネルは自分で作成する必要があります。
Google Cloud コンソールを使用して通知チャンネルを構成するには、通知チャンネルの作成と管理をご覧ください。
このドキュメントで使用するコードサンプルは、例: バックアップと復元で説明しているアラート ポリシー API の例から抽出したものです。
この API について
NotificationChannel
リソースでは、通知チャンネルを管理するオペレーションがサポートされています。また、チャンネルの verificationStatus
フィールドの管理に関連するオペレーションもサポートしています。
- 確認コードの送信
- 検証されたチャネルの検証ステータスを、同じプロジェクトまたは新しいプロジェクトの他の同一のチャネルにコピーするためにコードを生成する
- 前の 2 つのオペレーションで作成されたコードを使用してチャネルを検証する
詳細については、notificationChannels
リファレンス ドキュメントをご覧ください。
始める前に
Cloud Monitoring API を使用して通知チャンネルを表示および構成するために必要な権限を取得するには、プロジェクトに対する Monitoring NotificationChannel 編集者(roles/monitoring.notificationChannelEditor
)の IAM ロールを付与するよう管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Cloud Monitoring のロールの詳細については、Identity and Access Management を使用してアクセスを制御するをご覧ください。
通知チャンネルのタイプを一覧表示する
Monitoring には、多数の組み込み型通知チャネルタイプが用意されています。これらの種類は、それぞれ NotificationChannelDescriptor
として記述されています。これらの記述子には type
フィールドがあります。このフィールドの値は、そのチャネルの種類のインスタンスを作成するときの ID として機能します。Cloud Monitoring API または Google Cloud CLI で作成できるチャネルタイプのリストを取得するには、次のコマンドを入力します。
$ gcloud beta monitoring channel-descriptors list --format='value(type)'
campfire
email
google_chat
hipchat
pagerduty
pubsub
slack
sms
webhook_basicauth
webhook_tokenauth
通知チャンネルについては、通知チャンネルの作成と管理をご覧ください。
目的の通知チャネルがサポートされていない場合は、Pub/Sub への通知の送信に依存するパイプラインの作成を検討してください。Flask を使用する Python の例については、Cloud Monitoring と Cloud Run を使用したカスタム通知の作成をご覧ください。他の例については、cloud-alerting-notification-forwarding Git リポジトリをご覧ください。
Google Cloud プロジェクト内のすべてのチャンネル記述子を取得するには、notificationChannelDescriptors.list
メソッドを使用します。取得した記述子は読み取り専用です。
特定の記述子を探していて、その名前がわかっている場合は、notificationChannelDescriptors.get
メソッドを使用するとそのチャネル記述子だけを取得できます。チャネル記述子の名前は、projects/[PROJECT_ID]/notificationChannelDescriptors/[CHANNEL_TYPE]
という形式です。[CHANNEL_TYPE]
は上記の種類のいずれかとなり、たとえば次のようになります。
projects/[PROJECT_ID]/notificationChannelDescriptors/email
gcloud
Google Cloud プロジェクト内のすべての通知チャンネル記述子を一覧表示するには、gcloud beta monitoring channel-descriptors list
コマンドを使用します。
gcloud beta monitoring channel-descriptors list
成功すると、list
コマンドは、指定されたプロジェクト内のすべてのチャネル記述子のリストを提供します。たとえば、email
チャネル記述子は次のようにリストに表示されます。
--- description: A channel that sends notifications via email. displayName: Email labels: - description: An address to send email. key: email_address name: projects/[PROJECT_ID]/notificationChannelDescriptors/email type: email ---
すべてのチャネル記述子に次のフィールドがあります。
name
: チャネル記述子の完全修飾リソース名type
: チャネルのタイプを示す名前の部分displayName
: 表示用のtype
フィールドの説明文description
: チャネルの簡単な説明labels
: チャネルタイプに固有の一連のフィールド。各チャネルタイプには独自のラベルセットがあります。
チャネルが作成される際に、enabled
フィールドの値も指定されます(デフォルト値は true
)。
単一のチャネル記述子を一覧表示するには、gcloud beta monitoring
channel-descriptors describe
を使用し、チャネル記述子の名前を指定します。完全修飾名を指定する必要はありません。たとえば、次のコマンドを実行すると、上記のリストが返されます。
gcloud beta monitoring channel-descriptors describe email
gcloud beta monitoring channel-descriptors describe projects/[PROJECT_ID]/notificationChannelDescriptors/email
詳細については、gcloud beta monitoring channel-descriptors
list
と describe
のリファレンスをご覧ください。describe
コマンドは、API の notificationChannelDescriptors.get
メソッドに相当します。
通知チャンネルを作成する
Google Cloud CLI を使用して、JSON ファイルまたは YAML ファイルから Google Cloud プロジェクトの通知チャンネルを作成するか、プログラムで作成できます。
通知チャネルを作成するには、その記述子のフィールドに値を指定します。type
など、ほとんどはどの通知チャネル記述子にも対応しています(notificationChannelDescriptors
を参照)。
各記述子には一連のラベルが割り当てられます。このセットは記述子によって異なります。特定の記述子のラベルセットを確認するには、通知チャンネルのタイプを一覧表示するで説明されている gcloud beta monitoring channel-descriptors describe
コマンドを使用して記述子を取得します。たとえば、email
チャネル記述子を取得すると、1 つのラベルが表示されます。
labels: - description: An address to send email. key: email_address
pubsub
チャネル記述子には、Pub/Sub トピックを識別する単一のラベルも含まれています。ただし、チャネルには複数のラベルを含めることができます。たとえば、slack
チャネル記述子には 2 つのラベルがあります。
labels: - description: A permanent authentication token provided by Slack. This field is obfuscated by returning only a few characters of the key when fetched. key: auth_token - description: The Slack channel to which to post notifications. key: channel_name
webhook_basicauth
チャネル記述子を取得すると、いくつかのラベルが表示されます。
labels: - description: The password. The field is obfuscated when the channel is fetched. key: password - description: The public URL to which to publish the webhook. key: url - description: The username. key: username
プログラムまたはコマンドラインから新しいチャネルを作成する場合、仕様内の type
の値は、対応する通知チャネル記述子の type
フィールドと一致しなければなりません。必要なラベルキーもチャネル記述子と一致する必要があります。
一部のラベルは、プロバイダとの認証に使用される認証情報に対応しています。チャネルを作成するときに、これらのラベルの値をプロバイダから取得する必要があります。認証情報を取得するには、プロバイダのウェブサイトの API キー生成ページを使用するか、プロバイダとの OAuth ログインフローを行う必要があります。認証情報を取得する方法の詳細は、プロバイダによって異なります。
たとえば、JSON の新しい pubsub
通知チャネルの仕様は次のとおりです。
{ "type": "pubsub", "displayName": "Notifications", "description": "Pub/Sub channel for notifications", "labels": { "topic": "projects/[PROJECT_ID]/topics/notificationTopic" }, }
type
値(pubsub
)と 1 つのラベルキー(topic
)が、対応するチャネル記述子の type
フィールドと labels.key
フィールドに対応しています。
チャネルはデフォルトで有効になっています。非アクティブなチャネルを作成する場合は、フィールド enabled
に値 false
を指定します。
次の例で、通知チャネルの作成手順を説明します。
gcloud
Google Cloud プロジェクトに通知チャンネルを作成するには、gcloud beta monitoring
channels create
コマンドを使用します。ファイルからチャネルを読み込むには、--channel-content-from-file
フラグを使用してファイルを指定します。
次の例では、新しい Pub/Sub チャネルを pubsub-channel.json
ファイルから作成します。
gcloud beta monitoring channels create --channel-content-from-file="pubsub-channel.json"
このコマンドが成功すると、新しいチャネルの名前が戻ります。たとえば、次のようになります。
Created notification channel [projects/[PROJECT_ID]/notificationChannels/1355376463305411567].
詳しくは、gcloud beta monitoring channels create
リファレンスをご覧ください。
C#
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
例: Slack 通知チャンネルを作成する
Slack アプリの通知チャンネルを構成する手順は次のとおりです。
Slack アプリを構成します。
- Slack アプリをまだお持ちでない場合は、Slack リファレンス ドキュメントに沿って作成し、ワークスペースにインストールします。
chat:write
とchat:write.public
の OAuth スコープを使用して Slack アプリを構成します。- アプリの bot ユーザーの OAuth トークンをコピーします。
通知チャンネルの構成を定義するファイルを作成します。
auth_token
キーに Slack アプリの bot ユーザー OAuth トークンの値が設定されたラベルを追加します。次に例を示します。{ "description": "A Slack notification channel", "displayName": "Slack", "type": "slack", "enabled": true, "labels": { "auth_token": "OAUTH_TOKEN_VALUE", "channel_name": "SLACK_CHANNEL_NAME" } }
次のコマンドを実行して、通知チャンネルを作成します。
gcloud beta monitoring channels create --channel-content-from-file="FILE_NAME"
プロジェクト内の通知チャンネルを一覧表示する
Google Cloud プロジェクト内のすべての通知チャンネルを取得するには、notificationChannels.list
メソッドを使用します。このメソッドでは filter
オプションと orderBy
オプションもサポートされており、結果を絞り込んだり並べ替えたりできます。並べ替えとフィルタリングをご覧ください。
特定のチャネルを探していて、その名前がわかっている場合は、notificationChannels.get
メソッドを使用するとそのチャネルだけを取得できます。チャネルの名前は projects/[PROJECT_ID]/notificationChannels/[CHANNEL_ID]
という形式です。たとえば、次のようになります。
projects/[PROJECT_ID]/notificationChannels/1355376463305411567
チャネルを取得すると、セキュリティ上の理由から、認証トークンや API キーなどの機密値が難読化される可能性があります。既存のチャネルをコピーして新しいチャネルを作成している場合は、難読化された値を修正する必要があります。
gcloud
Google Cloud プロジェクト内のすべての通知チャンネルを一覧表示するには、gcloud beta monitoring channels list
コマンドを使用します。
gcloud beta monitoring channels list
成功すると、list
コマンドは、指定されたプロジェクト内のすべてのチャネルのリストを提供します。たとえば、上記のコマンドは、次のエントリを含むリストを返します。
--- description: E-mail channel created by gcloud as a test displayName: test e-mail channel enabled: false labels: email_address: user@example.com name: projects/[PROJECT_ID]/notificationChannels/1355376463305411567 type: email --- description: Pub/Sub channel for notifications displayName: Notifications enabled: true labels: topic: projects/[PROJECT_ID]/topics/notificationTopic name: projects/[PROJECT_ID]/notificationChannels/1355376463305411567 type: pubsub
単一のチャネルを表示するには、gcloud beta monitoring
channels describe
を使用し、チャネルの名前を指定します。
たとえば、次のコマンドは、上記のリストに示す Pub/Sub チャネルを返します。
gcloud beta monitoring channels describe projects/[PROJECT_ID]/notificationChannels/1355376463305411567
詳細については、gcloud beta monitoring channels list
と describe
のリファレンスをご覧ください。describe
コマンドは、API の notificationChannels.get
メソッドに相当します。
C#
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
プロジェクトから通知チャンネルを削除する
通知チャンネルを Google Cloud プロジェクトから削除するには、notificationChannels.delete
メソッドを使用し、削除する通知チャンネルの名前を指定します。チャネルの名前は NotificationChannel
インスタンス内の name
フィールドの値です。displayName
フィールドの値ではありません。
チャネルの名前は projects/[PROJECT_ID]/notificationChannels/[CHANNEL_ID]
という形式です。たとえば、次のようになります。
projects/[PROJECT_ID]/notificationChannels/1355376463305411567
デフォルトでは、アラート ポリシーによって参照されているチャネルを削除しようとしても、そのチャネルは削除されません。アラート ポリシーからの参照を強制的に削除し、チャネルも削除するには、force
オプションを true
に設定します。このオプションにより、このチャンネルはすべての参照ポリシーから自動的に削除されます。
gcloud
通知チャネルを削除するには、gcloud beta monitoring channels
delete
を使用し、削除するチャネルの名前を指定します。たとえば、次のコマンドは、別の使用例で作成した email
チャネルを削除します。
gcloud beta monitoring channels delete projects/[PROJECT_ID]/notificationChannels/1355376463305411567
詳細については、gcloud beta monitoring channels delete
のリファレンスをご覧ください。
C#
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
通知チャンネルに変更を加える
通知チャネルに変更を加えるには、notificationChannels.patch
メソッド(REST API 内)を使用します。他の API 実装と Google Cloud CLI は、patch
ではなく、この update
を呼び出します。
更新オペレーションは、既存のチャネルを完全に置き換えることも、フィールドのサブセットを変更することもできます。たとえば、チャネルを有効または無効にすることができます。チャネルを無効にすると、チャネルへの通知の配信ができなくなります。変更が一時的な場合、チャネルを参照するアラート ポリシーからチャネルを削除するのではなく、通常はチャネルを無効にすることをおすすめします。
gcloud
無効になっている通知チャネルを有効にするには、gcloud beta monitoring channels update
コマンドを使用し、--enabled
フラグを指定します。次のコマンドで、前の例で(無効状態で)作成した email
通知チャネルを有効にします。
gcloud beta monitoring channels update projects/[PROJECT_ID]/notificationChannels/1355376463305411567 --enabled
ポリシーを無効にする場合にも同じコマンドを使用しますが、--no-enabled
フラグを指定します。詳細については、gcloud beta monitoring channels update
リファレンスをご覧ください。update
コマンドは、REST API の notificationChannels.patch
メソッドに相当します。
C#
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Monitoring への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
通知チャンネルのログを表示する
ログ エクスプローラを使用して、通知チャネルのエラーを表示できます。
-
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] である結果を選択します。
クエリを入力して実行します。通知チャンネル エラーに固有のクエリについては、Cloud Monitoring のクエリをご覧ください。