Diretrizes de monitoramento de clusters

Visão geral

Neste guia, fornecemos diretrizes sobre o que monitorar e como monitorar uma implantação da Apigee híbrida. Ele é destinado a administradores de clusters híbridos e administradores da organização.

Se você não estiver familiarizado com o monitoramento do Google Cloud, consulte a documentação do Google Cloud Monitoring para Criar gráficos com o Metrics Explorer e Como os alertas funcionam.

Os clusters da Apigee híbrida fornecem métricas de SLI (indicador de nível de serviço) para ajudar você a entender o desempenho dos serviços do aplicativo e do sistema a qualquer momento. Veja a lista completa de métricas disponíveis.

O Google Cloud Monitoring usa o Tipo de recurso para identificar todas as métricas de SLI. Há três tipos de recursos comuns usados para todas as métricas da Apigee híbrida.

  • k8s_container para métricas no nível do sistema.
  • ProxyV2 para métricas do proxy da API Apigee.
  • TargetV2 para métricas de destino da API Apigee

Os tipos de recurso têm rótulos comuns que se aplicam a todas as métricas associadas. Por exemplo, todas as métricas com o tipo de recurso k8s_container têm rótulos cluster_name, pod_name e container_name disponíveis, além dos rótulos de métricas. Uma combinação de rótulos de tipo de recurso e de métricas precisa ser usada para monitorar efetivamente a integridade e o desempenho do cluster.

Limite de alerta: em um mundo perfeito, os limites de alerta seriam óbvios, e a documentação fornecida listaria os valores que devem acionar os alertas. Na realidade, é menos óbvio para a Apigee definir: o que é um desempenho aceitável e o que é uma utilização perigosa de recursos de serviços e infraestruturas. Os valores de limite de alerta variam muito de acordo com determinados padrões de tráfego e contratos SLO/SLA.

A otimização e a determinação do limite de alertas são processos contínuos, já que podem ser alteradas com o uso de serviços e infraestrutura. Use o alerta e o limite crítico para notificações e alertas.

  • Íntegra: o valor é inferior ao limite de aviso.
  • Preocupação: valor maior que o limite de aviso, mas menor que o limite crítico.
  • Crítico: valor > Limite crítico.

Os clientes devem usar as ferramentas fornecidas para determinar o limite ideal, sejam os painéis do Cloud Monitoring que os clientes podem criar com o MQL fornecido abaixo ou as análises da Apigee, para identificar a aparência "normal" e ajustar o alerta os limites adequadamente.

O monitoramento de cluster híbrido pode ser categorizado em quatro grupos gerais diferentes, por exemplo, Tráfego, Banco de dados, Plano de controle da Apigee e infraestrutura. As seções a seguir descrevem esses grupos em detalhes:

Tráfego

As métricas de proxy da Apigee e SLI de destino fornecem contagens e latências de solicitação/resposta para proxy de API e destinos. A métrica de SLI de latência da política da Apigee fornece latências de resposta da política. Essas métricas de SLI fornecem cobertura para monitorar o tráfego da API Apigee.

taxa de solicitação

Contagem de solicitações de proxy

Caso de uso: use proxyv2/request_count para monitorar a contagem de solicitações de proxy. O gráfico proxyv2/request_count exibe a taxa de solicitação de proxies. Este gráfico é útil para identificar qual proxy está recebendo uma taxa de solicitação mais alta, padrões de taxa de solicitação e qualquer pico anormal nas chamadas de solicitação de um proxy específico. Qualquer pico anormal no tráfego da API pode ser uma preocupação de segurança em relação a um bot ou ataque a proxies de API. Da mesma forma, uma grande queda na nuvem de tráfego geral indica problemas com clientes ou conectividade de componentes upstream da Apigee.

Tipos de recurso ProxyV2
Métrica proxyv2/request_count
Group By method e todos os rótulos de tipo de recurso ProxyV2
Aggregator ponderada
Consideração de alertas Eventos como alertas de request_count spike/drop anormais
Limite de alerta Nenhum
Consulta MQL do painel do Cloud Monitoring:
fetch apigee.googleapis.com/ProxyV2
| metric 'apigee.googleapis.com/proxyv2/request_count'
| align rate(1m)
| every 1m
| group_by [metric.method],
  [value_request_count_aggregate: aggregate(value.request_count)]

