服务级别目标小部件(传统)

Instana 允许用户为其服务级别目标(SLO)创建自定义仪表板小部件,以便显示和分析服务随时间推移的性能表现。 该 widget 可显示 基于时间 基于事件的 SLI 配置。

注意: 旧版 SLO 小部件属于独立功能,无法与新版 SLO 集成。

SLO 小工具(遗留)

下图展示了一个名为 “ Robot Shop SLO”的 SLO 小部件示例, 小部件采用基于时间的 SLI 配置,并设置了 95% 的 SLO 目标值。 该示例中的 SLI 基于延迟指标的第 90 百分位数和 2 秒的阈值。 误差预算是 1 减去乘以时间窗口的 SLO 目标值。 对于小工具上显示的 7 天时间窗口,它被转换为 504 分钟的误差预算:

504 minutes = (1 - 95%) * 10080 minutes

该示例 SLO 未在选定的时间框架内完成,因为花费的错误预算为 565 分钟,超出了该限值。

SLO 小工具(遗留)

添加 SLO 小工具(旧版)

您可以为任何应用程序视角或网站设置 SLO 小工具。 要添加 SLO 遗留小组件,请转到其中一个自定义仪表板,打开 添加小组件的对话框。 接下来,请按照以下步骤操作:

  1. 在对话框侧边栏中,单击 SLO 传统 > 下一步。 对话框将打开配置部分以设置 SLO 小工具。
  2. 请选择要监控应用程序视图还是网站
    • 应用程序视角的 SLO 不包括您无法控制的因素,如用户网络连接不畅,因此可能无法准确反映用户体验。
    • 网站的 SLO 能最准确地反映用户体验,不排除用户网络连接不畅等无法控制的因素。
  3. 从列表中选择 SLO 对应的应用程序视图网站
  4. 从列表中选择特定 SLO 类型的服务级别指标。 如果先前选择的 SLO 类型没有 SLI,则按照 SLI 配置中的说明创建 SLI。
  5. 输入所需的 SLO 目标值,例如 99.9%
  6. 选择 时间窗口类型,它定义了 widget 的上下文和显示时间范围:
    • 动态时间窗口:在全局时间选择器中选择的时间窗口计算 SLO。
    • 滚动时间窗口:具有固定窗口大小的时间窗口,其结束时间由全局时间选择器的结束日期和时间选择确定。 例如,通过滚动时间窗口,可以始终看到上周的时间,而无需调整全局时间选择器。
    • 固定时间间隔:定义了开始时间和持续时间的时间窗口。 例如,您可以配置一个固定的一个月窗口,从 2020-01-01 开始。 当月结束后,时间窗口将自动重置为下一个月(2020-02-01)。
  7. 输入窗口小部件的标题。
  8. 在预览中验证您的小部件。 如果未显示预览,请单击 高亮显示缺失的配置,立即查看缺失的配置。
  9. 要创建 SLO widget 配置,请单击 创建
  10. 要在自定义仪表板上保存 SLO widget 配置,请单击 保存更改

SLI 配置

SLI 类型

与 SLO 类型无关,您可以为您的配置选择两种 SLI 类型之一:

  • 基于事件 SLI 使用定义的好事件和坏事件组来衡量服务的可靠性。 由于每次呼叫的权重相同,因此能更准确地反映用户的实际体验。 因此,处理错误预算更加困难,因为它取决于事件的数量。
  • 基于时间的 SLI 衡量按分钟汇总的服务可靠性。 虽然错误预算总是一个恒定的坏分钟数,使人们更容易管理,但它不如基于事件的 SLI 准确,因为坏事件在流量较少的分钟中更为严重。

为应用程序视图创建 SLI 配置

  1. 在“SLI 管理”对话框中,单击 “创建 SLI ”。
  2. 提供 SLI 配置详细信息
    • 输入 SLI 配置的名称以唯一地标识该配置。
  3. 选择SLI 配置类型,可以是基于时间基于事件
  4. 单击创建以保存新的 SLI 配置。

面向应用程序的基于时间的 SLI

完成基于时间的 SLI 的以下配置:

  1. 选择边界作用域(入站调用所有调用)。
    • 呼入呼叫:仅包括从应用程序外部发起的呼叫,且目标服务是所选应用程序视角的一部分。
    • 所有呼叫:包括来自应用程序外部的呼入呼叫和在应用程序视角内发生的呼叫。
  2. 您可以选择应用程序中的特定服务,或保留All Services的默认选择,以应用于整个应用程序视角。
  3. 如果想进一步缩小端点范围,可以从列表中选择一个端点。 与服务选择类似,您可以选择保留 All Endpoints 的默认值,以适用于整个服务。
  4. 从支持的指标列表中选择必须对 SLI 配置进行评估的指标。
    • 支持以下度量:
      • 等待时间
      • 调用计数
      • 错误率
      • 错误调用数
  5. 选择所选指标的聚集。
  6. 输入选定指标的阈值。

选择指标和阈值后, SLI 将按如下所示进行计算:

