Conceitos no monitoramento de serviços

O monitoramento de serviços e a API SLO ajudam você a gerenciar seus serviços como o Google. Entre as ideias centrais do monitoramento de serviços estão:

  • a seleção de métricas que atuam como indicadores de nível de serviço (SLIs);
  • o uso de SLIs para definir objetivos de nível de serviço (SLOs) para os valores de SLI;
  • o uso do erro de orçamento indicado pelo SLO para reduzir o risco no seu serviço.

Esta página apresenta esses conceitos e descreve alguns fatores que devem ser considerados ao criar um SLO. As outras páginas desta seção colocam esses conceitos em prática.

Terminologia

O monitoramento de serviço tem um conjunto de conceitos fundamentais, apresentados aqui:

  • Indicador de nível de serviço (SLI): uma medida de desempenho.
  • Objetivo de nível de serviço (SLO, na sigla em inglês): uma instrução do desempenho esperado.
  • Margem de orçamento: começa em 1: SLO e diminui à medida que o desempenho real não inclui o SLO.

Indicadores de nível de serviço

O Cloud Monitoring coleta métricas que medem o desempenho da infraestrutura de serviços. Exemplos de métricas de desempenho incluem:

  • Contagem de solicitações: por exemplo, o número de solicitações 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 em um conjunto de tipos de serviços conhecidos: Cloud Service Mesh, Istio no Google Kubernetes Engine e App Engine. Também é possível definir seu próprio tipo de serviço e selecionar métricas de desempenho para ele.

As métricas de desempenho são a base dos SLIs do seu serviço. Um SLI descreve o desempenho de algum aspecto do seu serviço. Para serviços no Cloud Service Mesh, Istio no Google Kubernetes Engine e App Engine, os SLIs úteis já são conhecidos. Por exemplo, se o serviço tiver métricas de contagem de solicitações ou de latências de resposta, será possível derivar indicadores de nível de serviço (SLIs) padrão dessas métricas criando relações da seguinte forma:

  • Um SLI de disponibilidade é a relação entre o número de respostas bem-sucedidas e o número total de respostas.
  • Um SLI de latência é a relação entre o número de chamadas abaixo do limite de latência e o número total de chamadas.

Também é possível configurar SLIs de serviços específicos para alguma outra medida do que significa “bom desempenho”. Esses SLIs geralmente se enquadram em duas categorias:

  • SLIs com base em solicitações, em que o bom serviço é medido pela contagem de unidades atômicas de serviço, como o número de solicitações HTTP bem-sucedidas.
  • SLIs baseados em janelas, em que o bom serviço é medido pela contagem do número de períodos ou janelas, em que o desempenho atende a um critério de qualidade, como latência de resposta abaixo de um determinado limite.

Esses SLIs são descritos em mais detalhes em Conformidade em SLOs com base em solicitações e em janelas.

Para exemplos que criam SLIs para serviços selecionados, consulte Como criar SLIs a partir de métricas.

Objetivos de nível de serviço

Um SLO é um valor de destino de um SLI, medido durante um período. O serviço determina os SLIs disponíveis e você especifica SLOs com base nos SLIs. O SLO define o que se qualifica como um bom serviço. É possível criar até 500 SLOs para cada serviço no Cloud Monitoring.

Eles são criados de acordo com os tipos de informação a seguir.

  • Um SLI, que avalia o desempenho do serviço
  • Uma meta de desempenho, que especifica o nível desejado de desempenho
  • Um período, chamado de período de conformidade, para medir como o SLI se compara com a meta de desempenho

Por exemplo, você pode ter requisitos como estes:

  • A latência pode exceder 300 ms em apenas 5% das solicitações durante um período contínuo de 30 dias.
  • O sistema precisa ter 99% de disponibilidade medida ao longo de uma semana.

Requisitos como esses podem ser a base para os SLOs. Consulte Como criar e usar SLOs para orientações sobre como configurar bons SLOs.

As alterações na conformidade com o SLO também podem indicar o início de falhas. O monitoramento dessas alterações oferece um alerta para que você corrija o problema antes que ele seja disseminado. Assim, as políticas de alerta geralmente são usadas para monitorar a conformidade com o SLO. Para mais informações, consulte Como criar alertas de erros de orçamento.

Um SLO útil segmenta menos de 100%, porque o SLO determina seu erro de orçamento. Os SLOs normalmente são descritos como um “número de noves”: 99% (2 noves), 99,9% (3 noves), e assim por diante. O valor mais alto que se pode definir é de 99,9%, mas também é possível usar qualquer valor mais baixo que seja apropriado para o serviço.