Contagem de solicitações de segmentação

Caso de uso: use targetv2/request_count para monitorar a contagem de solicitações de meta do ambiente de execução da Apigee. O gráfico targetv2/request_count exibe a taxa de solicitação recebida pelo destino da Apigee. Este gráfico pode ser útil para ver qual alvo está recebendo uma taxa de solicitação maior, um padrão de taxa de solicitação e qualquer pico anormal nas chamadas de solicitação de um alvo específico.

Tipos de recurso TargetV2
Métrica targetv2/request_count
Group By method e todos os rótulos de tipo de recurso TargetV2
Aggregator ponderada
Consideração de alertas Eventos como alertas de request_count spike/drop anormais
Limite de alerta Nenhum
Consulta MQL do painel do Cloud Monitoring:
fetch apigee.googleapis.com/TargetV2
| metric 'apigee.googleapis.com/targetv2/request_count'
| align rate(1m)
| every 1m
| group_by [metric.method, metric.type, metric.endpoint],
  [value_request_count_aggregate: aggregate(value.request_count)]

Taxa de erros

Contagem de respostas de erro do proxy

Caso de uso: use o proxyv2/response_count para monitorar a taxa de resposta de erro do proxy. O gráfico proxyv2/response_count exibe a taxa de solicitação do proxy de API. Este gráfico é útil para entender qual proxy está recebendo uma taxa de erros de solicitação mais alta ou qualquer pico de erro anormal nas chamadas de solicitação de um proxy específico.

Tipos de recurso ProxyV2
Métrica proxyv2/response_count
Filtrar por response_code != 200

Use um regex para excluir todos os response_codes 2xx e 3xx, por exemplo:

"response_code !=~ 1.*| 2.*|3.*"
Group By method, response_code, fault_code, fault_source, apigee_fault e todos os rótulos de tipos de recurso ProxyV2
Aggregator ponderada
Consideração de alertas A proporção de erros de resposta do proxy: Total de erros de resposta/Contagem total de respostas.
  • Total de erros de resposta = soma de proxyv2/response_count com filtro response_code != 200
  • Contagem total de respostas = soma de proxyv2/response_count
Limite de alerta Depende do SLO da instalação. As instalações de produção e não produção podem ter limites diferentes. Por exemplo: para produção, acione uma notificação de evento se a proporção de erro 500 da resposta do proxy for 5% por 5 minutos.
Consulta MQL do painel do Cloud Monitoring:
fetch apigee.googleapis.com/ProxyV2
| metric 'apigee.googleapis.com/proxyv2/response_count'
| filter (metric.response_code != '200')
| align rate(1m)
| every 1m
| group_by
  [metric.method, metric.response_code, metric.fault_code,
   metric.fault_source, metric.apigee_fault],
  [value_response_count_aggregate: aggregate(value.response_count)]
Exemplo de política de alertas MQL da política do Google Cloud:
fetch apigee.googleapis.com/ProxyV2::apigee.googleapis.com/proxyv2/response_count
| {
   filter (metric.response_code == '500')
   ;
   ident
}
| group_by drop[metric.response_code ], sliding(5m), .sum
| ratio
| scale '%'
| every (30s)
| condition val() > 5'%'

Contagem de respostas de erro de segmentação

Caso de uso: use targetv2/response_count para monitorar a taxa de resposta de erro do destino da API. O gráfico targetv2/response_count exibe a taxa de solicitação da API Target. Esse gráfico pode ser útil para identificar qual meta está recebendo uma taxa de solicitação maior ou qualquer pico de erros anormal nas chamadas de solicitação.

Tipos de recurso TargetV2
Métrica targetv2/response_count
Filtrar por response_code != 200

Use um regex para excluir todos os response_codes 2xx e 3xx, por exemplo:

"response_code !=~ 1.*| 2.*|3.*"
Group By method e todos os rótulos de tipo de recurso TargetV2
Aggregator ponderada
Consideração de alertas A proporção de erros de resposta do proxy, por exemplo: Total de erros de resposta/Contagem total de respostas.
  • Total de erros de resposta = soma de targetv2/response_count com filtro response_code != 200
  • Contagem total de respostas = soma de targetv2/response_count
