监控 Amazon IVS 低延迟直播功能 - Amazon Interactive Video Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

监控 Amazon IVS 低延迟直播功能

您可以使用 Amazon CloudWatch 监控 Amazon Interactive Video Service (IVS) 资源。CloudWatch 可从 Amazon IVS 收集和处理原始数据,并将数据处理为便于读取的近乎实时的指标。这些统计数据会保存 15 个月,从而使您能够从历史角度了解您的 Web 应用程序或服务的执行情况。您可以设置用于特定阈值的警报,并在达到相应阈值时发送通知或执行操作。有关详细信息,请参阅 CloudWatch 用户指南

指标上的时间戳表示累积指标数据的时间段开始时间。例如,假设您在 01:02:00 时得到的每分钟 LiveDeliveredTime 指标总和为 300 秒。这意味着在 01:02:00 至 01:02:59 的 1 分钟期间,查看者可以观看 5 分钟的视频。

对于指定为高分辨率的指标,第一个数据点会在流开始数秒后显示。我们建议您在发出指标请求时指定 5 秒的时间段。(请参阅 Amazon CloudWatch 用户指南中的分辨率。) 对于其他指标,数据在其引用的时间戳的 1 分钟内发出。

随着时间的推移,高分辨率指标会汇总。随着指标的老化,分辨率实际有所降低。以下是计划:

  • 1 秒的指标可用期为 3 小时。

  • 60 秒的指标可用期为 15 天。

  • 5 分钟的指标可用期为 63 天。

  • 1 小时的指标可用 455 天(15 个月)。

有关数据保留的最新信息,请在 Amazon CloudWatch 常见问题中搜索“保留期”。

先决条件

访问流会话数据

使用 listStreamSessions 端点,您可以访问通道拥有的流列表,事件最长 60 天。此列表可能包括实时流会话(由空 endTime 表示)。

您可以通过 getStreamSession 端点获取特定流的会话数据。如果未指定 streamId 参数,端点返回最新的会话。此外,您可以定期调用终端节点以获取流的最新事件(最多最新的 500 个事件)。

控制台说明

  1. 打开 Amazon IVS 控制台

    (您还可通过亚马逊云科技管理控制台访问 Amazon IVS 控制台。)

  2. 在导航窗格中,选择 Channels(通道)。(如果导航窗格已折叠,请首先选择汉堡包图标以将其打开。)

  3. 选择一个通道以转至其详细信息页面。

  4. 向下滚动页面,直至看到 Stream sessions(流会话)部分。

  5. 选择要访问的会话的流 ID,以查看其会话详细信息,包括 Amazon CloudWatch 高精度指标的图表。

或者,如果一个或多个通道已经运行:

  1. 打开 Amazon IVS 控制台

  2. 在导航窗格中选择 Live channels(直播通道)。(如果导航窗格已折叠,请首先选择汉堡包图标以将其打开。)

  3. 从列表中选择一个直播通道,在拆分视图中访问其会话详细信息。

AWS SDK 说明

使用 Amazon SDK 访问流会话数据是一种高级选项,需要您先下载开发工具包并在应用程序上配置。以下是使用 JavaScript 的 Amazon SDK 的说明。

先决条件:要使用以下代码示例,您需要将 Amazon JavaScript SDK 加载到应用程序中。有关详细信息,请参阅 Amazon SDK for JavaScript 入门

// 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 说明

使用 Amazon CLI 访问流会话数据是一种高级选项,需要您先下载 CLI 并在应用程序上配置。有关详细信息,请参阅 Amazon 命令行界面用户指南

  1. 列出流会话:

    aws ivs list-stream-sessions --channel-arn <arn>
  2. 使用流的 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" } } }

按运行状况筛选流

为了轻松找到哪些流遇到问题,你可以使用 listStreams 来按“运行状况”筛选流。

