O Service Mesh (ASM) permite definir objetivos de nível de serviço (SLOs) e regras de alerta de forma declarativa por meio da definição de recurso personalizado (CRD) ServiceLevelObjective.
A referência de campos abaixo segue a hierarquia: metadata > spec > slos[] > sli / alerting.
Exemplo de YAML
O manifesto a seguir define um SLO de disponibilidade para o serviço httpbin no namespace default. O objetivo é 99,9%, com vigência de 30 dias e alertas nos níveis de página e ticket.
apiVersion: istio.alibabacloud.com/v1beta1
kind: ServiceLevelObjective
metadata:
name: asm-slo-default-httpbin # Format: asm-slo-{namespace}-{service}
namespace: default # Must match the target service namespace
spec:
service: httpbin # Target service name
period: 30d # Period of time during which the SLO takes effect: 30d, 28d, 14d, or 7d
labels:
owner: "finance-team" # Global label, propagated to all generated recording rules
slos:
- name: asm-slo2 # Unique SLO name within this CRD
objective: "99.9" # Target percentage as a string
labels:
description: "service availability description"
sli:
plugin:
id: availability # Plugin type: availability or latency
options: # Plugin-specific options
filter: request_protocol="http" # PromQL label filter
alerting:
name: asm-alert # Alert rule name
labels:
category: "availability"
annotations:
summary: "High error rate on requests"
pageAlert: # High-severity, page-level alert
labels:
severity: "10"
ticketAlert: # Low-severity, ticket-level alert
labels:
channel: "channel - call"
A tabela a seguir resume os principais campos. Para obter descrições completas, consulte Referência de campos do CRD.
|
Campo |
Descrição |
|
|
Namespace do recurso personalizado. Deve corresponder ao namespace do serviço de destino. |
|
|
Nome do serviço de destino. |
|
|
Período de vigência do SLO. Valores válidos: |
|
|
Percentual alvo em formato de string. Intervalo válido: (0, 100]. |
|
|
Define o tipo de SLI e as opções. Defina |
Referência de campos do CRD
Campos de metadata
|
Campo |
Tipo |
Obrigatório |
Descrição |
Exemplo |
|
|
String |
Sim |
Nome do recurso personalizado. Formato: |
|
|
|
String |
Sim |
Namespace do recurso personalizado. Deve corresponder ao namespace do serviço de destino. |
|
|
|
Object |
Não |
Preenchimento automático pelo backend. Não defina manualmente. O sistema adiciona dois rótulos: |
|
Campos de spec
|
Campo |
Tipo |
Obrigatório |
Descrição |
Exemplo |
|
|
String |
Sim |
Nome do serviço de destino. |
|
|
|
String |
Sim |
Período de vigência do SLO. Valores válidos: |
|
|
|
Object |
Não |
Rótulo global propagado para o campo |
|
|
|
Array |
Sim |
Uma ou mais definições de SLO. Requer pelo menos uma entrada. |
- |
Campos de slos[]
Cada entrada no array slos define um SLO individual com objetivo, configuração de SLI e regras de alerta.
|
Campo |
Tipo |
Obrigatório |
Descrição |
Exemplo |
|
|
String |
Sim |
Nome do SLO. |
|
|
|
String |
Sim |
Percentual alvo em string conversível para ponto flutuante. Intervalo válido: (0, 100]. |
|
|
|
Object |
Não |
Rótulo no nível do SLO propagado para o campo |
|
|
|
Object |
Sim |
Configuração do indicador de nível de serviço (SLI). Consulte campos de sli. |
- |
|
|
Object |
Sim |
Configuração da regra de alerta. Consulte campos de alerting. |
- |
Campos de sli
O objeto sli contém apenas o campo plugin.
|
Campo |
Tipo |
Obrigatório |
Descrição |
Exemplo |
|
|
Object |
Sim |
Configuração do plugin que define a medição do SLI. Consulte Campos de plugin. |
- |
Campos de plugin
O plugin determina o tipo de medição do SLI. Defina id para selecione o plugin e configure as options correspondentes.
|
Campo |
Tipo |
Obrigatório |
Descrição |
Exemplo |
|
|
String |
Sim |
Tipo de plugin. Valores válidos: |
|
|
|
Map |
Condicional |
Opções do plugin. Obrigatório se o plugin selecionado tiver campos obrigatórios. Por exemplo, |
|
Opções para availability
Se id for availability, as seguintes opções estarão disponíveis:
|
Campo |
Tipo |
Obrigatório |
Descrição |
Exemplo |
|
|
String |
Não |
Filtro de rótulo PromQL. O Prometheus calcula métricas apenas para requisições correspondentes a este filtro. |
|
Opções para latency
Se id for latency, as seguintes opções estarão disponíveis:
|
Campo |
Tipo |
Obrigatório |
Descrição |
Exemplo |
|
|
String |
Sim |
Objetivo de latência em string conversível para inteiro. |
|
|
|
String |
Não |
Filtro de rótulo PromQL. O Prometheus calcula métricas apenas para requisições correspondentes a este filtro. |
|
|
|
Boolean |
Não |
Define se requisições com erro devem ser excluídas dos cálculos de latência. Padrão: |
|
Campos de alerting
|
Campo |
Tipo |
Obrigatório |
Descrição |
Exemplo |
|
|
String |
Sim |
Nome da regra de alerta. |
|
|
|
Map |
Não |
Rótulos anexados à regra de alerta. |
|
|
|
Map |
Não |
Anotações anexadas à regra de alerta. |
|
|
|
Object |
Não |
Configuração de alerta de alta severidade no nível de página. Consulte campos de pageAlert. |
- |
|
|
Object |
Não |
Configuração de alerta de baixa severidade no nível de ticket. Consulte campos de ticketAlert. |
- |
Campos de pageAlert
|
Campo |
Tipo |
Obrigatório |
Descrição |
Exemplo |
|
|
Boolean |
Não |
Controla a ativação deste alerta. Padrão: |
|
|
|
Map |
Não |
Rótulos anexados a este alerta. |
|
|
|
Map |
Não |
Anotações anexadas a este alerta. |
|
Campos de ticketAlert
|
Campo |
Tipo |
Obrigatório |
Descrição |
Exemplo |
|
|
Boolean |
Não |
Controla a ativação deste alerta. Padrão: |
|
|
|
Map |
Não |
Rótulos anexados a este alerta. |
|
|
|
Map |
Não |
Anotações anexadas a este alerta. |
|