Limite de alerta Depende do SLO da instalação. Por exemplo: para produção, acione uma notificação de evento se a proporção de erro de resposta de destino for 5% por três minutos.
Consulta MQL do painel do Cloud Monitoring:
fetch apigee.googleapis.com/TargetV2
| metric 'apigee.googleapis.com/targetv2/response_count'
| filter (metric.response_code != '200')
| align rate(1m)
| every 1m
| group_by
  [metric.method, metric.type, metric.endpoint,
   metric.response_code],
  [value_response_count_aggregate: aggregate(value.response_count)]

Latências

Percentual de latência de proxy

Caso de uso: use o proxyv2/latencies_percentile para monitorar o percentil de latência (p50, p90, p95 e p99) de todas as respostas do proxy de API a uma solicitação. O gráfico proxyv2/latencies_percentile pode ser útil para identificar a latência no proxy de API da Apigee para a latência geral da solicitação de proxy de API.

Tipos de recurso ProxyV2
Métrica proxyv2/latencies_percentile
Filtrar por percentile = p99
Group By method, percentil e todos os rótulos de tipo de recurso ProxyV2
Aggregator p99 (99o percentil)
Consideração de alertas Valor elevado de p99 latencies_percentile.
Limite de alerta Depende do SLO da instalação. Por exemplo, para produção, acione uma notificação de evento se o valor do proxy p99 latencies_percentile for 5 segundos por 5 minutos.
Consulta MQL do painel do Cloud Monitoring:
fetch apigee.googleapis.com/ProxyV2
| metric 'apigee.googleapis.com/proxyv2/latencies_percentile'
| filter (metric.percentile == 'p99')
| group_by 1m,
  [value_latencies_percentile_mean: mean(value.latencies_percentile)]
| every 1m
| group_by [metric.method, metric.percentile],
  [value_latencies_percentile_mean_percentile:
     percentile(value_latencies_percentile_mean, 99)]

Percentil de latências desejadas

Caso de uso: use o targetv2/latencies_percentile para monitorar o percentil de latência (p50, p90, p95 e p99) de todas as respostas de destino do proxy da API a uma solicitação. O gráfico targetv2/latencies_percentile identifica o tempo total que o destino de proxy da API Apigee responde a uma solicitação. Esse valor não inclui a sobrecarga de proxy da API Apigee.

Tipos de recurso TargetV2
Métrica targetv2/latencies_percentile
Filtrar por percentile = p99
Group By method, percentil e todos os rótulos de tipo de recurso TargetV2
Aggregator p99 (99o percentil)
Consideração de alertas Valor elevado de p99 latencies_percentile.
Limite de alerta Depende do SLO da instalação. Por exemplo: no caso de uma produção, acione uma notificação de evento se o valor da meta p99 latencies_percentile for de 5 segundos por 5 minutos.
Consulta MQL do painel do Cloud Monitoring:
fetch apigee.googleapis.com/ProxyV2
| metric 'apigee.googleapis.com/proxyv2/latencies_percentile'
| filter (metric.percentile == 'p99')
| group_by 1m,
  [value_latencies_percentile_mean: mean(value.latencies_percentile)]
| every 1m
| group_by [metric.method, metric.percentile],
  [value_latencies_percentile_mean_percentile:
     percentile(value_latencies_percentile_mean, 99)]

Percentil de latência das políticas

Caso de uso: use o policyv2/latencies_percentile para monitorar o percentil de latência de processamento (p50, p90, p95 e p99) de todas as políticas da Apigee. O gráfico policyv2/latencies_percentile pode ser útil para identificar a latência na política de API da Apigee para a latência geral de solicitação de proxy de API do cliente.