控制台说明

  1. 打开 Amazon IVS 控制台

    (您还可通过亚马逊云科技管理控制台访问 Amazon IVS 控制台。)

  2. 在导航窗格中选择 Live channels(直播通道)。(如果导航窗格已折叠,请首先选择汉堡包图标以将其打开。)

  3. 选择 Filter by health(按运行状况筛选)的搜索字段。

  4. 在下拉列表中,选择筛选条件为 Health = STARVING(运行状况 = 匮乏)。

筛选后,您可以转到通道的详细信息页面并选择该通道的实时流会话,以访问输入配置详细信息和流事件。

CLI 说明

使用 Amazon CLI 是一个高级选项,需要先在计算机上下载并配置 CLI。有关详细信息,请参阅 Amazon 命令行界面用户指南

按运行状况(例如 STARVING)筛选流:

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

ConcurrentStreams 的 CloudWatch 运行状况维度

您可以按特定 Health 筛选 ConcurrentStreams。请参阅 CloudWatch 指标:IVS 低延迟直播功能

访问 CloudWatch 指标

Amazon CloudWatch 可从 Amazon IVS 收集和处理原始数据,并将数据处理为便于读取的近乎实时的指标。这些统计数据会保存 15 个月,从而使您能够从历史角度了解您的 Web 应用程序或服务的执行情况。您可以设置用于特定阈值的警报,并在达到相应阈值时发送通知或执行操作。有关详细信息,请参阅 CloudWatch 用户指南

请注意,随着时间的推移,CloudWatch 指标会不断累积。随着指标的老化,分辨率实际有所降低。以下是计划:

  • 1 秒的指标可用期为 3 小时。

  • 60 秒的指标可用期为 15 天。

  • 5 分钟的指标可用期为 63 天。

  • 1 小时的指标可用 455 天(15 个月)。

当您调用 getMetricData 时,对于高分辨率指标,您可以将周期指定 1 秒、5 秒(推荐)、10 秒、30 秒或 60 秒的任意倍数。

CloudWatch 控制台说明

  1. 访问 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。

  2. 在侧导航栏中,展开 Metrics(指标)下拉菜单,然后选择 All metrics(所有指标)。

  3. 浏览选项卡上,使用左侧未标记的下拉菜单,选择您的“主”区域,即创建通道的区域。有关区域的详细信息,请参阅全球解决方案,区域控制。有关支持区域的列表,请参阅亚马逊云科技一般参考中的 Amazon IVS 页面。

  4. 浏览选项卡的底部,选择 IVS 命名空间。

  5. 执行下列操作之一:

    1. 在搜索栏中,输入资源 ID(是 ARN arn:::ivs:channel/<resource id> 的一部分)。

      然后选择 IVS > 按通道

    2. 如果 IVS 显示为 Amazon 命名空间下的一个可选服务,选择该服务。如果您使用 Amazon IVS 并将指标发送给 Amazon CloudWatch,则将会列出 IVS。(如果 IVS 未列出,则您没有任何 Amazon IVS 指标。)

      然后根据需要选择维度分组;可用维度将在下面的 CloudWatch 指标 中列出。

  6. 选择要添加到图表的指标。可用维度将在下面的 CloudWatch 指标 中列出。

您还可以从流会话的详细信息页面访问流会话的 CloudWatch 图表,方法是选择 View in CloudWatch(在 CloudWatch 中查看)按钮。

CLI 说明

您也可以使用 Amazon CLI 访问指标。这需要首先在计算机上下载并配置 CLI。有关详细信息,请参阅 Amazon 命令行界面用户指南

然后,使用 Amazon CLI 访问 Amazon IVS 低延迟直播功能指标:

  • 在命令提示符下,运行:

    aws cloudwatch list-metrics --namespace AWS/IVS

有关更多信息,请参阅 Amazon CloudWatch 用户指南中的使用 Amazon CloudWatch 指标

CloudWatch 指标:IVS 低延迟直播功能。

Amazon IVS 在 Amazon/IVS 命名空间中提供了以下指标。

指标 维度 描述

ConcurrentViews

