シナリオB: SlackおよびSMSへのアラーム・メッセージの送信

このトピックでは、Slackチャネルへの自動通知およびアラームがトリガーされた場合のSMS電話番号の設定方法について説明します。

このシナリオでは、チャネルのSlackエンドポイントを設定し、そのチャネルとSMS電話番号の両方にメッセージを送信するアラームを作成します。アラームが起動すると、通知サービスがアラームのメッセージを宛先トピックに送信し、さらにトピックのサブスクリプションに展開します。このシナリオでは、トピックのサブスクリプションには、SlackチャネルおよびSMS電話番号と電子メール・アドレスが含まれています。

この図は、アラームのメッセージをSlackに送信するシナリオのコンテキストでの通知を示しています。

必須IAMポリシー

Oracle Cloud Infrastructureを使用するには、管理者によってポリシーでセキュリティ・アクセス権が付与されている必要があります。このアクセス権は、コンソール、あるいはSDK、CLIまたはその他のツールを使用したREST APIのいずれを使用している場合でも必要です。権限がない、または認可されていないというメッセージが表示された場合は、自分がどのタイプのアクセス権を持っているか、およびどのコンパートメントで作業するかを管理者に確認してください。

管理者グループのメンバーであれば、このシナリオを実行するために必要なアクセス権はすでに持っています。そうでない場合は、モニタリングおよび通知にアクセスする必要があります。

タスク1: Slackエンドポイントの設定

Slackアプリケーションへの受信Webフックを作成します。

Slackアプリケーションへの受信Webフックの例(サブスクリプションのSlackエンドポイントと同等): https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX

Slackエンドポイントを設定すると、コンソールで他のすべてのシナリオ・ステップを完了できます。または、Oracle Cloud Infrastructure CLIまたはAPIを使用して、各操作を自分で実行することもできます。

タスク2:アラーム、トピックおよびサブスクリプションの作成

コンソール、CLIまたはAPIでアラーム、トピックおよびサブスクリプションを作成できます。

コンソールの使用

この項では、コンソールを使用したアラーム、トピックおよびサブスクリプションの作成手順を示します。

ノート

このシナリオの別のワークフローには、最初にトピックおよびサブスクリプションを作成し、次にアラームの作成時にこのトピックを選択することが含まれます。

トラブルシューティングのヘルプは、通知のトラブルシューティングを参照してください。

アラーム、トピックおよびSlackサブスクリプションの作成

この例では、コンソールを使用して、高CPU使用率が検出されたときにSlackにメッセージを送信するアラームを作成する手順を説明します。このプロセス中に、Slackチャネル(Webフック・トークンを含むSlackエンドポイント)を参照するトピックを作成します。後でSMSおよび電子メール・サブスクリプションを追加できます。

  1. ナビゲーション・メニューを開き、「可観測性および管理」をクリックします。「モニタリング」で、「アラーム定義」をクリックします。
  2. 「アラームの作成」をクリックします。

  3. 「アラームの作成」ページの「アラームの定義」の下で、しきい値を設定します: 

    • メトリックの説明
      • コンパートメント: (VMを含むコンパートメントを選択します)
      • メトリック・ネームスペース: oci_computeagent
      • メトリック名: CpuUtilization
      • 間隔: 1m
      • 統計: 件数
    • トリガー・ルール:

      • 演算子: 次より大きい
      • : 90
      • トリガー遅延分数: 1
  4. 「通知」「宛先」にSlackエンドポイントを追加します:
    • 宛先サービス: 通知サービス
    • コンパートメント: (トピックおよび関連サブスクリプションを作成するコンパートメントを選択します)
    • トピック: 「トピックの作成」をクリックします

      ノート

      トピックおよびSlackサブスクリプションをすでに作成している場合は、新規トピックを作成するのではなく、ここでそのトピックを選択できます。
      • トピック名: アラームのトピック機密情報の入力は避けてください。
      • サブスクリプション・プロトコル: Slack
      • URL: Webフック・トークンを含むSlackエンドポイント。
  5. 「アラームの保存」をクリックします。
  6. 新規Slackサブスクリプションの確認: Slackチャネルに送信されている確認URLに移動します。(「サブスクリプションを確認するには」というフレーズを含むメッセージを検索します。)
SMSサブスクリプションの追加

この例では、コンソールを使用して、アラーム設定時に作成したトピックにSMSサブスクリプションを追加する手順を示します。

  1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「アプリケーション統合」で、「通知」をクリックします。
  2. サブスクリプションを追加するトピックの名前をクリックします。

    例: 「アラーム・トピック」(アラームにトピックを作成する際に推奨されるトピック名を使用したことを想定)。

  3. トピックの詳細ページで、「サブスクリプションの作成」をクリックします。
  4. サブスクリプションの作成」ダイアログ・ボックスで、SMSサブスクリプションを設定します:

    • プロトコル:「SMS」を選択します。
    • :電話番号の国を選択します。
    • 電話番号: E.164形式を使用して、電話番号を入力します。

      SMSエンドポイントの例:

  5. 「作成」をクリックします。

    SMSサブスクリプションが作成され、指定した電話番号にサブスクリプション確認メッセージが送信されます。サブスクリプションは、確認されるまで「保留中」ステータスのままです。

  6. 新しいSMSサブスクリプションを確認するには、受信した確認メッセージの手順に従います。(「REPLY 」CONFIRM」というフレーズの後にトピック名が続くメッセージを探してください。)
電子メール・サブスクリプションの追加(オプション)