Tipos de recurso ProxyV2
Métrica proxyv2/latencies_percentile
Filtrar por percentile = p99
Group By method, percentil e todos os rótulos de tipo de recurso ProxyV2
Aggregator p99 (99o percentil)
Consideração de alertas Valor elevado de p99 latencies_percentile.
Limite de alerta Depende do SLO da instalação. Por exemplo, para produção, acione uma notificação de evento se o valor do proxy p99 latencies_percentile for 5 segundos por 5 minutos.
Consulta MQL do painel do Cloud Monitoring:
fetch apigee.googleapis.com/ProxyV2
| metric 'apigee.googleapis.com/policyv2/latencies_percentile'
| filter (metric.percentile == 'p99')
| group_by 1m,
  [value_latencies_percentile_mean: mean(value.latencies_percentile)]
| every 1m
| group_by [metric.policy_name, metric.percentile],
  [value_latencies_percentile_mean_aggregate:
     aggregate(value_latencies_percentile_mean)]

Banco de dados

Cassandra

O serviço de banco de dados Cassandra da Apigee tem várias métricas SLI do Cassandra. Essas métricas de SLI podem fornecer monitoramento abrangente do serviço Cassandra da Apigee. No mínimo, junto com o uso de recursos do Cassandra (CPU, Mem e volume de disco), a latência de solicitação de leitura e gravação do cliente precisa ser monitorada para a integridade do serviço do Cassandra.

Taxa de solicitação de leitura do Cassandra

Caso de uso: a métrica de SLI cassandra/clientrequest_rate (com escopo=Read) fornece insights sobre a taxa média de solicitações de leitura dos serviços do Cassandra em qualquer determinado período. Essa métrica ajuda a entender as tendências no nível da atividade de solicitação de leitura dos clientes.

Tipos de recurso k8s_container
Métrica cassandra/clientrequest_rate
Filtrar por scope = Read e unit = OneMinuteRate
Agrupar por scope, unit e todos os rótulos de tipo de recurso k8s_container
Aggregator ponderada
Consideração de alertas Para quaisquer problemas em potencial ou alteração significativa nos padrões de consulta dos clientes: por exemplo, aumento ou queda repentino e inesperado na taxa de solicitações de leitura.
Limite de alerta Nenhum
Consulta MQL do painel do Cloud Monitoring:
fetch k8s_container
| metric 'apigee.googleapis.com/cassandra/clientrequest_latency'
| filter (metric.scope == 'Read' && metric.unit == 'OneMinuteRate')
| group_by 1m,
  [value_clientrequest_latency_mean: mean(value.clientrequest_latency)]
| every 1m
| group_by [metric.scope, metric.unit],
  [value_clientrequest_latency_mean_aggregate:
     aggregate(value_clientrequest_latency_mean)]

Taxa de solicitação de gravação do Cassandra

Caso de uso: a métrica de SLI cassandra/clientrequest_rate (com escopo=Write) fornece insights sobre a taxa média de solicitações de gravação dos serviços do Cassandra a qualquer momento. Essa métrica ajuda a entender as tendências de nível de atividade da solicitação de gravação dos clientes.

Tipos de recurso k8s_container
Métrica cassandra/clientrequest_rate
Filtrar por scope = Read e unit = OneMinuteRate
Agrupar por scope, unit e todos os rótulos de tipo de recurso k8s_container
Aggregator ponderada
Consideração de alertas Em caso de possíveis problemas ou mudanças significativas nos padrões de consulta dos clientes, por exemplo, um aumento ou uma queda inesperada e inesperada em solicitações de gravação que justificam uma investigação mais aprofundada.
Limite de alerta Nenhum
Consulta MQL do painel do Cloud Monitoring:
fetch k8s_container
| metric 'apigee.googleapis.com/cassandra/clientrequest_latency'
| filter (metric.scope == 'Write' && metric.unit == 'OneMinuteRate')
| group_by 1m,
  [value_clientrequest_latency_mean: mean(value.clientrequest_latency)]
| every 1m
| group_by [metric.scope, metric.unit],
  [value_clientrequest_latency_mean_aggregate:
     aggregate(value_clientrequest_latency_mean)]

Latência de solicitação de leitura do Cassandra

Caso de uso: a métrica de SLI cassandra/clientrequest_latency (com escopo=Read) fornece latência de solicitação de leitura dos serviços Cassandra (no percentil 99, 95 ou 75) do Cassandra. Essas métricas ajudam na visualização geral do desempenho do Cassandra e podem indicar alterações nos padrões de uso ou problemas que se manifestam ao longo do tempo.

