检索 SLO 数据

虽然 SLO 数据按时间序列存储,但您无法通过将指标类型和受监控的资源指定给控制台组件(如 Metrics Explorer 或 Cloud Monitoring API 中的 timeSeries.list 方法),来检索这些时间序列。

您可以通过给timeSeries.list方法指定 filter 参数中的时间序列选择器,检索 SLO 时间序列。

在过滤器中使用时间序列选择器

通常,检索时间序列数据的方法是,指定由一组指标和可标识一组时间序列的受监控资源类型组成的过滤器。SLO 数据不会与标准指标类型一起存储,并且无法使用此类过滤器检索。若要检索 SLO 的时间序列数据,您的过滤器必须指定时间序列选择器。

名称和参数

时间序列选择器具有以下某种形式:

    SELECTOR_NAME(SLO_NAME)
    SELECTOR_NAME(SLO_NAME, LOOKBACK_PERIOD)
    

选择器的名称以 select_slo_ 开头,并采用一个或两个参数:

  • 选择器的第一个参数是 SLO 的资源名称,如下所示:

        projects/[PROJECT_ID]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_ID]
        

  • 第二个参数(如果支持)是回溯期。如需了解回溯期的信息,请参阅错误预算提醒类型。有效时间单位为“ns”、“us”、“ms”、“s”、“m”和“h”。

例如,select_slo_budget 选择器只接受 SLO-name 参数,因此使用此选择器的过滤器如下所示:

    select_slo_budget("projects/[PROJECT_ID]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_ID]")
    

相比之下,select_slo_burn_rate 选择器也具有回顾期,因此使用此选择器的过滤器如下所示:

    select_slo_burn_rate("projects/[PROJECT_ID]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_ID]", "3600s")
    

如需查看所有选择器的列表和说明,请参阅时间序列选择器

使用选择器检索数据

查询时间序列数据的一种直接方法是在 timeSeries.list 方法的参考页面上使用 API Explorer 工具。如需了解 API Explorer 工具的信息,请参阅 API Explorer

以下屏幕截图显示了在 API Explorer 中将 select_slo_budget 时间序列选择器用作 timeSeries.list 的过滤器:

给 timeSeries.list 方法指定时间序列选择器。

下面显示了返回的时间序列数据的片段:

检索到的时间序列的摘录

时间序列选择器

本部分列出了 SLO 可用的时间序列选择器,并介绍了它们所代表的含义。所有选择器都可以用于 timeSeries.list 的过滤器中检索时间序列数据。提醒政策仅支持部分指标。

select_slo_burn_rate

语法select_slo_burn_rate(SLO_NAME, LOOKBACK_PERIOD)

“消耗率”时间序列选择器会返回当前故障率(回溯间隔中的错误请求率)与 SLO 的持续故障率之比。持续故障率是完全满足 SLO 的比率:值 1 表示服务具有理想的故障率:不存在风险,也不会过于保守。

此时间序列中的值的范围是 0 到无穷大。大于 1 的值表示故障率超过了持续故障率。值越高,SLO 越不合规。

使用两种提醒策略来监控消耗率:一种是快速消耗策略提醒您消耗率出现峰值,另一种是慢速消耗策略提醒您消耗率逐渐增加。如需了解详情,请参阅创建提醒政策

select_slo_health

语法select_slo_health(SLO_NAME)

“SLO 运行状况”时间序列回答了这样一个问题:“在给定的输出期内,正常请求与总请求之比是多少?”哪些请求被视为正常请求由该服务的 SLI 定义。

此时间序列衡量的是服务性能:如果服务的每个请求均正常,则此时间序列中的数据点的值为 1。随着错误请求的数量增加,数据点的值会下降。

您可以使用 API 创建使用此时间序列选择器的提醒政策,并且只能通过 API 修改这些政策。

select_slo_compliance

语法select_slo_compliance(SLO_NAME)

“SLO 合规性”时间序列回答了这样一个问题:“衡量自合规期(以日历时间或滚动期衡量)开始以来服务的行为,此时正常单位与总单位之比是多少?”单位可以是请求或时间范围。如需了解详情,请参阅基于请求和基于时间范围的 SLO 中的合规性

通过此时间序列,您可以大致了解该服务与 SLO 的关系。它不会产生操作上的紧急信号。

请勿在提醒政策中使用此时间序列选择器。

select_slo_budget

语法select_slo_budget(SLO_NAME)

“SLO 预算”时间序列回答了这样一个问题:“衡量时错误预算的剩余比率是多少?”错误预算可以以请求或分钟为单位进行衡量,剩余数量根据合规期是按照日历时间还是滚动期来衡量。如需了解详情,请参阅错误预算

此时间序列用于衡量服务可靠性的风险。如果错误预算低于 0,即使该服务在工作中执行得很完美,也可能无法满足当前时间段的 SLO。未能达到 SLO 可能会给组织的生产环境带来实质后果,具体取决于组织如何管理可靠性。

请勿在提醒政策中使用此时间序列选择器。

select_slo_budget_fraction

语法select_slo_budget_fraction(SLO_NAME)

“SLO 预算分数”时间序列回答了这样一个问题:“此时剩余多少错误预算(从0到1的分数)?”

请勿在提醒政策中使用此时间序列选择器。

select_slo_budget_total

语法select_slo_budget_total(SLO_NAME)

“SLO 总预算”时间序列回答了这样一个问题:“根据自合规期(日历时间或滚动期)开始以来服务的行为,预计此时可用的总错误预算(以请求或分钟为单位)是多少?”

请勿在提醒政策中使用此时间序列选择器。

select_slo_counts

语法select_slo_counts(SLO_NAME)

“SLO 计数”时间序列回答了这样一个问题:“在给定的输出期内,有多少请求是正常的,多少是错误的?”此选择器提供记录一般健康状况的时间序列,适合提取到长期存储系统中。

请勿在提醒政策中使用此时间序列选择器。