

# Amazon IVS Low-Latency Streaming のモニタリング
<a name="stream-health"></a>

Amazon CloudWatch を使用して、Amazon Interactive Video Service (IVS) のリソースをモニタリングできます。CloudWatch は Amazon IVS から raw データを収集し、リアルタイムに近い読み取り可能なメトリクスに加工します。これらの統計は 15 か月間保持されるため、ウェブアプリケーションやサービスの動作に関する履歴情報を取得できます。特定のしきい値にアラームを設定し、これらのしきい値に達したときに通知を送信したりアクションを実行したりできます。詳細については、[CloudWatch ユーザーガイド](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)を参照してください。

メトリクスのタイムスタンプは、メトリクスデータが蓄積される期間の開始を表します。例: 1 分間の`LiveDeliveredTime`メトリクスの合計 (01:02:00 に 300 秒)。これは、01:02:00～01:02:59 の 1 分間に、5 分間分の動画が視聴者に配信されたことを意味します。

高解像度として指定されたメトリクスの場合、最初のデータポイントはストリーミング開始から数秒後に表示されます。メトリクスリクエストを行うときは、期間として 5 秒を指定することをお勧めします。(Amazon CloudWatch ユーザーガイドの [解像度](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Resolution_definition) を参照してください。) その他のメトリクスについては、参照先のタイムスタンプから 1 分以内にデータが送信されます。

高解像度メトリクスは、時間の経過とともにロールアップされます。メトリクスの経過とともに解像度は実質的に低下します。スケジュールは次のとおりです。
+ 1 秒のメトリクスは 3 時間使用できます。
+ 60 秒のメトリクスは 15 日間使用できます。
+ 5 分間のメトリクスは 63 日間使用できます。
+ 1 時間のメトリクスは、455 日 (15 か月) 間使用できます。

データ保持に関する最新情報については、[Amazon CloudWatch のよくある質問](https://aws.amazon.com/cloudwatch/faqs/)の「保持期間」を検索してください。

## 前提条件
<a name="stream-health-prerequisites"></a>
+ Stream Health API および CloudWatch メトリクスと対話するのに十分な IAM アクセス許可を持つ AWS アカウントが必要です。具体的な手順については、「[IVS 低レイテンシーストリーミングの開始](getting-started.md)」を参照してください。
+ チャネルを作成し、ストリームを開始する必要があります。[IVS 低レイテンシーストリーミングユーザーガイド](what-is.md)に関連情報があります。
  + チャネルの作成手順については、「*Amazon IVS 低レイテンシーストリーミングの開始*」の「[チャネルの作成](getting-started-create-channel.md)」を参照してください。
  + ストリームの開始手順については、「*Amazon IVS 低レイテンシーストリーミングの開始*」の「[ストリーミングソフトウェアの設定](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/getting-started-set-up-streaming.html)」を参照してください。
  + エンコーダー設定の詳細については、[Amazon IVS ストリーミング設定](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/streaming-config.html)を参照してください。

## ストリームセッションデータへのアクセス
<a name="stream-health-session-data"></a>

`listStreamSessions` オペレーションを使用すると、チャネルが最大 60 日間保持しているストリームのリストにアクセスできます。このリストには、ライブストリームセッション (空の `endTime` で示される) が含まれる場合があります。

`getStreamSession` オペレーションを通じて、特定のストリームのセッションデータを取得できます。`streamId` パラメータを指定しない場合、オペレーションは最新のセッションを返します。さらに、オペレーションを定期的に呼び出してストリームの最新イベント (最新の 500 個まで) を取得することもできます。

### コンソールでの手順
<a name="stream-health-session-data-console"></a>

1. [Amazon IVS コンソール](https://console.aws.amazon.com/ivs)を開きます。

   ([AWS マネジメントコンソール](https://console.aws.amazon.com/)から Amazon IVS コンソールにアクセスすることもできます。)

1. ナビゲーションペインで、[**Channels**] (チャネル) を選択します。(ナビゲーションペインが折りたたまれている場合は、まずハンバーガーアイコンを選択して開きます。)

1. チャネルを選択して、その詳細ページに移動します。

1. **[Stream sessions]** (ストリームセッション) セクションが表示されるまでページを下にスクロールします。

1. アクセスするセッションのストリーム ID を選択して、Amazon CloudWatch 高解像度メトリクスのチャートを含む、セッションの詳細を表示します。

または、1 つ以上のチャネルが既にライブ配信中の場合:

1. [Amazon IVS コンソール](https://console.aws.amazon.com/ivs)を開きます。

1. ナビゲーションペインで、[**Live channels**] (ライブチャネル) を選択します。(ナビゲーションペインが折りたたまれている場合は、まずハンバーガーアイコンを選択して開きます。)

1. 一覧からライブチャネルを選択すると、分割ビュー内のセッション詳細が表示されます。

### AWS SDK での手順
<a name="stream-health-session-data-aws-sdk"></a>

AWS SDK によるストリームセッションデータへのアクセスは詳細オプションであり、まず SDK をダウンロードしてアプリケーション上で設定する必要があります。以下は、JavaScript による AWS SDK の手順です。

**前提条件**: 以下のコードサンプルを使用するには、AWS JavaScript SDK をアプリケーションにロードする必要があります。詳細については、[Getting started with the AWS SDK for JavaScript](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/getting-started.html) を参照してください。

```
// This first call lists up to 50 stream sessions for a given channel.
const AWS = require("aws-sdk");
const REGION = 'us-west-2';
let channelArn = USE_YOUR_CHANNEL_ARN_HERE;

AWS.config.getCredentials(function(err) {
  if (err) console.log(err.stack);
  // credentials not loaded
  else {
    console.log("Access key:", AWS.config.credentials.accessKeyId);
  }
});

AWS.config.update({region: REGION});
var ivs = new AWS.IVS();

// List Stream Sessions
async function listSessions(arn) {
  const result = await ivs.listStreamSessions({"channelArn": arn}).promise();
  console.log(result.streamSessions);
}
listSessions(channelArn);

// Get Stream Session
async function getSession(arn, id) {
  const result = await ivs.getStreamSession({"channelArn": arn, "streamId": id}).promise();
  console.log(result);

  // This function polls every 3 seconds and prints the latest IVS stream events.
  setInterval(function(){
    console.log(result.streamSession.truncatedEvents);
  }, 3000);
}
getSession(channelArn);
```

### CLI の手順
<a name="stream-health-session-data-cli"></a>

AWS CLI によるストリームセッションデータへのアクセスは詳細オプションであり、まず CLI をダウンロードしてマシン上で設定する必要があります。詳細については、[AWS Command Line Interface のユーザーガイド](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)を参照してください。

1. 次のように、ストリームセッションを一覧表示します。

   ```
   aws ivs list-stream-sessions --channel-arn <arn>
   ```

1. 次のように、特定のストリームの `streamId` を使用して、そのストリームセッションデータを取得します。

   ```
   aws ivs get-stream-session --channel-arn <arn> --stream-id <streamId>
   ```

`get-stream-session` 呼び出しのサンプルレスポンスを次に示します。

```
{
    "streamSession": {
        "startTime": "2021-10-22T00:03:57+00:00",
        "streamId": "st-1FQzeLONMT9XTKI43leLSo1",
        "truncatedEvents": [
            {
                "eventTime": "2021-10-22T00:09:30+00:00",
                "name": "Session Ended",
                "type": "IVS Stream State Change"
        	},
            {
                "eventTime": "2021-10-22T00:09:30+00:00",
                "name": "Stream End",
                "type": "IVS Stream State Change"
        	},
        	{
                "eventTime": "2021-10-22T00:03:57+00:00",
                "name": "Stream Start",
                "type": "IVS Stream State Change"
        	},
        	{
                "eventTime": "2021-10-22T00:03:50+00:00",
                "name": "Session Created",
                "type": "IVS Stream State Change"
        	}
        ],
        "endTime": "2021-10-22T00:09:31+00:00",
        "ingestConfiguration": {
            "audio": {
                "channels": 2,
                "codec": "mp4a.40.2",
                "sampleRate": 48000,
                "targetBitrate": 160000
        	},
            "video": {
                "avcLevel": "4.0",
                "avcProfile": "Baseline",
                "codec": "avc1.42C028",
                "encoder": "obs-output module (libobs version 27.0.1)",
                "targetBitrate": 3500000,
                "targetFramerate": 30,
                "videoHeight": 1080,
                "videoWidth": 1920
            }
        },
        "channel": {
            "name": "",
            "ingestEndpoint": "3f234d592b38.global-contribute.live-video.net",
            "authorized": false,
            "latencyMode": "LOW",
            "recordingConfigurationArn": "",
            "type": "STANDARD",
            "playbackUrl": "https://3f234d592b38.us-west-2.playback.live-video.net/api/video/v1/us-west-2.991729659840.channel.dY7LsluQX1gV.m3u8",
            "arn": "arn:aws:ivs:us-west-2:991729659840:channel/dY7LsluQX1gV"
        }
    }
}
```

## ヘルスによるストリームのフィルタリング
<a name="stream-health-filter-streams"></a>

問題が発生しているストリームを簡単に見つけるために、`listStreams` を使用してライブストリームを「ヘルス」でフィルタリングできます。

### コンソールでの手順
<a name="stream-health-filter-streams-console"></a>

1. [Amazon IVS コンソール](https://console.aws.amazon.com/ivs)を開きます。

   ([AWS マネジメントコンソール](https://console.aws.amazon.com/)から Amazon IVS コンソールにアクセスすることもできます。)

1. ナビゲーションペインで、[**Live channels**] (ライブチャネル) を選択します。(ナビゲーションペインが折りたたまれている場合は、まずハンバーガーアイコンを選択して開きます。)

1. **[Filter by health]** (ヘルスによるフィルタリング) の検索フィールドを選択します。

1. ドロップダウンリストから **[Health = STARVING]** (ヘルス = スタベーション) を選択します。

フィルタリング後、チャネルの詳細ページに移動し、チャネルのライブストリームセッションを選択して、入力設定の詳細とストリームイベントにアクセスできます。

### CLI の手順
<a name="stream-health-filter-streams-cli"></a>

AWS CLI の使用は詳細オプションであり、まず CLI をダウンロードしてマシン上で設定する必要があります。詳細については、「[AWS Command Line Interface のユーザーガイド](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)」を参照してください。

次のように、ヘルス (`STARVING` など) によってストリームをフィルタリングします。

```
aws ivs list-streams --filter-by health=STARVING
```

### ConcurrentStreams の CloudWatch ヘルスディメンション
<a name="stream-health-filter-streams-cloudwatch"></a>

`ConcurrentStreams` を特定の `Health` によってフィルタリングできます。「[CloudWatch メトリクス: IVS 低レイテンシーストリーミング](#stream-health-cloudwatch-metrics-low-latency-streaming)」を参照してください。

## CloudWatch メトリクスへのアクセス
<a name="stream-health-cloudwatch-metrics"></a>

Amazon CloudWatch は Amazon IVS から raw データを収集し、ほぼリアルタイムの読み取り可能なメトリクスに加工します。これらの統計は 15 か月間保持されるため、ウェブアプリケーションやサービスの動作に関する履歴情報を取得できます。特定のしきい値にアラームを設定し、これらのしきい値に達したときに通知を送信したりアクションを実行したりできます。詳細については、[CloudWatch ユーザーガイド](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)を参照してください。

CloudWatch メトリクスは時間の経過とともにロールアップされることに注意してください。メトリクスの経過とともに解像度は実質的に低下します。スケジュールは次のとおりです。
+ 1 秒のメトリクスは 3 時間使用できます。
+ 60 秒のメトリクスは 15 日間使用できます。
+ 5 分間のメトリクスは 63 日間使用できます。
+ 1 時間のメトリクスは、455 日 (15 か月) 間使用できます。

`getMetricData` を呼び出すときに、高解像度メトリクスに、1、5 (推奨)、10、30、または 60 秒の任意の倍数の期間を指定できます。

### CloudWatch コンソールでの手順
<a name="stream-health-cloudwatch-metrics-console"></a>

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. サイドナビゲーションで、**[メトリクス]** ドロップダウンをクリックし、**[すべてのメトリクス]** を選択します。

1. **[参照]** タブで、左側のラベルなしのドロップダウンを使用して、チャネルが作成された「ホーム」リージョンを選択します。リージョンの詳細については、「[グローバルソリューション、リージョナルコントロール](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/what-is.html#what-is-aws)」を参照してください。対応するリージョンの一覧については、「[AWS 全般のリファレンス](https://docs.aws.amazon.com/general/latest/gr/ivs.html)」の*Amazon IVS のページ*を参照してください。

1. **[参照]** タブの下部で **[IVS]** 名前空間を選択します。

1. 次のいずれかを行います。

   1. 検索バーに、リソース ID (ARN の一部、`arn:::ivs:channel/<resource id>`) を入力します。

      **[IVS] > [チャネル別]** の順に選択します。

   1. **AWS の名前空間**に **IVS** が選択可能なサービスとして表示される場合、IVS を選択します。Amazon IVS を使用して、Amazon CloudWatch にメトリクスを送信している場合にリスト表示されます。(**IVS**がリスト表示されていない場合、Amazon IVS メトリクスはありません)。

      次に、必要に応じて*ディメンション*グループを選択します。使用可能なディメンションは、以下の「[CloudWatch メトリクス](#stream-health-cloudwatch-metrics-low-latency-streaming)」にリストされています。

1. グラフに追加するメトリクスを選択します。利用可能なメトリックスは、以下の「[CloudWatch メトリクス](#stream-health-cloudwatch-metrics-low-latency-streaming)」にリストされています。

ストリームセッションの詳細ページで **[CloudWatch で表示]** ボタンを選択して、ストリームセッションの CloudWatch グラフにアクセスすることもできます。

### CLI の手順
<a name="stream-health-cloudwatch-metrics-cli"></a>

AWS CLI を使用してメトリクスにアクセスすることもできます。そのためには、まず CLI をマシンにダウンロードして設定する必要があります。詳細については、[AWS コマンドラインインターフェイスのユーザーガイド](https://docs.aws.amazon.com//cli/latest/userguide/cli-chap-welcome.html)を参照してください。

次に、AWS CLI を使用して Amazon IVS Low-Latency Streaming メトリクスにアクセスするために、次の操作を実行します。
+ コマンドプロンプトで、次のコマンドを実行します。

  ```
  aws cloudwatch list-metrics --namespace AWS/IVS
  ```

詳細については、*Amazon CloudWatch ユーザーガイド*の「[Amazon CloudWatch メトリクスの使用](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)」を参照してください。

## CloudWatch メトリクス: IVS 低レイテンシーストリーミング
<a name="stream-health-cloudwatch-metrics-low-latency-streaming"></a>

Amazon IVS は、**AWS/IVS** の名前空間で以下のメトリクスを提供します。


| メトリクス | ディメンション | 説明 | 
| --- | --- | --- | 
| `ConcurrentViews` | — | すべてのライブチャネルでの同時視聴回数。*ビュー*とは、メディアファイルをアクティブにダウンロードまたは再生している固有の視聴セッションです。(より詳細な定義については、[IVS の用語集](ivs-glossary.md)を参照してください。) チャネルがライブで集計に視聴がない場合、メトリクスの値は 0 です。ライブのチャネルがない場合、メトリクスにはデータポイントがありません。<br />単位: 数<br />有効な統計: 平均、最大、最小 — 設定された間隔における同時視聴の (それぞれの) 平均数、最大数、最小数 | 
| `ConcurrentViews` | `Channel` | チャネル ARN ごとに `ConcurrentViews` をフィルターします。チャネルがライブで視聴がない場合、メトリクスの値は 0 です。チャネルがライブでない場合、メトリクスにはデータポイントがありません。<br />このメトリクスは、ストリームではなくチャネルのデータを提供します。特定のチャネル上の特定のストリーミングセッションの同時視聴を表示するには、ストリームセッションの開始時刻と終了時刻間のチャネルの`ConcurrentViews`メトリクスを評価します。<br />単位: 数<br />有効な統計: 平均、最大、最小 — 設定された間隔における同時視聴の (それぞれの) 平均数、最大数、最小数 | 
| `ConcurrentStreams` | — | ライブでストリーミングしているチャネルの数。ライブのチャネルがない場合、このメトリクスにはデータポイントがありません。<br />単位: 数<br />有効な統計: 平均、最大、最小 — 設定された間隔における同時視聴の (それぞれの) 平均数、最大数、または最小数。 | 
| `ConcurrentStreams` | `Health` | チャネルのヘルスごとに `ConcurrentStreams` をフィルターします。ライブのチャネルがない場合、このメトリクスにはデータポイントがありません。<br />単位: 数<br />有効な統計: 平均、最大、最小 — 設定された間隔における、特定の `Health` の同時ストリームの平均数、最大数、または最小数 (それぞれ)。 | 
| `IngestAudioBitrate` | `Channel` | **(高解像度メトリクス)** ストリーミング時に Amazon IVS が受け取るオーディオデータの量。ビットレートが高いほど、利用可能なインターネット帯域幅を使用します。<br />単位: ビット/秒 <br />有効な統計: 平均、最大、最小 — 設定された間隔でのオーディオ取り込みビットレートの (それぞれの) 平均数、最大数、または最小数。 | 
| `IngestAudioBitrate` | `Channel, Track` | **(高解像度メトリクス)** ストリーミング時に Amazon IVS が受け取るオーディオデータの量。ビットレートが高いほど、利用可能なインターネット帯域幅を使用します。<br />単位: ビット/秒 <br />有効な統計: 平均、最大、最小 — 設定された間隔でのオーディオ取り込みビットレートの (それぞれの) 平均数、最大数、または最小数。 | 
| `IngestBitrate` | — | **(高解像度メトリクス)** ストリーミング時に Amazon IVS が受信する動画、オーディオ、メタデータ (すべてのトラックの合計) の量。ビットレートが高いほど、利用可能なインターネット帯域幅を使用します。<br />単位: ビット/秒 <br /> 平均、最大、最小 — 設定された間隔での取り込みビットレートの (それぞれの) 平均数、最大数、または最小数。 | 
| `IngestBitrate` | `Channel` | **(高解像度メトリクス)** ストリーミング時に Amazon IVS が受信する動画、オーディオ、メタデータ (すべてのトラックの合計) の量。ビットレートが高いほど、利用可能なインターネット帯域幅を使用します。<br />単位: ビット/秒 <br />有効な統計: 平均、最大、最小 — 設定された間隔での取り込みビットレートの (それぞれの) 平均数、最大数、または最小数。 | 
| `IngestFramerate` | — | **(高解像度メトリクス)** ストリーミング時に Amazon IVS が動画フレームを受信する頻度。<br />単位: カウント/秒<br />有効な統計: 平均、最大、最小 — 設定された間隔での取り込みフレームレートの (それぞれの) 平均数、最大数、または最小数。 | 
| `IngestFramerate` | `Channel` | **(高解像度メトリクス)** ストリーミング時に Amazon IVS が動画フレームを受信する頻度。<br />単位: カウント/秒<br />有効な統計: 平均、最大、最小 — 設定された間隔での取り込みフレームレートの (それぞれの) 平均数、最大数、または最小数。 | 
| `IngestFramerate` | `Channel, Track` | **(高解像度メトリクス)** ストリーミング時に Amazon IVS が動画フレームを受信する頻度。<br />単位: カウント/秒<br />有効な統計: 平均、最大、最小 — 設定された間隔での取り込みフレームレートの (それぞれの) 平均数、最大数、または最小数。 | 
| `IngestVideoBitrate` | `Channel` | **(高解像度メトリクス)** ストリーミング時に Amazon IVS が受け取る動画データの量。ビットレートが高いほど、利用可能なインターネット帯域幅を使用します。ビットレートを上げると動画の品質が向上しますが、特定のポイントまでしか向上しません。<br />単位: ビット/秒<br />有効な統計: 平均、最大、最小 — 設定された間隔での動画取り込みビットレートの (それぞれの) 平均数、最大数、または最小数。 | 
| `IngestVideoBitrate` | `Channel, Track` | **(高解像度メトリクス)** ストリーミング時に Amazon IVS が受け取る動画データの量。ビットレートが高いほど、利用可能なインターネット帯域幅を使用します。ビットレートを上げると動画の品質が向上しますが、特定のポイントまでしか向上しません。<br />単位: ビット/秒<br />有効な統計: 平均、最大、最小 — 設定された間隔での動画取り込みビットレートの (それぞれの) 平均数、最大数、または最小数。 | 
| `KeyframeInterval` | `Channel` | **(高解像度メトリクス)** 前のフレームとの違いだけでなく、フレーム全体が送信される動画ストリーム内のポイント。<br />単位: 秒<br />有効な統計: 平均、最大、最小 — 設定された間隔でのキーフレーム間隔の (それぞれの) 平均数、最大数、または最小数。 | 
| `KeyframeInterval` | `Channel, Track` | **(高解像度メトリクス)** 前のフレームとの違いだけでなく、フレーム全体が送信される動画ストリーム内のポイント。<br />単位: 秒<br />有効な統計: 平均、最大、最小 — 設定された間隔でのキーフレーム間隔の (それぞれの) 平均数、最大数、または最小数。 | 
| `LiveDeliveredTime` | — | すべての視聴者に配信された動画のリアルタイム時間の合計。<br />単位: 秒<br />有効な統計: Sum | 
| `LiveDeliveredTime` | `Channel` | チャネルごとに `LiveDeliveredTime` をフィルターします。チャネル値はチャネルの `resource-id` であり、これは [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) の最後の部分です。<br />単位: 秒<br />有効な統計: Sum | 
| `LiveDeliveredTime` | `Channel`, `ViewerCountryCode` | チャネルおよび視聴者の国コードごとに `LiveDeliveredTime` をフィルターします。チャネル値はチャネルの `resource-id` であり、これは [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) の最後の部分です。国の値は 2 文字の ISO 3166-1 国コードです。これにより、視聴者の国を特定できます。視聴者の国を特定できない場合は、`UNKNOWN`として表示されます。<br />単位: 秒<br />有効な統計: Sum | 
| `LiveInputTime` | — | 動画ストリームのリアルタイム時間。<br />単位: 秒<br />有効な統計: Sum | 
| `LiveInputTime` | `Channel` | チャネルごとに `LiveInputTime` をフィルターします。チャネル値はチャネルの `resource-id` であり、これは [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) の最後の部分です。<br />単位: 秒<br />有効な統計: Sum | 
| `RecordedTime` | — | 録画された動画のリアルタイム時間。<br />単位: 秒<br />有効な統計: Sum | 
| `RecordedTime` | `Channel` | チャネルごとに `RecordedTime` をフィルターします。チャネル値はチャネルの `resource-id` であり、これは [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) の最後の部分です。<br />単位: 秒<br />有効な統計: Sum | 