SLI = (1 - #minutes_where_threshold_is_violated / #minutes_in_time_window) * 100%

下图显示了如何为应用程序配置基于时间的 SLI k8s-demo。 应用程序的 边界范围仅限于 Endpoint DELETE /cart/:idInbound Calls 和称为 cartService 上。 要评估的 Metrics 设置为 Latency ,建议 Aggregation90th percentileThreshold25 ms

基于时间的 SLI 应用实例

基于事件的SLI

基于事件的 SLI 配置充分利用了 Unbounded Analytics 查询构建器的灵活性,可筛选出“良好事件”和“不良事件”的子集。

  • 良好事件:表明特定服务成功标准的呼叫集。 例如,某个 HTTP 服务中所有状态码为 2XX. 的 HTTP 请求。
  • 不良事件:显示特定服务故障标准的呼叫集。 例如,某个 HTTP 服务中所有状态码为 5XX. 的 HTTP 请求。

完成基于事件的 SLI 的以下配置:

  1. 选择边界作用域(入站调用所有调用)。
    • 呼入呼叫:仅包括从应用程序外部发起的呼叫,且目标服务是所选应用程序视角的一部分。
    • 所有呼叫:包括来自应用程序外部的呼入呼叫和在应用程序视角内发生的呼叫。
  2. 可选项:可包括内部通话或合成通话。 默认情况下,这两个呼叫都被排除在外。
    • 内部调用:内部调用:一种特殊类型的调用,代表在服务内部完成的工作。 这些调用可以通过自定义跟踪发送的中间跨度创建。 有关内部调用的更多信息,请参阅 跟踪的概念
    • 合成调用:以 合成端点 为目的地的呼叫,例如对 health-check 端点的呼叫。

定义了坏事件和好事件后,SLI 的计算方法如下:

SLI = #good_events / (#good_events + #bad_events) * 100%

图片显示了如何为应用程序配置基于事件的 SLI,其边界范围限制为 Inbound Callsgood events 被定义为状态代码为 200 的调用,bad events 被定义为状态代码为 500 的调用。

基于事件的 SLI 示例

该配置产生的 widget 显示的是通话误差预算,而不是分钟数。

为网站创建 SLI 配置

  1. 在“SLI 管理”对话框中,单击 “创建 SLI ”。
  2. 提供 SLI 配置详细信息
    • 输入 SLI 配置的名称以唯一地标识该配置。
  3. 选择SLI 配置类型,可以是基于时间基于事件
  4. 单击创建以保存新的 SLI 配置。

基于时间的网站多路输入(SLI)

完成基于时间的 SLI 的以下配置:

  1. 选择信标范围,例如 HTTP 请求。 通过应用信标过滤器,您可以进一步将配置范围扩大到网站流量的子集,如按地理位置、浏览器或用户。
  2. 从支持的指标列表中选择必须对 SLI 配置进行评估的指标。 支持以下度量:
    • 信标错误率
    • 信标持续时间
  3. 选择所选指标的聚集。
  4. 输入选定指标的阈值。

选择指标和阈值后, SLI 将按如下所示进行计算:

SLI = (1 - #minutes_where_threshold_is_violated / #minutes_in_time_window) * 100%

以下示例展示了 Robot Shop 网站基于时间的SLI配置,该配置针对路径 /products 上的GET请求,将“信标错误率”指标的平均值限制为 HTTP 次请求,阈值设为25毫秒。

网站基于时间的 SLI 示例

基于事件的网站 SLI

基于事件的 SLI 配置充分利用了 Unbounded Analytics 查询构建器的灵活性,可筛选出“良好事件”和“不良事件”的子集。

  • 良好事件:表明特定服务成功标准的呼叫集。 例如,某个 HTTP 服务中所有状态码为 2XX. 的 HTTP 请求。
  • 不良事件:显示特定服务故障标准的呼叫集。 例如,某个 HTTP 服务中所有状态码为 5XX. 的 HTTP 请求。

完成基于事件的 SLI 的以下配置:

  1. 选择信标范围 ,例如 HTTP 请求。 通过应用信标过滤器,您可以进一步将配置范围扩大到网站流量的子集,例如,按地理位置、浏览器或用户。
  2. 呼入电话所有电话
    • 呼入呼叫:仅包括从应用程序外部发起的呼叫,且目标服务是所选应用程序视角的一部分。
    • 所有呼叫:包括来自应用程序外部的呼入呼叫和在应用程序视角内发生的呼叫。

定义了坏事件和好事件后,SLI 的计算方法如下:

SLI = #good_events / (#good_events + #bad_events) * 100%

图片显示了如何为一个网站配置基于事件的 SLI,该网站的信标范围设置为 HTTP Requests,其中 good events 为状态代码为 200 的 GET 请求,而 _bad events+ 为状态代码为 500 的 GET 请求。

网站基于事件的 SLI 示例

该配置产生的 widget 显示的是通话误差预算,而不是分钟数。

克隆现有的 SLI 配置

不能修改 SLI 的参数,以防止计算的预算支出失效。 这就是为什么在更改任何参数时都需要克隆 SLI 配置的原因。

  1. 在 SLI 管理对话框中,单击要克隆的所选 SLI 配置上的 View/Clone SLI 配置图标。
  2. 编辑 SLI 配置详细信息
    • 更改 SLI 配置的名称,以标识该配置是从现有配置中克隆出来的。
  3. 根据需要编辑 SLI 配置。
  4. 单击克隆,以创建 SLI 配置的克隆。