Service Mesh (ASM) では、カスタムリソース定義 (CRD) を作成することで、サービスレベル目標 (SLO) とアラートルールを構成できます。 これにより、構成プロセスが簡素化されます。 このトピックでは、SLO CRD のフィールドについて説明します。
サンプルファイル
次のサンプルファイルは、デフォルトの名前空間の httpbin アプリケーションサービスの SLO を構成して、サービスの可用性を指定する方法を示しています。 このファイルでは、目標は 99.9% で、SLO が有効になる期間は 30 日です。 pageAlert と ticketAlert の 2 つの重大度レベルのアラートが構成されています。 カスタムラベルとアノテーションがアラートに追加されます。
apiVersion: istio.alibabacloud.com/v1beta1
kind: ServiceLevelObjective
metadata:
name: asm-slo-default-httpbin
namespace: default # カスタムリソースが属する名前空間
spec:
service: httpbin # SLO を構成するアプリケーションの名前
period: 30d # SLO が有効になる期間
labels:
owner: "finance-team"
slos:
- name: asm-slo2 # SLO の名前
objective: "99.9" # 目標
labels:
description: "サービス可用性の説明"
sli:
plugin:
id: availability # プラグインのタイプ
options: # プラグインのオプション
filter: request_protocol="http"
alerting:
name: asm-alert # アラートルール名
labels:
category: "availability"
annotations:
summary: "リクエストのエラー率が高い"
pageAlert:
labels:
severity: "10"
ticketAlert:
labels:
channel: "channel - call"次の表に、YAML ファイルの一部のフィールドを示します。 詳細については、CRD フィールドの説明をご参照ください。
フィールド | 説明 |
namespace | カスタムリソースが属する名前空間。これは、SLO を構成するアプリケーションが存在する名前空間でもあります。 |
service | アプリケーションの名前。 |
period | SLO が有効になる期間。単位は d で、日数を示します。有効な値:30d、28d、14d、7d。 |
objective | 目標。 |
plugin |
このフィールドの詳細については、このトピックのplugin フィールドをご参照ください。 |
CRD フィールドの説明
metadata フィールド
フィールド | タイプ | 必須 | 説明 | 例 |
name | String | はい | カスタムリソースの名前。形式:asm-slo-{SLO を構成するアプリケーションが存在する名前空間}-{アプリケーションの名前}。 | asm-slo-default-httpbin |
namespace | String | はい | カスタムリソースが属する名前空間。値は、SLO を構成するアプリケーションが存在する名前空間と同じである必要があります。 | default |
labels | Object | いいえ | このフィールドを指定する必要はありません。バックエンドは、ラベルセレクターが使用する 2 つの値を自動的に入力します。
| 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 の labels フィールドには、このラベルが含まれます。 | labels: global: "some-label" |
slos | Array [SLO の定義] | はい | 構成する SLO。少なくとも 1 つの SLO を構成する必要があります。 | - |
slos フィールド
フィールド | タイプ | 必須 | 説明 | 例 |
name | String | はい | SLO の名前。 | asm-slo |
objective | String | はい | 目標。値は、0 より大きく 100 以下の浮動小数点数として解析できる文字列である必要があります。 | "99.9" |
labels | Object | いいえ | SLO ラベル。ラベルは、SLO によって生成された各 Recording Rules の labels フィールドに添付されます。 | labels: recordlabel: aaa |
sli | Object [SLI の定義] | はい | サービスレベル指標 (SLI) の構成。 | - |
alerting | Object [アラートルールの定義] | はい | アラートルールの構成。 | - |
sli フィールド
フィールド | タイプ | 必須 | 説明 | 例 |
plugin | Object [プラグインの定義] | はい | プラグイン構成。 | - |
plugin フィールド
フィールド | タイプ | 必須 | 説明 | 例 |
id | String | はい | プラグインの ID。有効な値:
| latency |
options | Map | いいえ 説明 options に必須フィールドが含まれている場合は必須です。 | プラグインのオプション。プラグインオプションは、プラグイン ID によって異なります。 | options: bucket: "300" |
異なるプラグイン ID は、異なるプラグインオプションに対応します。
次の表は、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: Prometheus は、レスポンスコードが 5XX のリクエストを除くリクエストに基づいてレイテンシを計算します。
false: Prometheus は、エラーを含むすべてのリクエストに基づいてレイテンシを計算します。
false
alerting フィールド
フィールド | タイプ | 必須 | 説明 | 例 |
name | String | はい | アラートルール名。 | asm-alert |
labels | Map | いいえ | アラートルールのラベル。 | labels: alertlabel: bbb |
annotations | Map | いいえ | アラートアノテーション。 | annotations: alertanno: ccc |
pageAlert | Object | いいえ | ページレベルの高重大度アラートの構成。 | - |
ticketAlert | Object | いいえ | チケットレベルの低重大度アラートの構成。 | - |
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 |