A monitorização de serviços e a API SLO ajudam a gerir os seus serviços como a Google gere os seus próprios serviços. As noções básicas da monitorização de serviços incluem o seguinte:
- Selecionar métricas que atuam como indicadores do nível de serviço (INSs).
- Usar os INSs para definir objetivos ao nível do serviço (SLOs) para os valores dos INSs.
- Usar a margem de erro implícita no SLO para mitigar o risco no seu serviço.
Esta página apresenta estes conceitos e descreve alguns aspetos a ter em conta ao criar um SLO. As outras páginas desta secção colocam estes conceitos em prática.
Terminologia
A monitorização de serviços tem um conjunto de conceitos básicos, que são apresentados aqui:
- Indicador do nível de serviço (INS): uma medição do desempenho.
- Objetivo ao nível do serviço (SLO): uma declaração do desempenho desejado.
- Margem de erro: começa em 1 - SLO e diminui à medida que o desempenho real não atinge o SLO.
Indicadores do nível de serviço
O Cloud Monitoring recolhe métricas que medem o desempenho da infraestrutura de serviços. Seguem-se exemplos de métricas de desempenho:
- Contagem de pedidos: por exemplo, o número de pedidos HTTP por minuto que resultam em respostas 2xx ou 5xx.
- Latências de resposta: por exemplo, a latência das respostas HTTP 2xx.
As métricas de desempenho são identificadas automaticamente com base num conjunto de tipos de serviços conhecidos: Cloud Service Mesh, Istio no Google Kubernetes Engine e App Engine. Também pode definir o seu próprio tipo de serviço e selecionar métricas de desempenho para o mesmo.
As métricas de desempenho são a base dos SLIs do seu serviço. Um INS descreve o desempenho de algum aspeto do seu serviço. Para serviços na Cloud Service Mesh, no Istio no Google Kubernetes Engine e no App Engine, já se conhecem SLIs úteis. Por exemplo, se o seu serviço tiver métricas de número de pedidos ou latências de resposta, pode derivar indicadores do nível de serviço (INSs) padrão dessas métricas criando rácios da seguinte forma:
- Um SLI de disponibilidade é a relação entre o número de respostas bem-sucedidas e o número de todas as respostas.
- Um SLI de latência é a proporção do número de chamadas abaixo de um limite de latência em relação ao número de todas as chamadas.
Também pode configurar INSs específicos do serviço para alguma outra medida do que significa "bom desempenho". Geralmente, os SLIs enquadram-se em duas categorias:
- SLIs baseados em pedidos, em que o bom serviço é medido através da contagem de unidades atómicas de serviço, como o número de pedidos HTTP bem-sucedidos.
- SLIs baseados no Windows, em que o bom serviço é medido através da contagem do número de períodos ou janelas durante os quais o desempenho cumpre um critério de qualidade, como a latência de resposta abaixo de um determinado limite.
Estes SLIs são descritos mais detalhadamente no artigo Conformidade nos SLOs baseados em pedidos e janelas.
Para ver exemplos que criam SLIs para serviços selecionados, consulte o artigo Criar SLIs a partir de métricas.
Objetivos ao nível do serviço
Um SLO é um valor alvo para um INS, medido ao longo de um período. O serviço determina os INSs disponíveis e especifica os SLOs com base nos INSs. O NQS define o que se qualifica como um bom serviço. Pode criar até 500 SLOs para cada serviço no Cloud Monitoring.
Um NQS baseia-se nos seguintes tipos de informações:
- Um SLI, que mede o desempenho do serviço.
- Um objetivo de desempenho, que especifica o nível de desempenho desejado.
- Um período, denominado período de conformidade, para medir a forma como o SLI se compara ao objetivo de desempenho.
Por exemplo, pode ter requisitos como estes:
- A latência pode exceder 300 ms em apenas 5% dos pedidos num período de 30 dias consecutivos.
- O sistema tem de ter uma disponibilidade de 99% medida ao longo de uma semana civil.
Requisitos como estes podem fornecer a base para os SLOs. Consulte o artigo Conceber e usar SLOs para obter orientações sobre a definição de bons SLOs.
As alterações na conformidade com o SLO também podem indicar o início de falhas. A monitorização destas alterações pode dar-lhe um aviso suficiente para corrigir um problema antes de se propagar. Assim, as políticas de alerta são normalmente usadas para monitorizar a conformidade com os SLOs. Para mais informações, consulte o artigo Alertas sobre o orçamento de erros.
Um SLO útil tem como alvo menos de 100%, porque o SLO determina a sua margem de erro. Normalmente, os SLOs são descritos como um "número de noves": 99% (2 noves), 99,9% (3 noves) e assim sucessivamente. O valor mais elevado que pode definir é 99,9%, mas pode usar qualquer valor inferior adequado para o seu serviço.
Margens de erro
Um SLO especifica o grau de desempenho de um serviço durante um período de conformidade. O que restar no período de conformidade torna-se na margem de erro. A margem de erro quantifica o grau em que um serviço pode não ter um bom desempenho durante o período de conformidade e ainda cumprir o SLO.
As margens de erro permitem-lhe acompanhar o número de eventos individuais incorretos (como pedidos) que podem ocorrer durante o resto do período de conformidade antes de violar o SLO. Pode usar a margem de erro para ajudar a gerir tarefas de manutenção, como a implementação de novas versões. Se a margem de erro estiver quase esgotada, a realização de ações arriscadas, como a implementação de novas atualizações, pode resultar na violação de um SLO.
A sua margem de erro para um período de conformidade é (1 − objetivo de SLO) × (eventos elegíveis no período de conformidade). Por exemplo, se o seu SLO for de 85% de pedidos bons num período contínuo de 7 dias, o seu orçamento de erros permite que 15% destes pedidos sejam maus. Se recebeu, por exemplo, 60 480 pedidos na semana passada, o seu orçamento de erros é de 15% desse total, ou seja, 9072 pedidos que podem ser inválidos. Se publicou mais erros do que este, o seu serviço ficou fora do SLO para o período de conformidade de 7 dias.
Conceber e usar SLOs
O que é necessário para um bom SLO? Que aspetos deve ter em conta ao fazer as escolhas? Esta secção oferece uma vista geral de alguns dos conceitos gerais por detrás da conceção e utilização de SLOs. Este tópico é abordado com muito mais detalhe no livro Site Reliability Engineering: How Google Runs Production Systems, no capítulo sobre os SLOs.
Os SLOs definem o desempenho alvo que quer do seu serviço. Em geral, os SLOs não devem ser superiores ao necessário ou significativo. Se os seus utilizadores não conseguirem distinguir a diferença entre uma disponibilidade de 99% e uma disponibilidade de 99,9% do seu serviço, use o valor mais baixo como o SLO. O valor mais elevado é mais caro de alcançar e não faz diferença para os seus utilizadores. Um serviço necessário para atingir um objetivo de SLO de 100% não tem margem de erro. Definir um SLO deste tipo é uma má prática.
Normalmente, os SLOs são mais rigorosos do que os compromissos públicos ou contratuais. Quiser que um SLO seja mais rigoroso do que um compromisso público. Desta forma, se acontecer algo que cause uma violação do SLO, tem conhecimento e corrige o problema antes que cause uma violação de um compromisso ou contrato. A violação de um compromisso ou um contrato pode ter implicações reputacionais, financeiras ou legais. Um SLO faz parte de um sistema de aviso antecipado para evitar que isso aconteça.
Períodos de conformidade
Existem dois tipos de períodos de conformidade para os SLOs:
- Períodos com base no calendário (de data a data)
- Períodos contínuos (de há n dias até agora, em que n varia entre 1 e 30 dias)
Períodos de conformidade com base no calendário
Os períodos de conformidade podem ser definidos como períodos do calendário, como uma semana ou um mês.
O período de conformidade e o orçamento de erro são repostos em limites de calendário conhecidos.
Para ver os valores possíveis, consulte CalendarPeriod
.
Com um período do calendário, recebe uma pontuação de desempenho no final do período. Medida em função do limite de desempenho, a classificação de desempenho permite-lhe saber se o seu serviço estava em conformidade ou não. Quando usa um período do calendário, só recebe uma classificação de conformidade uma vez por período de conformidade, mesmo que veja o desempenho ao longo do período. No entanto, a pontuação no final do período dá-lhe um valor fácil de ler que corresponde facilmente aos seus períodos de faturação de clientes (se tiver clientes pagantes externos).
Tal como os meses num calendário, os períodos de conformidade mensais variam no número de dias que abrangem.
Períodos de conformidade baseados em intervalos variáveis
Também pode medir a conformidade durante um período contínuo para que esteja sempre a avaliar, por exemplo, os últimos 30 dias. Com um período contínuo, os dados mais antigos no cálculo anterior são excluídos do cálculo atual e substituídos por novos dados.
Com um período contínuo, recebe mais medições de conformidade. Ou seja, recebe uma medição de conformidade para os últimos 30 dias, em vez de uma por mês. Os serviços podem transitar entre a conformidade e a não conformidade à medida que o estado do SLO muda diariamente, uma vez que os pontos de dados antigos são ignorados e são adicionados novos.
Conformidade em SLOs baseados em pedidos e janelas
A determinação da conformidade de um SLO depende de dois fatores:
- Como é determinado o período de conformidade. Esta determinação é abordada em Períodos de conformidade.
- O tipo de SLO. Existem dois tipos de SLOs:
- SLOs baseados em pedidos
- SLOs baseados no Windows
A conformidade é a proporção de eventos válidos em relação ao total de eventos, medida ao longo do período de conformidade. O tipo de SLO determina o que constitui um "evento".
Se o seu SLO for de 99,9%, está a cumpri-lo se a sua conformidade for, pelo menos, de 99,9%. O valor máximo é de 100%.
SLOs baseados em pedidos
Um SLO baseado em pedidos baseia-se num SLI definido como a relação entre o número de pedidos válidos e o número total de pedidos. Um SLO baseado em pedidos é cumprido quando essa relação cumpre ou excede o objetivo para o período de conformidade.
Por exemplo, considere o seguinte SLO baseado em pedidos: "A latência é inferior a 100 ms para, pelo menos, 95% dos pedidos". Um bom pedido é aquele com um tempo de resposta inferior a 100 ms, pelo que a medida de conformidade é a fração de pedidos com tempos de resposta inferiores a 100 ms. O serviço está em conformidade se esta fração for, pelo menos, 0,95.
Os SLOs baseados em pedidos dão-lhe uma ideia da percentagem de trabalho que o seu serviço fez corretamente durante todo o período de conformidade, independentemente da forma como a carga foi distribuída durante o período de conformidade.
SLOs baseados no Windows
Um SLO baseado em janelas baseia-se num INS definido como a relação entre o número de intervalos de medição que cumprem um determinado critério de qualidade e o número total de intervalos. Um SLO baseado no Windows é cumprido quando essa proporção cumpre ou excede o objetivo para o período de conformidade.
Por exemplo, considere este SLO: "A métrica de latência do percentil 95 é inferior a 100 ms durante, pelo menos, 99% dos intervalos de 10 minutos". Um bom período de medição é um intervalo de 10 minutos em que 95% dos pedidos têm uma latência inferior a 100 ms. A medida de conformidade é a fração desses bons períodos. O serviço está em conformidade se esta fração for, pelo menos, 0,99.
Por outro lado, suponhamos que configura o período de conformidade para ser de 30 dias consecutivos, o intervalo de medição para ser de um minuto e o objetivo do SLO para ser de 99%. Para cumprir este SLO, o seu serviço tem de ter 42 768 intervalos "bons" de 43 200 minutos (99% do número de minutos em 30 dias).
Um SLO baseado em janelas dá-lhe uma ideia da percentagem de tempo em que os seus clientes consideraram que o serviço estava a funcionar bem ou mal. Este tipo de SLO pode ocultar os efeitos do comportamento "explosivo": um intervalo de medição que falhou em todas as chamadas conta para o SLO tanto quanto um intervalo de medição que teve um erro a mais. Além disso, os intervalos com um número baixo de chamadas contam para o SLO tanto quanto um intervalo de medição com atividade intensa.
Trajetória das margens de erro
A margem de erro é a diferença entre 100% de bom serviço e o seu SLO, o nível desejado de bom serviço. A diferença entre eles é a sua margem de manobra.
Em geral, uma margem de erro começa como um valor máximo e diminui ao longo do tempo, acionando uma violação do SLO quando a margem de erro desce abaixo de 0.
Existem algumas exceções notáveis a este padrão:
Se tiver um SLO baseado em pedidos medido durante um período de conformidade do calendário e o serviço tiver aumentado a atividade durante o período de conformidade, a margem de erro restante pode, na verdade, aumentar.
Como é que isto é possível? O sistema de SLO não consegue saber antecipadamente a quantidade de atividade que o serviço vai ter em cada período de conformidade, pelo que extrapola um valor provável. Este valor é a proporção de chamadas até ao momento atual em relação ao tempo decorrido desde o início do período de conformidade, multiplicado pela duração do período de conformidade.
À medida que a taxa de atividade aumenta, o tráfego esperado para o período também aumenta e, como resultado, a margem de erro aumenta.
Se estiver a medir um SLO durante um período de conformidade contínuo, está efetivamente sempre no final de um período de conformidade. Em vez de começar do zero, os pontos de dados antigos são continuamente eliminados e os novos pontos de dados são continuamente adicionados.
Se um período de não conformidade sair do período de conformidade e, se o momento atual, que o substitui, estiver em conformidade, o orçamento de erro aumenta. Em qualquer momento, uma margem de erro ≥ 0 indica um período de SLO contínuo em conformidade e uma margem de erro < 0 indica um período de SLO contínuo não em conformidade.
Monitorizar a margem de erro
Pode criar políticas de alerta para receber avisos de que o seu orçamento de erros está a ser consumido a uma taxa mais rápida do que a desejada. Consulte o artigo Alertas sobre o seu orçamento de erros para mais informações.
O que se segue?
- Microsserviços descreve os microsserviços e como usar a consola para configurar, ver e gerir os seus microsserviços. Google Cloud
- Alertas sobre a taxa de consumo descreve como monitorizar os seus SLIs para receber alertas sobre possíveis problemas.
- O artigo Trabalhar com a API SLO mostra como usar a API SLO, um subconjunto da API Cloud Monitoring, para criar serviços, SLOs e estruturas relacionadas.