Tipos de recurso k8s_container
Métrica cassandra/clientrequest_latency
Filtrar por scope = Read e unit = 99thPercentile
Agrupar por scope, unit e todos os rótulos de tipo de recurso k8s_container
Aggregator ponderada
Consideração de alertas Se a leitura solicita latência a SLI mostra consistentemente a latência do 99o percentil aumentando continuamente.
Limite de alerta Depende do seu SLO para os serviços do Cassandra. Por exemplo: na produção, acione uma notificação de evento se o valor de clientrequest_latency lido de 99thPercentile for 5 segundos por 3 minutos.
Consulta MQL do painel do Cloud Monitoring:
fetch k8s_container
| metric 'apigee.googleapis.com/cassandra/clientrequest_latency'
| filter (metric.scope == 'Read' && metric.unit == '99thPercentile')
| group_by 1m,
  [value_clientrequest_latency_mean: mean(value.clientrequest_latency)]
| every 1m
| group_by [metric.scope, metric.unit],
  [value_clientrequest_latency_mean_aggregate:
     aggregate(value_clientrequest_latency_mean)]

Latência da solicitação de gravação do Cassandra

Caso de uso: o cassandra/clientrequest_latency (com escopo=Write) a métrica SLI fornece latência de solicitação de gravação nos serviços do Cassandra (no percentil 99, 95 ou 75). Essas métricas ajudam na visualização geral do desempenho do Cassandra e podem indicar mudanças nos padrões de uso ou problemas que se manifestam ao longo do tempo.

Tipos de recurso k8s_container
Métrica cassandra/clientrequest_latency
Filtrar por scope = Write e unit = 99thPercentile
Agrupar por scope, unit e todos os rótulos de tipo de recurso k8s_container
Aggregator ponderada
Consideração de alertas Se a latência das solicitações de gravação aparecer consistentemente, a latência do 99o percentil continuará crescendo.
Limite de alerta Depende do seu SLO para os serviços do Cassandra. Por exemplo: na produção, acione uma notificação de evento se o valor de gravação clientrequest_latency de 99thPercentile for 5 segundos por 3 minutos
Consulta MQL do painel do Cloud Monitoring:
fetch k8s_container
| metric 'apigee.googleapis.com/cassandra/clientrequest_latency'
| filter (metric.scope == 'Write' && metric.unit == '99thPercentile')
| group_by 1m,
  [value_clientrequest_latency_mean: mean(value.clientrequest_latency)]
| every 1m
| group_by [metric.scope, metric.unit],
  [value_clientrequest_latency_mean_aggregate:
     aggregate(value_clientrequest_latency_mean)]

Plano de controle da Apigee

As métricas de SLI do serviço de sincronização do Apigee fornecem contagens e latências de solicitação e resposta entre o plano de controle da Apigee e o plano de ambiente de execução híbrido. Espera-se que as instâncias do sincronizador em execução no plano de ambiente de execução pesquisem o plano de controle regularmente, façam o download dos contratos e disponibilizem o mesmo para instâncias de ambiente de execução locais.

Taxa de solicitação

Contagem de solicitações upstream

Caso de uso: as métricas upstream/request_count indicam o número de solicitações feitas pelo serviço de sincronização ao plano de controle da Apigee.

Tipos de recurso k8s_container
Métrica upstream/request_count
Filtrar por container_name = apigee-synchronizer e type = CONTRACT
Agrupar por method, type, container_name e todos os rótulos de tipo de recurso k8s_container
Aggregator ponderada
Consideração de alertas Use este tráfego para anomalias, como um alerta de pico anormal de request_count ou queda.
Limite de alerta Nenhum
Consulta MQL do painel do Cloud Monitoring:
fetch k8s_container
| metric 'apigee.googleapis.com/upstream/request_count'
| filter
  (resource.container_name == 'apigee-synchronizer')
  && (metric.type == 'CONTRACT')
| align rate(1m)
| every 1m
| group_by [metric.method, metric.type, resource.container_name],
  [value_request_count_aggregate: aggregate(value.request_count)]

Taxa de erros