Erros de orçamento

Um SLO especifica o grau de desempenho de um serviço durante um período de conformidade. O que sobrar no período de conformidade será o erro de orçamento. O erro de orçamento quantifica o grau em que o desempenho de um serviço pode falhar durante o período de conformidade e ainda atender ao SLO.

Os erros de orçamento permitem que você monitore quantos eventos individuais inválidos (como solicitações) podem ocorrer durante o restante do período de conformidade antes de violar o SLO. Use o erro de orçamento para ajudar a gerenciar tarefas de manutenção, como a implantação de novas versões. Se o erro de orçamento estiver quase esgotado, tomar medidas arriscadas, como enviar novas atualizações, poderá resultar na violação de um SLO.

O erro de orçamento de um período de conformidade é (1 - meta de SLO) × (eventos qualificados no período de conformidade). Por exemplo, se o SLO for para 85% das solicitações serem boas em um período de sete dias, o erro de orçamento permitirá que 15% dessas solicitações sejam inválidas. Se você recebeu, digamos, 60.480 solicitações na semana passada, seu erro de orçamento é de 15% desse total, ou seja, há 9.072 solicitações com permissão incorreta. Se você tiver exibido mais erros do que isso, o serviço estará fora do SLO pelo período de conformidade de sete dias.

Como criar e usar SLOs

O que compõe um bom SLO? O que você deve considerar ao fazer as escolhas? Esta seção fornece uma visão geral sobre alguns dos conceitos gerais por trás da criação e do uso de SLOs. Este tema é abordado mais detalhadamente em Engenharia de confiabilidade do site: como o Google executa sistemas de produção, no capítulo sobre SLOs.

Os SLOs definem o desempenho desejado do seu serviço. Em geral, os SLOs não precisam ser maiores que o necessário ou significativo. Se os usuários não souberem a diferença entre 99% de disponibilidade e 99,9% de disponibilidade do serviço, use o menor valor como SLO. O valor mais alto é mais caro de atender e não fará diferença para seus usuários. Um serviço necessário para atingir uma meta de 100% de SLO não tem erro de orçamento. Definir esse SLO é uma prática não recomendada.

Em geral, os SLOs são mais rigorosos que compromissos públicos ou contratuais. Você quer que um SLO seja mais restrito do que um compromisso público. Dessa forma, se ocorrer algo que cause violação do SLO, você estará ciente e corrigirá o problema antes que ele cause uma violação de um compromisso ou contrato. A violação de um compromisso ou contrato pode ter implicações jurídicas, financeiras ou de reputação. O SLO faz parte de um sistema de alerta antecipado para evitar que isso aconteça.

Períodos de conformidade

Há dois tipos de períodos de conformidade para SLOs:

  • Períodos com base no calendário (de uma data a outra)
  • Períodos contínuos (de n dias atrás até agora, em que n varia de 1 a 30 dias)

Períodos de conformidade com base no calendário

Os períodos de conformidade podem ser definidos seguindo o calendário, como uma semana ou um mês. O período de conformidade e o erro de orçamento são redefinidos em limites conhecidos do calendário. Para os valores possíveis, consulte CalendarPeriod.

Com um período do calendário, você recebe uma pontuação de desempenho no final dele. A pontuação de desempenho é medida em relação ao limite de desempenho e informa se o serviço foi ou não compatível. Ao usar um período do calendário, você só recebe uma classificação de conformidade por período, mesmo que veja o desempenho ao longo do período. No entanto, a pontuação de fim de período oferece um valor fácil de ler que combina facilmente com os períodos de faturamento do cliente (se você tiver clientes externos pagantes).

Assim como os meses de um calendário, os períodos mensais de conformidade variam no número de dias abordados.

Períodos de conformidade baseados na janela contínua

Também é possível avaliar a conformidade durante um período contínuo, assim você estará sempre avaliando, por exemplo, os últimos 30 dias. Com um período contínuo, os dados mais antigos no cálculo anterior saem do cálculo atual e os novos dados os substituem.

Com uma janela contínua, você obtém mais medidas de conformidade. Ou seja, você tem uma medida de conformidade dos últimos 30 dias, em vez de uma por mês. Os serviços podem fazer a transição entre conformidade e não conformidade, já que o status do SLO é alterado diariamente conforme os pontos de dados antigos são descartados e trocados por novos.

Conformidade em SLOs com base em solicitações e em janelas

Determinar se um SLO está em conformidade depende de dois fatores:

  • Como o período de conformidade é determinado. Essa determinação é discutida em períodos de conformidade.
  • O tipo de SLO. Existem dois tipos de SLOs:
    • SLOs baseados em solicitações
    • SLOs baseados em janelas

