定制 System X-Ray 指标


定制 System X-Ray 指标

您可以通过发送要显示的信息来定制 System X-Ray 上显示的指标。您可以使用此功能来显示您认为有用的任何内容,例如静态信息、指标何时跨越不同阈值边界或事件何时发生。

创建自定义指标

System X-Ray 在收到应用广播的意图时显示“应用”部分,其中包含您定义的指标。下面的代码显示了如何为 System X-Ray 创建意图:

private void updateMetrics(Context context) {

// 初始化意图
Intent intent = new Intent("com.amazon.ssm.METRICS_UPDATE");
intent.putExtra("com.amazon.ssm.PACKAGENAME", context.getPackageName());

// 添加指标
intent.putExtra("Metrics1", "First metric");
intent.putExtra("Color1", "green");

intent.putExtra("Metrics2", "Second metric");
intent.putExtra("Color2", "yellow");

intent.putExtra("Metrics3", "Third metric");
intent.putExtra("Color3", "red");

// 发送
context.sendBroadcast(intent);
}

此示例使用 Context 类获取环境所需的资源和类。

使用操作 com.amazon.ssm.METRICS_UPDATE 初始化意图,并添加应用的程序包名称作为额外信息。程序包名称是必需的,因为 System X-Ray 只会在您的应用处于前台时显示“应用”部分。如果您将此代码放在活动中,则可以调用 getPackageName() 帮助程序方法。

指标名称必须是 Metrics1Metrics2Metrics3。任何其他名称都将被忽略。您可以将指标的值设置为所需的任何字符串,但请记住,它可能会被截断。System X-Ray 采用以下格式显示每个指标:[名称]:[值]

指标的默认颜色为灰色。如果您选择更改颜色,则需要向意图添加额外项。额外项名称必须是 Color1Color2Color3。值可以是 redyellowgreenblue。指标名称和颜色名称必须具有相同的编号才能应用颜色。例如,Metrics1 将获得 Color1。颜色值彼此独立 — 您可以拥有多个具有相同颜色的指标。

现在意图已经设置,您可以调用 sendBroadcast(Intent) 方法。如果启用了 System X-Ray,它将添加一个名为应用的部分,并显示意图中定义的指标。如果要更改指标的值或颜色,则必须使用新值或颜色重新创建意图,然后再次发送它。

如果您正在 System X-Ray 中跟踪多个指标,则必须重新发送所有这些指标的状态,即使它们没有全部改变,因为 System X-Ray 不会缓存指标的状态。否则,您不发送的指标将从 System X-Ray 中删除。

自定义指标示例

让我们演示几个此功能用法的示例。

静态信息

如果您在多台 Amazon Fire TV 设备上测试您的应用或使用不同的 WiFi 网络,您可能需要查看您正在测试的 Fire TV 型号,或者 Fire TV 使用的 WiFi 网络 SSID。当您的应用启动时,您可以获取此信息并将其发送到 System X-Ray。以下代码显示了如何显示静态信息的示例:

private void updateMetrics(Context context, String buildModel, String ssid) {
    // 初始化意图
    Intent intent = new Intent("com.amazon.ssm.METRICS_UPDATE");
    intent.putExtra("com.amazon.ssm.PACKAGENAME", context.getPackageName());

    // 添加指标
    intent.putExtra("Metrics1", buildModel);
    intent.putExtra("Metrics2", ssid);

    // 发送
    context.sendBroadcast(intent);
}

下图是来自上述输入的示例显示。在此图片中,System X-Ray 显示 Amazon Fire TV 设备型号为 AFTS,这是第二代 Amazon Fire TV 电视盒。它还显示 Fire TV 连接到来宾网络。

阈值

您可能需要跟踪可跨越不同阈值的指标。例如,假设您的应用具有视频内容,并且您希望在视频播放过程中跟踪丢弃的帧。您可以将 5 次以下丢帧视为绿色,将 5-9 次丢帧视为黄色,将 10 次及以上丢帧视为红色。

当您更新丢弃的帧数时,您可以更改颜色以匹配阈值。以下代码示例演示了如何显示阈值:

private void updateMetrics(Context context, int numFrameDrops, String frameDropStatus) {
    // 初始化意图
    Intent intent = new Intent("com.amazon.ssm.METRICS_UPDATE");
    intent.putExtra("com.amazon.ssm.PACKAGENAME", context.getPackageName());

    // 添加指标
    intent.putExtra("Metrics1", "FrameDrops:"+numFrameDrops);
    intent.putExtra("Color1", frameDropStatus);

    // 发送
    context.sendBroadcast(intent);
}

以下是不同阈值的截图:

事件

事件日志记录很有用,但您可能需要一种可视化的方式来跟踪事件上次发生的时间。例如,测试可能显示在 3 小时的视频播放后引发间歇性异常。以下是如何配置事件的示例:

private void updateMetrics(Context context, String message, String time) {
    // 初始化意图
    Intent intent = new Intent("com.amazon.ssm.METRICS_UPDATE");
    intent.putExtra("com.amazon.ssm.PACKAGENAME", context.getPackageName());

    // 添加指标
    intent.putExtra("Metrics1", message);
    intent.putExtra("Color1", "Red");

    intent.putExtra("Metrics2", "Time:"+time);
    intent.putExtra("Color2", "Red");

    // 发送
    context.sendBroadcast(intent);
}

在下面的屏幕截图中,System X-Ray 显示异常以及异常发生的时间。

另请参阅

有关更多详细信息,请参阅以下内容: