SLO CRD字段说明

阿里云服务网格ASM提供了生成SLO以及配套的告警规则能力。通过自定义资源CRD配置的方式,简化您的配置流程。本文介绍SLO CRD字段的相关说明。

示例文件

以下示例文件将为default命名空间下的httpbin服务生成服务可用性SLO。以下示例代码中,目标值为99.9%,持续时间为30天,配置Page和Ticket两个等级的告警,添加了自定义标签和注解。

apiVersion: istio.alibabacloud.com/v1beta1
kind: ServiceLevelObjective
metadata:
  name: asm-slo-default-httpbin
  namespace: default # 自定义资源的命名空间。
spec:
  service: httpbin # 目标服务名。
  period: 30d # SLO持续时间。
  labels:
    owner: "finance-team"
  slos:
  - name: asm-slo2 # SLO名称。
    objective: "99.9" # 目标值。
    labels:
      description: "service availability description"
    sli:
      plugin:
        id: availability # 使用的插件类型。
        options: # 插件选项。
          filter: request_protocol="http"
    alerting:
      name: asm-alert # 告警规则名称。
      labels:
        category: "availability"
      annotations:
        summary: "High error rate on requests"
      pageAlert:
        labels:
          severity: "10"
      ticketAlert:
        labels:
          channel: "channel - call"

示例文件的重点字段说明如下。关于字段的详细说明,请参见下文CRD定义说明

字段

说明

namespace

自定义资源的命名空间,即目标服务的命名空间。

service

目标服务的名称。

period

SLO持续时间,单位为d(天)。可取值为30d28d14d7d

objective

目标值。

plugin

  • id:填写SLO对应的插件类型。

  • options:填写对应的插件选项(若没有可不填写)。

关于参数的具体说明,请参见下文Plugin字段定义

CRD定义说明

Metadata字段定义

名称

类型

是否必选

说明

示例值

name

String

名称,格式为asm-slo-{目标服务所在命名空间}-{目标服务名}。

asm-slo-default-httpbin

namespace

String

自定义资源的命名空间。需要与目标服务的命名空间相同。

default

labels

Object

无需您手动填写。后端会自动填充两个字段值供标签选择器使用。

  • asm-target-namespace:目标服务所在命名空间。

  • asm-target-service:目标服务名。对应spec下的service字段值。

labels: asm-target-namespace: default asm-target-service: httpbin

Spec字段定义

名称

类型

是否必选

说明

示例值

service

String

目标服务名。

httpbin

period

String

SLO持续时间,可配置为30d28d14d7d30d表示30天。

30d

labels

Object

全局标签设置,slos字段中配置的每个SLO生成的Recording Rules的labes字段中,都会包含此处的标签。

labels: global: "some-label"

slos

Array[Slo类型]

需要设置的SLO数组,至少配置一个SLO。

-

Slo字段定义

名称

类型

是否必选

描述

示例值

name

String

SLO的名称。

asm-slo

objective

String

SLO的目标值。格式为字符串,且该字符串能够解析为一个(0,100]之间的浮点数。

"99.9"

labels

Object

SLO标签。此处配置的标签会附加到该SLO生成的每一条Recording Rules的labels字段中。

labels: recordlabel: aaa

sli

Object[Sli类型]

选择所需的SLI类型。

-

alerting

Object[Alerting类型]

配置告警规则。

-

Sli字段定义

名称

类型

是否必选

描述

示例值

plugin

Object[Plugin类型]

SLI插件配置。

-

Plugin字段定义

名称

类型

是否必选

说明

示例值

id

String

插件ID。取值如下:

  • availability:服务可用性SLO插件。

  • latency:服务延迟SLO插件。

latency

options

Map

说明

options中包含必选字段则为必选。

插件选项。不同插件需要配置不同的插件选项。

options: bucket: "300"

id字段的取值不同,对应的options字段也有所区别。

  • idavailability时,options字段说明如下:

    名称

    类型

    是否必选

    说明

    示例值

    filter

    String

    Prometheus标签过滤器。用法与promQL相同,设置后只计算包含指定标签的指标。

    request_protocol="http"

  • idlatency时,options字段说明如下:

    名称

    类型

    是否必选

    说明

    示例值

    bucket

    String

    期望满足的目标延迟。格式为字符串,且该字符串能够直接转换成一个整数。

    "300"

    filter

    String

    Prometheus标签过滤器。用法与promQL相同,设置后只计算包含指定标签的指标。

    request_protocol="http"

    exclude_errors

    Bool

    是否过滤错误请求。默认为false

    • true:响应码为5XX的请求将不会纳入延迟计算。

    • false:不过滤错误请求。

    false

Alerting字段定义

名称

类型

是否必选

说明

示例值

name

String

告警规则名称。

asm-alert

labels

Map

告警规则标签。

labels: alertlabel: bbb

annotations

Map

告警的注释信息。

annotations: alertanno: ccc

pageAlert

Object

Page级别的告警配置,严重程度相对较高。

-

ticketAlert

Object

Ticket级别的告警配置,严重程度相对较轻。

-

PageAlert字段定义

名称

类型

是否必选

说明

示例值

disable

Bool

是否开启此告警。默认为true,表示开启。

false

labels

Map

告警规则标签。

labels: pagelabel: ddd

annotations

Map

告警的注释信息。

annotations: pageanno: eee

TicketAlert字段定义

名称

类型

是否必选

说明

示例值

disable

Bool

是否开启此告警。默认为true,表示开启。

false

labels

Map

告警规则标签。

labels: pagelabel: ddd

annotations

Map

告警的注释信息。

annotations: pageanno: eee