Conformidade é a relação entre eventos válidos e o total de eventos, medida durante o período de conformidade. O tipo de SLO determina o que constitui um “evento”.

Se o SLO for de 99,9%, você o atenderá se a conformidade for de pelo menos 99,9%. O valor máximo é 100%.

SLOs baseados em solicitações

Um SLO baseado em solicitação tem como base um SLI definido como a relação entre o número de solicitações válidas e o número total de solicitações. Este tipo de SLO é alcançado quando essa relação atinge ou supera a meta do período de conformidade.

Por exemplo, considere este SLO baseado em solicitação: “A latência está abaixo de 100 ms em pelo menos 95% das solicitações”. Uma boa solicitação é uma com um tempo de resposta inferior a 100 ms. Portanto, a medida de conformidade é a fração de solicitações com tempos de resposta inferiores a 100 ms. O serviço será compatível se essa fração for de pelo menos 0,95.

Os SLOs baseados em solicitações dão uma ideia da porcentagem de trabalho que seu serviço realizou corretamente durante todo o período de conformidade, não importa como a carga tenha sido distribuída ao longo do período.

SLOs baseados em janelas

Um SLO baseado em janela tem como base um SLI definido como a relação entre o número de intervalos de medição que atende a algum critério de qualidade e o número total de intervalos. Um SLO baseado em janela é alcançado quando essa relação atinge ou supera a meta do período de conformidade.

Por exemplo, considere este SLO: “A métrica do 95º percentil de latência é inferior a 100 ms em pelo menos 99% das janelas de 10 minutos”. Um bom período de medição é um período de 10 minutos em que 95% das solicitações têm latência abaixo de 100 ms. A medida de conformidade é a fração de tais bons períodos. O serviço estará em conformidade se essa fração for de pelo menos 0,99.

Em outro exemplo, suponha que você configure o período de conformidade como 30 dias consecutivos, o intervalo de medição como um minuto e a meta do SLO como 99%. Para atender a esse SLO, o serviço precisa ter 42.768 intervalos “válidos” de 43.200 minutos (99% do número de minutos em 30 dias).

Um SLO baseado em janelas dá uma ideia da porcentagem do tempo em que seus clientes consideraram que o serviço estava funcionando bem ou mal. Esse tipo de SLO pode ocultar os efeitos do comportamento “oscilante”: um intervalo de medição que falhou em todas as chamadas conta tanto no SLO quanto um intervalo de medição que teve um erro a mais. Além disso, intervalos com um número baixo de chamadas contam tanto para o SLO quanto um intervalo de medição com atividade intensa.

Trajetória de erros de orçamento

O erro de orçamento é a diferença entre 100% de serviços válidos e o SLO, o nível desejado de serviço de qualidade. A diferença entre eles é a margem de erro.

Em geral, um erro de orçamento começa como um valor máximo e cai ao longo do tempo, acionando uma violação de SLO quando fica abaixo de zero.

Há algumas exceções notáveis a esse padrão:

  • Se você tiver um SLO baseado em solicitação medido durante um período de conformidade e as atividades do serviço aumentarem durante esse período, o erro de orçamento restante poderá aumentar.

    Como isso é possível? O sistema SLO não pode saber com antecedência quanto de atividade o serviço terá em cada período de conformidade. Portanto, ele extrapola um valor provável. Esse valor é a proporção de chamadas até o momento atual durante o 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, consequentemente, o erro de orçamento aumenta.

  • Se você estiver avaliando um SLO durante um período de conformidade contínuo, sempre estará efetivamente no final de um período de conformidade. Em vez de começar do zero, pontos de dados antigos são descartados e novos pontos de dados são adicionados continuamente.

    Se um período de baixa conformidade sair da janela de conformidade e se o momento atual que o substituir estiver em conformidade, o erro de orçamento vai aumentar. A qualquer momento, um erro de orçamento ≥ 0 indica uma janela SLO contínua em conformidade, e um erro de orçamento < 0 indica uma janela SLO contínua em não conformidade.

Como monitorar seu erro de orçamento

É possível criar políticas de alertas para avisar que o erro de orçamento está sendo consumido mais rápido do que a taxa desejada. Para mais informações, consulte Alertas sobre o erro de orçamento.

O que vem depois

  • Os microsserviços descrevem microsserviços e como usar o Console do Google Cloud para configurar, visualizar e gerenciar seus microsserviços.
  • A seção Alertas sobre a taxa de queima descreve como monitorar seus SLIs para que você seja avisado sobre possíveis problemas.
  • Como 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.