Contagem de respostas upstream

Caso de uso: a métrica de SLI upstream/response_count fornece o número de respostas recebidas pelos serviços de sincronização do plano de controle da Apigee. Este gráfico pode ser útil para identificar qualquer problema de conectividade ou configuração entre o plano do ambiente de execução híbrido da Apigee e o plano de controle.

Tipos de recurso k8s_container
Métrica upstream/request_count
Filtrar por method, response_type, container_name e todos os rótulos de tipo de recurso k8s_container
Agrupar por
Aggregator ponderada
Consideração de alertas Se houver erros em métricas upstream/response_count com códigos de resposta diferentes de 200 retornados do plano de controle da Apigee, será necessária uma investigação mais detalhada desses erros.
Limite de alerta Depende do seu SLO para os serviços do Cassandra. Por exemplo: na produção, acione uma notificação de evento se o sincronizador tiver mais de um erro response_code a cada três minutos.
Consulta MQL do painel do Cloud Monitoring:
fetch k8s_container
| metric 'apigee.googleapis.com/upstream/response_count'
| filter
  (resource.container_name == 'apigee-synchronizer')
  && (metric.response_code != '200' && metric.type == 'CONTRACT')
| align rate(1m)
| every 1m
| group_by
  [metric.method, metric.response_code, metric.type, resource.container_name],
  [value_response_count_aggregate: aggregate(value.response_count)]

Infraestrutura

O GKE e outras plataformas do Kubernetes fornecem métricas de SLI no nível do sistema. Os rótulos de métricas de SLI podem ser filtrados e agrupados para monitorar um contêiner específico e o uso de recursos dele. Para monitorar a disponibilidade e a integridade da infraestrutura do cluster de ambiente de execução da Apigee, um administrador de cluster pode monitorar o uso do recurso do pod e do contêiner, como contagens de CPU, Mem, disco e reinicialização de contêiner. Consulte a documentação do GKE para mais detalhes sobre métricas e rótulos disponíveis.

A tabela a seguir lista alguns dos serviços e os contêineres que você pode monitorar para cada serviço.

Nome do serviço Nome do contêiner
Cassandra apigee-cassandra
Processador de mensagens (MP) apigee-runtime
Sincronizador apigee-synchronizer
Telemetria apigee-prometheus-app
apigee-prometheus-proxy
apigee-prometheus-agg
apigee-stackdriver-exporter

Contêineres/pods

Reiniciar contagem

Caso de uso: a métrica SLI do sistema kubernetes.io/container/restart_count fornece o número de vezes que um contêiner é reiniciado. Este gráfico pode ser útil para identificar se um contêiner está falhando/reiniciando com frequência. O contêiner de serviço específico pode ser filtrado por rótulos de métricas para o monitoramento de contêiner de um serviço específico.

Veja a seguir como usar a métrica kubernetes.io/container/restart_count para o contêiner do Cassandra. Você pode usar essa métrica para qualquer um dos contêineres na tabela acima.

Tipos de recurso k8s_container
Métrica kubernetes.io/container/restart_count
Filtrar por namespace_name = apigee e container_name =~ .*cassandra.*
Agrupar por cluster_name, namespace_name, pod_name, container_name e todos os rótulos de tipo do recurso k8s_container
Aggregator ponderada
Consideração de alertas Se um contêiner for reiniciado com frequência, será necessário realizar uma investigação mais detalhada para a causa raiz. Um contêiner pode ser reiniciado por vários motivos, como OOMKilled, disco de dados cheio e problemas de configuração, entre outros.
Limite de alerta Depende do SLO da instalação. Por exemplo, para produção, acione uma notificação de evento se um contêiner for reiniciado com mais frequência do que cinco vezes em 30 minutos.
Consulta MQL do painel do Cloud Monitoring:
fetch k8s_container
| metric 'kubernetes.io/container/restart_count'
| filter
  (resource.container_name =~ '.*cassandra.*'
   && resource.namespace_name == 'apigee')
| align rate(1m)
| every 1m
| group_by
  [resource.cluster_name, resource.namespace_name, resource.pod_name,
   resource.container_name],
  [value_restart_count_aggregate: aggregate(value.restart_count)]