Se criar serviços personalizados, também tem de criar objetivos ao nível do serviço (SLOs) para os mesmos. Não existem SLOs predefinidos para serviços personalizados.
Também pode criar SLOs personalizados para serviços detetados automaticamente, mas isso é menos comum.
Os SLOs baseiam-se em métricas que medem o desempenho e são usados como indicadores do nível de serviço (INSs). Para SLOs personalizados, tem de identificar as métricas que quer usar nos seus SLIs.
Se não estiver a criar SLOs personalizados, pode ignorar esta página.
Caraterísticas dos tipos de métricas adequados
Existem dois tipos de SLOs que pode criar para os seus serviços:
- SLOs baseados em pedidos.
- SLOs baseados no Windows.
Os SLOs baseiam-se nos tipos de métricas que escolher como SLIs. Os valores nos tipos de métricas são classificados pela forma como se relacionam entre si. Esta classificação
é denominada tipo de métrica e tem três valores possíveis: GAUGE
,
DELTA,
e CUMULATIVE
. Para mais informações, consulte
MetricKind
.
Para SLOs baseados em pedidos, o SLI representa uma relação entre pedidos válidos e o total de pedidos. O tipo de métrica do seu SLI tem de ser
DELTA
ou CUMULATIVE
. Não pode usar métricas GAUGE
em SLIs baseados em pedidos.
Para SLOs baseados no Windows, o SLI representa uma contagem de bons resultados num determinado período. Os tipos de métricas aceitáveis dependem da forma como estrutura os SLIs. No entanto, se usar um SLI baseado em pedidos, o tipo de métrica do SLI tem de ser DELTA
ou CUMULATIVE
. Não pode usar métricas GAUGE
em SLIs baseados em pedidos.
Para mais informações, consulte o artigo Estruturas para SLIs baseados no Windows.
Para mais informações sobre os tipos de SLOs, consulte o artigo Conceitos na monitorização de serviços.
Pode usar tipos de métricas fornecidos pelo Cloud Monitoring ou usar tipos de métricas personalizadas que criou. Em ambos os casos, os valores são adequados para o SLI que quer criar.
Tipos de métricas inadequados
Ao considerar um tipo de métrica para utilização como SLI, evite tipos de métricas de elevada cardinalidade. A cardinalidade descreve o número de séries cronológicas possíveis que podem ser associadas ao tipo de métrica e está relacionada com a granularidade dos valores que as etiquetas de métricas podem assumir. Para uma discussão sobre a cardinalidade, consulte o artigo Cardinalidade: séries cronológicas e etiquetas.
Os tipos de métricas com etiquetas que usam valores como datas/horas têm provavelmente uma cardinalidade muito elevada e são más opções para utilização como SLIs. As métricas de elevada cardinalidade são frequentemente métricas definidas pelo utilizador que não foram concebidas para evitar problemas de cardinalidade. Estas podem incluir métricas baseadas em registos definidas pelo utilizador e métricas personalizadas.
Encontrar tipos de métricas adequados
Pode encontrar as informações sobre os tipos de métricas, incluindo o tipo de métrica, em vários locais:
O seletor de métricas usado em ferramentas como o explorador de métricas apresenta um cartão de sobreposição para o tipo de métrica realçado. Esta ferramenta funciona para métricas personalizadas e incorporadas.
Por exemplo, a captura de ecrã seguinte mostra o cartão de sobreposição para o tipo de métrica
loadbalancing.googleapis.com/https/request_count
, conforme visto no explorador de métricas:Com o Explorador de métricas, também pode configurar a métrica para imitar o que a API SLO faz e obter uma representação JSON dessa configuração. Este JSON é útil para criar um SLI manualmente.
As páginas na lista de métricas contêm tabelas para cada serviço que detalham os tipos de métricas associados aos serviços. Estas tabelas incluem todos os tipos de métricas incorporados, mas não mostram tipos de métricas personalizadas.
Por exemplo, a captura de ecrã seguinte mostra a entrada para o tipo de métrica
loadbalancing.googleapis.com/https/request_count
, conforme visto na lista de métricas de equilíbrio de carga. Estas entradas oferecem frequentemente mais detalhes do que os cartões de sobreposição no explorador de métricas.
Criar o INS
Para a monitorização de serviços, os dados de métricas são processados de formas específicas, que pode replicar no explorador de métricas. Esta página pressupõe que tem experiência na utilização do explorador de métricas. Se precisar de mais informações, consulte o Explorador de métricas.
Para criar um SLI baseado em pedidos com base numa proporção de séries cronológicas, precisa de duas séries cronológicas: uma que represente todos os pedidos e outra que represente os pedidos bons (ou maus). Este tipo de SLI tem a seguinte estrutura:
"requestBased": { "goodTotalRatio": { "totalServiceFilter": TO_BE_IDENTIFIED, "goodServiceFilter": TO_BE_IDENTIFIED, } }
Para obter o valor do campo goodServiceFilter
:
Selecione o tipo de recurso monitorizado e o tipo de métrica. Lembre-se de que o tipo de métrica tem de ser
DELTA
ouCUMULATIVE
. O resultado pode incluir muitas séries cronológicas diferentes.Por exemplo, selecione o
http_lb_rule
tipo de recurso e oloadbalancing.googleapis.com/https/request_count
tipo de métrica.Use o campo Filtro para definir a etiqueta
response_code_class
como200
. Este filtro remove todas as séries cronológicas com outros valores para esta etiqueta. Ainda podem existir várias séries cronológicas correspondentes.Escolha o agregador
sum
para criar uma única série cronológica. O gráfico na página Explorador de métricas apresenta os intervalos temporais resultantes.Clique em Mais opções more_vert acima do gráfico e selecione Ver como JSON no menu.
O JSON obtido tem um aspeto semelhante ao seguinte:
"dataSets": [ { "timeSeriesFilter": { "filter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200"" "perSeriesAligner": "ALIGN_RATE", "crossSeriesReducer": "REDUCE_SUM", "secondaryCrossSeriesReducer": "REDUCE_NONE", "minAlignmentPeriod": "60s", "groupByFields": [], "unitOverride": "1" }, "targetAxis": "Y1", "plotType": "LINE" } ],
O elemento que lhe interessa é o valor do campo filter
incorporado no objeto dataSets
:
"filter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200""
Para desenvolver a estrutura do SLI:
Insira este valor na estrutura SLI como o valor do campo
goodServiceFilter
.Insira também este valor na estrutura SLI como o valor de
totalServiceFilter
, mas, em seguida, remova a parte da etiqueta do filtro,metric.label.\"response_code_class\"=\"200\"
.
Segue-se o indicador do nível de serviço resultante:
"requestBased": { "goodTotalRatio": { "totalServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule"", "goodServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200"", } }
Em seguida, pode inserir este SLI num SLO, por exemplo:
{ "serviceLevelIndicator": { "requestBased": { "goodTotalRatio": { "totalServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule"", "goodServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200"", } } }, "goal": 0.98, "calendarPeriod": "WEEK", "displayName": "98% Successful requests in a calendar week" }
Pode usar este JSON para criar um SLO, conforme descrito em Criar um SLO.