この例では、コンソールを使用して、アラーム設定時に作成したトピックにオプションの電子メール・サブスクリプションを追加する手順を示します。

  1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「アプリケーション統合」で、「通知」をクリックします。
  2. サブスクリプションを追加するトピックの名前をクリックします。

    例: 「アラーム・トピック」(アラームにトピックを作成する際に推奨されるトピック名を使用したことを想定)。

  3. トピックの詳細ページで、「サブスクリプションの作成」をクリックします。
  4. サブスクリプションの作成」ダイアログ・ボックスで、電子メール・サブスクリプションを設定します:

    • プロトコル: 「電子メール」を選択します。
    • 電子メール: 電子メール・アドレスを入力します。
  5. 「作成」をクリックします。

    電子メール・サブスクリプションが作成され、指定された電子メール・アドレスにサブスクリプション確認URLが送信されます。サブスクリプションは、確認されるまで「保留中」ステータスのままです。

  6. 新しい電子メール・サブスクリプションを確認するには、電子メールを開き、確認URLに移動します。

CLIの使用

この項では、CLIを使用したトピック、サブスクリプションおよびアラームの作成手順を示します。

APIの使用およびリクエストの署名の詳細は、REST APIおよびセキュリティ資格証明を参照してください。SDKの詳細は、ソフトウェア開発キットとコマンドライン・インタフェースを参照してください。
  1. トピックの作成

    コマンド・プロンプトを開き、oci ons topic createコマンドを実行します: 

    oci ons topic create --name "Alarm Topic" --compartment-id "<compartment-ocid>"
  2. サブスクリプションの追加

    前のステップで作成したトピックに、Slackエンドポイント(Webフック・トークンを含む)を参照するサブスクリプションと、オプションの電子メール・アドレスおよびSMS電話番号を追加します。

    • Slackサブスクリプションの作成: コマンド・プロンプトを開き、oci ons subscription createコマンドを実行します:

      oci ons subscription create --compartment-id "<compartment-ocid>" --topic-id "<topic-ocid>" --protocol "SLACK" --subscription-endpoint "<slack-endpoint>"
    • SMSサブスクリプションの作成:コマンド・プロンプトを開き、oci ons subscription createコマンドを実行します:

      oci ons subscription create --compartment-id "<compartment-ocid>" --topic-id "<topic-ocid>" --protocol "SMS" --subscription-endpoint "<sms-endpoint>"
    • 電子メール・サブスクリプションの作成(オプション):コマンド・プロンプトを開き、oci ons subscription createコマンドを実行します:

      oci ons subscription create --compartment-id "<compartment-ocid>" --topic-id "<topic-ocid>" --protocol "EMAIL" --subscription-endpoint "john.smith@example.com"
  3. アラームの作成

    CPUのしきい値を定義し、このトピックを宛先として参照するアラームを作成します: コマンド・プロンプトを開き、oci monitoring alarm createコマンドを実行します: 

    oci monitoring alarm create --display-name "VM Memory Alarm" --compartment-id "<compartment-ocid>" --metric-compartment-id "<compartment-ocid>" --namespace "oci_computeagent" --query-text "CPUUtilization[1m].count() > 90" --severity "CRITICAL" --destinations "<topic-ocid>" --is-enabled true

トラブルシューティングのヘルプは、通知のトラブルシューティングを参照してください。

APIの使用

この項では、APIを使用したトピック、サブスクリプションおよびアラームの作成手順を示します。

APIの使用およびリクエストの署名の詳細は、REST APIおよびセキュリティ資格証明を参照してください。SDKの詳細は、ソフトウェア開発キットとコマンドライン・インタフェースを参照してください。

次の操作を使用します:

  1. CreateTopic: トピックの作成。

    CreateTopicリクエストの例
    POST /20181201/topics
    Host: notification.us-phoenix-1.oraclecloud.com
    <authorization and other headers>
    {
      "name": "Alarm Topic",
      "compartmentId": "<compartment_OCID>"
    }
  2. CreateSubscription:このトピックでは、Slackチャネルを参照するサブスクリプションと、オプションで電子メール・アドレスおよびSMS電話番号を追加します。

    CreateSubscriptionリクエストの例: Slack
    POST /20181201/subscriptions
    Host: notification.us-phoenix-1.oraclecloud.com
    <authorization and other headers>
    {
      "topicId": "<topic_OCID>",
      "compartmentId": "<compartment_OCID>",
      "protocol": "SLACK",
      "endpoint": "<slack-endpoint>"
    }
    CreateSubscriptionリクエストの例: SMS
    POST /20181201/subscriptions
    Host: notification.us-phoenix-1.oraclecloud.com
    <authorization and other headers>
    {
      "topicId": "<topic_OCID>",
      "compartmentId": "<compartment_OCID>",
      "protocol": "SMS",
      "endpoint": "<sms-endpoint>"
    }
    CreateSubscriptionリクエストの例: 電子メール
    POST /20181201/subscriptions
    Host: notification.us-phoenix-1.oraclecloud.com
    <authorization and other headers>
    {
      "topicId": "<topic_OCID>",
      "compartmentId": "<compartment_OCID>",
      "protocol": "EMAIL",
      "endpoint": "john.smith@example.com"
    }
  3. CreateAlarm: CPUしきい値を定義し、このトピックを参照するアラームを作成します。

    CreateAlarmリクエストの例
    POST /20180401/alarms
    Host: telemetry.us-phoenix-1.oraclecloud.com
    <authorization and other headers>
    {
      "displayName": "CPU Alarm",
      "compartmentId": "<compartment_OCID>",
      "metricCompartmentId": "<compartment_OCID>",
      "namespace": "oci_computeagent",
      "query": "CPUUtilization[1m].count() > 90",
      "severity": "CRITICAL",
      "destinations":
      [
        "<topic_OCID>"
      ],
      "isEnabled": true
    }

トラブルシューティングのヘルプは、通知のトラブルシューティングを参照してください。