阿里雲Service MeshASM提供了產生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(天)。可取值為30d、28d、14d或7d。 |
objective | 目標值。 |
plugin |
關於參數的具體說明,請參見下文Plugin欄位定義。 |
CRD定義說明
Metadata欄位定義
名稱 | 類型 | 是否必選 | 說明 | 樣本值 |
name | String | 是 | 名稱,格式為asm-slo-{目標服務所在命名空間}-{目標服務名}。 | asm-slo-default-httpbin |
namespace | String | 是 | 自訂資源的命名空間。需要與目標服務的命名空間相同。 | default |
labels | Object | 否 | 無需您手動填寫。後端會自動填滿兩個欄位值供標籤選取器使用。
| labels: asm-target-namespace: default asm-target-service: httpbin |
Spec欄位定義
名稱 | 類型 | 是否必選 | 說明 | 樣本值 |
service | String | 是 | 目標服務名。 | httpbin |
period | String | 是 | SLO期間,可配置為30d、28d、14d或7d。30d表示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。取值如下:
| latency |
options | Map | 否 說明 若options中包含必選欄位則為必選。 | 外掛程式選項。不同外掛程式需要配置不同的外掛程式選項。 | options: bucket: "300" |
id欄位的取值不同,對應的options欄位也有所區別。
當id為availability時,options欄位說明如下:
名稱
類型
是否必選
說明
樣本值
filter
String
否
Prometheus標籤過濾器。用法與promQL相同,設定後只計算包含指定標籤的指標。
request_protocol="http"
當id為latency時,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 |