Service Mesh (ASM) memungkinkan Anda mendefinisikan service level objectives (SLOs) dan aturan peringatan secara deklaratif melalui Custom Resource Definition (CRD) ServiceLevelObjective.
Referensi bidang berikut diorganisasikan menurut hierarki: metadata > spec > slos[] > sli / alerting.
Contoh YAML
Manifes berikut mendefinisikan SLO ketersediaan untuk layanan httpbin di namespace default. Targetnya adalah 99,9% dan SLO berlaku selama periode 30 hari, dengan peringatan tingkat halaman (page-level) maupun tingkat tiket (ticket-level).
apiVersion: istio.alibabacloud.com/v1beta1
kind: ServiceLevelObjective
metadata:
name: asm-slo-default-httpbin # Format: asm-slo-{namespace}-{service}
namespace: default # Harus sesuai dengan namespace layanan target
spec:
service: httpbin # Nama layanan target
period: 30d # Periode waktu berlakunya SLO: 30d, 28d, 14d, atau 7d
labels:
owner: "finance-team" # Label global, disebarkan ke semua recording rule yang dihasilkan
slos:
- name: asm-slo2 # Nama SLO unik dalam CRD ini
objective: "99.9" # Persentase target dalam bentuk string
labels:
description: "service availability description"
sli:
plugin:
id: availability # Jenis plugin: availability atau latency
options: # Opsi spesifik plugin
filter: request_protocol="http" # Filter label PromQL
alerting:
name: asm-alert # Nama aturan peringatan
labels:
category: "availability"
annotations:
summary: "High error rate on requests"
pageAlert: # Peringatan tingkat halaman dengan tingkat keparahan tinggi
labels:
severity: "10"
ticketAlert: # Peringatan tingkat tiket dengan tingkat keparahan rendah
labels:
channel: "channel - call"
Tabel berikut merangkum bidang-bidang utama. Untuk deskripsi lengkap setiap bidang, lihat Referensi bidang CRD.
| Bidang | Deskripsi |
|---|
namespace | Namespace dari sumber daya kustom. Harus sesuai dengan namespace layanan target. |
service | Nama layanan target. |
period | Periode waktu berlakunya SLO. Nilai yang valid: 30d, 28d, 14d, 7d. |
objective | Persentase target dalam bentuk string. Rentang nilai yang valid: (0, 100]. |
plugin | Menentukan jenis SLI dan opsi-opsinya. Atur id ke availability atau latency, lalu konfigurasikan opsi yang sesuai. Lihat Bidang plugin. |
Referensi bidang CRD
Bidang metadata
| Bidang | Tipe | Wajib | Deskripsi | Contoh |
|---|
name | String | Ya | Nama sumber daya kustom. Format: asm-slo-{namespace}-{service}. | asm-slo-default-httpbin |
namespace | String | Ya | Namespace sumber daya kustom. Harus sesuai dengan namespace layanan target. | default |
labels | Object | Tidak | Diisi otomatis oleh backend. Jangan atur secara manual. Sistem menambahkan dua label: asm-target-namespace (namespace layanan) dan asm-target-service (nama layanan, sama dengan spec.service). | labels:
asm-target-namespace: default
asm-target-service: httpbin
|
Bidang spec
| Bidang | Tipe | Wajib | Deskripsi | Contoh |
|---|
service | String | Ya | Nama layanan target. | httpbin |
period | String | Ya | Periode waktu berlakunya SLO. Nilai yang valid: 30d (30 hari), 28d, 14d, 7d. | 30d |
labels | Object | Tidak | Label global. Disebarkan ke bidang labels setiap recording rule yang dihasilkan oleh SLO dalam CRD ini. | labels:
global: "some-label"
|
slos | Array | Ya | Satu atau beberapa definisi SLO. Minimal satu entri diperlukan. | - |
Bidang slos[]
Setiap entri dalam array slos mendefinisikan satu SLO beserta targetnya, konfigurasi SLI, dan aturan peringatannya.
| Bidang | Tipe | Wajib | Deskripsi | Contoh |
|---|
name | String | Ya | Nama SLO. | asm-slo |
objective | String | Ya | Persentase target dalam bentuk string yang dapat diuraikan menjadi bilangan titik mengambang. Rentang nilai yang valid: (0, 100]. | "99.9" |
labels | Object | Tidak | Label tingkat SLO. Disebarkan ke bidang labels setiap recording rule yang dihasilkan oleh SLO ini. | labels:
recordlabel: aaa
|
sli | Object | Ya | Konfigurasi service level indicator (SLI). Lihat bidang sli. | - |
alerting | Object | Ya | Konfigurasi aturan peringatan. Lihat bidang alerting. | - |
Bidang sli
Objek sli hanya berisi satu bidang: plugin.
| Bidang | Tipe | Wajib | Deskripsi | Contoh |
|---|
plugin | Object | Ya | Konfigurasi plugin yang menentukan cara pengukuran SLI. Lihat Bidang plugin. | - |
Bidang Plugin
Plugin menentukan jenis pengukuran SLI. Atur id untuk memilih plugin, lalu konfigurasikan options yang sesuai.
| Bidang | Tipe | Wajib | Deskripsi | Contoh |
|---|
id | String | Ya | Jenis plugin. Nilai yang valid: availability (ketersediaan layanan), latency (latensi layanan). | latency |
options | Map | Bersyarat | Opsi plugin. Diperlukan jika plugin yang dipilih memiliki bidang wajib. Misalnya, latency memerlukan bucket. Lihat tabel opsi di bawah ini. | options:
bucket: "300"
|
Opsi untuk availability
Ketika id diatur ke availability, opsi berikut tersedia:
| Bidang | Tipe | Wajib | Deskripsi | Contoh |
|---|
filter | String | Tidak | Filter label PromQL. Prometheus hanya menghitung metrik untuk permintaan yang sesuai dengan filter ini. | request_protocol="http" |
Opsi untuk latency
Ketika id diatur ke latency, opsi berikut tersedia:
| Bidang | Tipe | Wajib | Deskripsi | Contoh |
|---|
bucket | String | Ya | Target latensi, dalam bentuk string yang dapat diuraikan menjadi bilangan bulat. | "300" |
filter | String | Tidak | Filter label PromQL. Prometheus hanya menghitung metrik untuk permintaan yang sesuai dengan filter ini. | request_protocol="http" |
exclude_errors | Boolean | Tidak | Apakah permintaan error harus dikecualikan dari perhitungan latensi. Nilai default: false. Jika diatur ke true, permintaan dengan kode respons 5XX dikecualikan. Jika false, semua permintaan dimasukkan. | false |
Bidang alerting
| Bidang | Tipe | Wajib | Deskripsi | Contoh |
|---|
name | String | Ya | Nama aturan peringatan. | asm-alert |
labels | Map | Tidak | Label yang dilampirkan pada aturan peringatan. | labels:
alertlabel: bbb
|
annotations | Map | Tidak | Anotasi yang dilampirkan pada aturan peringatan. | annotations:
alertanno: ccc
|
pageAlert | Object | Tidak | Konfigurasi peringatan tingkat halaman dengan tingkat keparahan tinggi. Lihat bidang pageAlert. | - |
ticketAlert | Object | Tidak | Konfigurasi peringatan tingkat tiket dengan tingkat keparahan rendah. Lihat bidang ticketAlert. | - |
Bidang pageAlert
| Bidang | Tipe | Wajib | Deskripsi | Contoh |
|---|
disable | Boolean | Tidak | Apakah peringatan ini diaktifkan. Nilai default: true (diaktifkan). Atur ke false untuk menonaktifkan. | false |
labels | Map | Tidak | Label yang dilampirkan pada peringatan ini. | labels:
pagelabel: ddd
|
annotations | Map | Tidak | Anotasi yang dilampirkan pada peringatan ini. | annotations:
pageanno: eee
|
Bidang ticketAlert
| Bidang | Tipe | Wajib | Deskripsi | Contoh |
|---|
disable | Boolean | Tidak | Apakah peringatan ini diaktifkan. Nilai default: true (diaktifkan). Atur ke false untuk menonaktifkan. | false |
labels | Map | Tidak | Label yang dilampirkan pada peringatan ini. | labels:
pagelabel: ddd
|
annotations | Map | Tidak | Anotasi yang dilampirkan pada peringatan ini. | annotations:
pageanno: eee
|