Amazon Web Services ブログ

Amazon CloudWatch アラームによる Amazon Connect API の利用状況監視

多くの組織が Amazon Connect を利用してコンタクトセンターを運営し、Connect API によりカスタムアプリケーションを統合しています。これらの API は、エージェントの状態管理、リアルタイムメトリクスの取得、コンタクトセンターのプロセス自動化、特定のビジネス要件を満たすための全体的な顧客体験のカスタマイズなど、コンタクトセンター運用のさまざまな側面を合理化およびカスタマイズするために使用されます。しかし、通話量が多い際には、これらの API 統合によって大量のリクエストが発生する可能性があります。API の使用量がプロビジョニングされた容量を超えると、顧客のリクエストがスロットリングされ、コンタクトセンターのパフォーマンスに影響を与えます。

このブログ記事では、お客様が Amazon CloudWatch を活用して Amazon Connect コンタクトセンター API の使用状況をアクティブに監視し、API の使用量が定義された容量制限に近づいたときにアラートを受け取る方法について説明します。これにより、アプリケーションの最適化や容量の追加など、パフォーマンスの問題が発生する前に対処できます。この処理は、AWS Cloud Development Kit (CDK) を用いて、効率的にプログラムによる CloudWatch アラームの作成および管理が可能です。Amazon Connect API の使用状況の包括的な監視とアラート設定を行うことで、企業はコンタクトセンターの運用を常に円滑かつ効率的に行え、ボトルネックの発生を未然に防ぎ、最適なパフォーマンスを維持できます。

ソリューションの概要

このソリューションでは、Amazon Connect API の 1 つ DescribeQueue を監視するための Amazon CloudWatch アラームの作成方法を説明します。アラームを作成する 3 つの異なる方法を紹介しますので、ご利用のユースケースに合わせていずれか 1 つを使用して下さい。

A. Amazon CloudWatch からアラームを作成
B. Service Quotas からアラームを作成
C. AWS Cloud Development Kit (CDK) を使用してアラームを作成

前提条件

このソリューションでは、次のリソースを理解し、アクセスできることを前提としています。

  • AWS アカウント
  • Amazon Connect インスタンス
  • AWS CDK のインストール
  • Amazon SNS トピック

ソリューションのデプロイ

Amazon Connect API を監視するアラームを作成するために、まず CloudWatch Metric Math を作成して、DescribeQueue API の現在の使用状況を SERVICE QUOTA のパーセンテージとして表示します。アラームを作成したい他の API を選択することもできます。API またはそのメトリクスが表示されない場合は、その API が呼び出されていないことを意味します。DescribeQueue API のメトリクスを生成するには、Amazon Connect インスタンスにログインし、ルーティングの下のキューを選択し、BasicQueue または他のキューをクリックします。

A) Amazon CloudWatch コンソールからアラームを作成する手順

  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます
  2. 左側のナビゲーションペインからメトリクスを選択します
  3. すべてのメトリクスをクリックし、使用を選んでから AWS リソースを選びます。サービスクォータ使用状況メトリクス の一覧が表示されます
    CloudWatch Console
  4. 検索ボックスに API 名である DescribeQueue を入力し、チェックボックスをクリックします。または、サービス名である Connect を入力し、結果リストから API を選択することもできます。グラフには、その API の現在の使用状況が表示されます
  5. 現在の使用状況をクォータの割合で確認するには、以下の手順を実行します
    1. グラフ化したメトリクスタブを選択します
    2. ドロップダウンメニュー数式を追加をクリックし空の式で始まるを選択します。新しい行の詳細の下に、m1/SERVICE_QUOTA(m1)*100 と入力し、適用をクリックします
      CloudWatch Console
  6. サービスクォータに近づいた場合に通知するアラームを設定するには、以下の手順を実行します
    1. m1/SERVICE_QUOTA(m1)*100 の行で、アクションの下にあるベルのようなアラームアイコンを選択します。アラーム作成ページが表示されます
    2. 期間1 分または 5 分に設定します
    3. 条件の下で、しきい値の種類静的になっており、式 1 が次の時…以上に設定されていることを確認します。… よりもの下に 80 と入力します。これにより、使用量がクォータの 80% 以上になった場合に ALARM 状態になるアラームが作成されます
    4. その他の設定の下で、アラームを実行するデータポイント3/3 または要件に応じた値に指定し、欠落データの処理欠落データを見つかりませんとして処理を選択して、次へを選択します
      アラームの設定画面
    5. 次のページで、通知の下にあるアラーム状態トリガーアラーム状態が選択されていることを確認し、既存の SNS トピックを選択を選んで SNS トピックを選択するか、新しいトピックの作成を選んで一意のトピック名を入力し、通知を受け取る電子メールのエンドポイントを指定します。また、トピック ARN を使って他のアカウントに通知を選んで次へをクリックすることもできます。選択したトピックは、アラームが ALARM 状態になったときに通知されます
    6. 次のページで、アラーム名DescribeQueueAlarm と入力し、次へ を選択します
    7. アラームの作成を選択します

B) Service Quotas から アラームを作成する手順 