所有实时通道的并发视图计数。视图是一个独特的观看会话,它主动下载或播放视频。(有关更详细的定义,请参阅 术语表。) 如果通道处于活动状态,但总体上没有视图,则此指标的值为 0。如果没有实时通道,则此指标没有数据点。

单位:计数

有效统计数据:平均值、最大值、最小值 – 在配置的时间间隔内并发视图的平均数、最大数或最小数(各自)。

ConcurrentViews

Channel

按通道 ARN 筛选 ConcurrentViews。如果有实时通道,但没有视图,则此指标的值为 0。如果通道未处于实时状态,则该指标没有数据点。

此指标提供通道数据,而不是流数据。要查看给定通道上特定流传输会话的并发视图,请评估该通道在流传输会话开始和结束时间之间的 ConcurrentViews 指标。

单位:计数

有效统计数据:平均值、最大值、最小值 – 在配置的时间间隔内并发视图的平均数、最大数或最小数(各自)。

ConcurrentStreams

正在进行流直播的通道计数。如果没有实时通道,则该指标没有数据点。

单位:计数

有效统计数据:平均值、最大值、最小值 – 在配置的时间间隔内并发流的平均数、最大数或最小数(各自)。

ConcurrentStreams

Health

按通道运行状况筛选 ConcurrentStreams。如果没有实时通道,则该指标没有数据点。

单位:计数

有效统计数据:平均值、最大值、最小值,即在配置的时间间隔内特定 Health 的并发流的平均数、最大数或最小数(各自)。

IngestAudioBitrate

Channel

(高分辨率指标)Amazon IVS 在您流式传输时收到的音频数据量。更高的比特率会占用更多的可用互联网带宽。

单位:每秒比特数

有效统计数据:平均值、最大值、最小值 – 在配置的时间间隔内接收音频比特率的平均数、最大数或最小数(各自)。

IngestFramerate

Channel

(高分辨率指标)流式传输时,Amazon IVS 收到动画帧的频率。

单位:每秒帧数

有效统计数据:平均值、最大值、最小值 – 在配置的时间间隔内接收帧率的平均数、最大数或最小数(各自)。

IngestVideoBitrate

Channel

(高分辨率指标)Amazon IVS 在您流式传输时收到的视频数据量。更高的比特率会占用更多的可用互联网带宽。更高的比特率可以提高视频质量,但只能达到一定程度。

单位:每秒比特数

有效统计数据:平均值、最大值、最小值 – 在配置的时间间隔内接收视频比特率的平均数、最大数或最小数(各自)。

KeyframeInterval

Channel

(高分辨率指标)视频流中发送整个帧的点,而不仅仅是与上一帧的差异。

单位:秒

有效统计数据:平均值、最大值、最小值 – 在配置的时间间隔内关键帧的平均数、最大数或最小数(各自)。

LiveDeliveredTime

提供给所有查看者的视频的总实时持续时间。

单位:秒

有效统计数据:总计

LiveDeliveredTime

Channel

按通道筛选 LiveDeliveredTime。通道值是通道的 resource-id,是 ARN 的最后一部分。

单位:秒

有效统计数据:总计

LiveDeliveredTime

Channel, ViewerCountryCode

按通道和查看者的国家代码筛选 LiveDeliveredTime。通道值是通道的 resource-id,即 ARN 的最后一部分。国家/地区值是两个字符的 ISO 3166-1 国家/地区代码。这可以让您回答此问题:我的查看者从哪里观看? 如果无法确定查看者的国家/地区,则显示为 UNKNOWN

单位:秒

有效统计数据:总计

LiveInputTime

视频流的实时持续时间。

单位:秒

有效统计数据:总计

LiveInputTime

Channel

按通道筛选 LiveInputTime。通道值是通道的 resource-id,是 ARN 的最后一部分。

单位:秒

有效统计数据:总计

RecordedTime

已录制视频的实时持续时间。

单位:秒

有效统计数据:总计

RecordedTime

Channel

按通道筛选 RecordedTime。通道值是通道的 resource-id,是 ARN 的最后一部分。

单位:秒

有效统计数据:总计