別の方法として、Service Quotas からアラームを作成することもできます。

  1. Service Quotas コンソール (https://console.aws.amazon.com/servicequotas/) にアクセスします
  2. 左側のナビゲーションペインで、AWS のサービスを選択します
  3. サービスのリストから Amazon Connect を検索し、選択します
  4. サービスクオータの下から DescribeQueue を検索します。クォータ名 Rate of DescribeQueue API requests が表示されます。詳細と下にあるさまざまなタブを確認するため、クォータ名をクリックします
    1. Service Quotas Console
  5. アラームタブを選択し、作成をクリックします
  6. アラームのしきい値適用されたクォータ値の 80% に設定します
  7. アラーム名DescribeQueueAlarm と入力し、作成をクリックします
  8. アラームを編集するには、アラーム名 DescribeQueueAlarm をクリックしてアラームページを表示し、アクションからの編集を選択します。ここで期間やアラームのデータポイントを更新し、既存の Amazon SNS トピックを選択したり、新しいトピックを作成できます

C) AWS CDK を使用してアラームを作成する方法

Amazon Connect API を監視するための CloudWatch Alarm を自動的に作成したい場合は、AWS Cloud Development Kit (CDK) を使用することができます。Python AWS CDK を使用して、Amazon CloudWatch の Alarm を設定します。

    1. アプリを作成します
      $ mkdir DescribeQueueAlarm
      $ cd DescribeQueueAlarm
    2. アプリを初期化します
      cdk init app --language python
    3. アプリの Python 仮想環境を有効化し、AWS CDK のコアの依存関係をインストールします
      source .venv/bin/activate
      python -m pip install -r requirements.txt
    4. 次の例を describe_queue_alarm/describe_queue_alarm_stack.py に貼り付けて、Amazon CloudWatch アラームを追加します。コード内のサンプル SNS トピックは、前提条件として作成した SNS トピックに置き換えてください
      from aws_cdk import (
          Stack,
      )
      from constructs import Construct
      from aws_cdk import aws_cloudwatch as cloudwatch
      
      class DescribeQueueAlarmStack(Stack):
      
          def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
              super().__init__(scope, construct_id, **kwargs)
              
              cfn_alarm = cloudwatch.CfnAlarm(self, "DescribeQueueAlarm",
                  alarm_name="DescribeQueueAlarm",
                  alarm_description="Alarm to monitor Describe Queue API Usage",
                  comparison_operator="GreaterThanOrEqualToThreshold",
                  evaluation_periods=3,
                  datapoints_to_alarm=3,
                  metrics=[cloudwatch.CfnAlarm.MetricDataQueryProperty(
                      id="m1",
                      label="Describe Queue",
                      metric_stat=cloudwatch.CfnAlarm.MetricStatProperty(
                          metric=cloudwatch.CfnAlarm.MetricProperty(
                              namespace="AWS/Usage",
                              metric_name="CallCount",
                              dimensions=[cloudwatch.CfnAlarm.DimensionProperty(
                                  name="Resource",
                                  value="DescribeQueue"
                              ),
                              cloudwatch.CfnAlarm.DimensionProperty(
                              name="Service",
                              value="Connect"
                              ),
                              cloudwatch.CfnAlarm.DimensionProperty(
                              name="Type",
                              value="API"
                              ),
                              cloudwatch.CfnAlarm.DimensionProperty(
                              name="Class",
                              value="None"
                          )]
                          ),
                          period=60,
                          stat="Average"
                      ),
                      return_data=False),
                  cloudwatch.CfnAlarm.MetricDataQueryProperty(
                      id="e1",
                      expression="(m1/SERVICE_QUOTA(m1))*100",
                      label="describe_queue_pct_utilisation",
                      return_data=True
                  )],
                  threshold=80,
                  treat_missing_data="missing",
                  #Replace SNS topic with the one you created as prerequisite
                  alarm_actions=['arn:aws:sns:us-east-1:1234567890:SnsTopic']
              )  
    5. AWS CloudFormation テンプレートを合成します
      cdk synth
    6. AWS CloudFormation に CDK スタックをデプロイします
      cdk deploy

クリーンアップ

CloudWatch アラームを削除するには :

  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます
  2. 左側のナビゲーションペインで すべてのアラームを選択します
  3. アラームのリストから DescribeQueueAlarmを選択します
  4. アクションから削除を選択し、アラームを削除します

SNSトピックを作成した場合は、以下の手順で削除します :

  1. SNS コンソール (https://console.aws.amazon.com/sns/home) を開きます
  2. 左側のナビゲーションペインで トピックを選択します
  3. トピックページで、CloudWatch アラーム作成時に使用したトピックを選択し、削除を選択します
  4. トピックの削除ダイアログボックスにこれを削除と入力し、削除を選択します

Service Quotas から作成したアラームを削除する場合も、上記と同様の手順で行います。AWS CDK を使用して CloudWatch アラームを作成した場合は、以下のコマンドで AWS CloudFormation スタックとそれに関連付けられたすべてのリソースを削除できます。

cdk destroy

結論

この記事では、Amazon CloudWatch アラームと Amazon Simple Notification Service を使用して、Amazon Connect API の使用状況を監視し、使用量がしきい値を超えた場合に通知を受け取る方法について説明しました。また、AWS Cloud Development Kit (CDK) を使用して、API 使用状況を監視する Amazon CloudWatch アラームの作成を自動化する方法についても紹介しました。

CloudWatch に API 使用状況メトリクスをレポートするサービスのリストの詳細については、AWS API 使用状況メトリクスをご覧ください。


筆者について

Naseer Sayyad は、Amazon Web Services のシニアテクニカルアカウントマネージャーです。Naseer は、AWS のエンタープライズ顧客と協力し、クラウド移行ジャーニーで成功するためのサポートをしています。彼はクラウドコンピューティングと自動化に情熱を持っています。仕事以外では、旅行と写真撮影を楽しんでいます。LinkedIn のアカウントは @naseersayyad です。

翻訳はテクニカルアカウントマネージャー高橋が担当しました。原文はこちらです。