Diretrizes de monitorização de clusters

Vista geral

Este guia fornece diretrizes sobre o que monitorizar e como monitorizar uma implementação do Apigee Hybrid. Destina-se a administradores de clusters híbridos e administradores da organização.

Se for um utilizador recente do Google Cloud Monitoring, consulte a documentação do Google Cloud Monitoring para: criar gráficos com o explorador de métricas e como funcionam os alertas.

Os clusters do Apigee Hybrid fornecem métricas de INS (indicador do nível de serviço) para ajudar a compreender o desempenho dos serviços de aplicações e de sistemas em qualquer altura. Pode ver uma lista completa de métricas disponíveis.

O Google Cloud Monitoring usa o tipo de recurso para identificar todas as métricas de SLI. Existem três tipos de recursos comuns usados para todas as métricas do Apigee Hybrid.

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

Os tipos de recursos têm etiquetas 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 as etiquetas cluster_name, pod_name e container_name disponíveis para utilização, além das etiquetas de métricas. Deve usar uma combinação de etiquetas de tipo de recurso e etiquetas de métricas para monitorizar eficazmente o estado e o desempenho do cluster.

Limite de alerta: num mundo perfeito, os limites de alerta seriam óbvios e a documentação fornecida indicaria os valores que devem acionar alertas. Na realidade, é menos óbvio para o 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 consoante os padrões de tráfego específicos e os contratos de SLO/SLA.

A otimização e a determinação do limite de alerta são um processo contínuo, uma vez que podem mudar com a utilização do serviço e da infraestrutura. Use o limite de aviso e crítico para notificações e alertas.

  • Em bom estado: o valor é inferior ao limite de aviso.
  • Preocupante: valor superior ao limite de aviso, mas inferior ao limite crítico.
  • Crítico: valor > limite crítico.

Os clientes devem usar as ferramentas fornecidas para determinar o limite ideal, quer sejam os painéis de controlo do Cloud Monitoring que os clientes podem criar com o MQL fornecido abaixo ou as estatísticas do Apigee, para identificar o que é "normal" e, em seguida, ajustar os limites dos alertas em conformidade.

A monitorização de clusters híbridos pode ser categorizada em quatro grupos gerais diferentes, por exemplo, monitorização de tráfego, base de dados, plano de controlo do Apigee e infraestrutura. As secções seguintes descrevem estes grupos em detalhe:

Trânsito

As métricas SLI de proxy e destino do Apigee fornecem contagens de pedidos/respostas e latências para o proxy e os destinos da API. A métrica SLI de latência da política do Apigee fornece latências de resposta da política. Estas métricas de SLI oferecem cobertura para a monitorização do tráfego da API Apigee.

Taxa de pedidos

Contagem de pedidos de proxy

Exemplo de utilização: use o elemento proxyv2/request_count para monitorizar a contagem de pedidos de proxy. O gráfico proxyv2/request_count apresenta a taxa de pedidos de proxies. Este gráfico é útil para identificar que proxy está a receber uma taxa de pedidos mais elevada, padrões de taxa de pedidos e qualquer pico anormal em chamadas de pedidos para um proxy específico. Qualquer pico anormal inesperado no tráfego da API pode ser um problema de segurança relacionado com um bot ou um ataque a proxies de API. Da mesma forma, uma grande diminuição no tráfego geral da nuvem indica problemas com os clientes ou a conetividade dos componentes upstream do Apigee.

Tipos de recursos ProxyV2
Métrica proxyv2/request_count
Agrupar por method e todas as etiquetas do tipo de recurso ProxyV2
Agregador soma
Consideração de alertas Eventos como alertas de aumento/diminuição anormal de request_count
Limite de alerta Nenhum
Consulta MQL do painel de controlo 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 pedidos de segmentação

Exemplo de utilização: use o targetv2/request_count para monitorizar a contagem de pedidos do destino de tempo de execução do Apigee. O gráfico targetv2/request_count apresenta a taxa de pedidos recebida pelo destino do Apigee. Este gráfico pode ser útil para ver que alvo está a receber uma taxa de pedidos mais elevada, o padrão da taxa de pedidos e qualquer pico anormal nas chamadas de pedidos para um alvo específico.

Tipos de recursos TargetV2
Métrica targetv2/request_count
Agrupar por method e todas as etiquetas do tipo de recurso TargetV2
Agregador soma
Consideração de alertas Eventos como alertas de aumento/diminuição anormal de request_count
Limite de alerta Nenhum
Consulta MQL do painel de controlo 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 de proxy

Exemplo de utilização: use o proxyv2/response_count para monitorizar a taxa de respostas de erro do proxy. O gráfico proxyv2/response_count apresenta a taxa de pedidos do proxy de API. Este gráfico é útil para compreender que proxy está a receber uma taxa de erro de pedido mais elevada ou qualquer pico de erro anormal nas chamadas de pedido para um proxy específico.

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

Use uma regex para excluir todos os códigos 2xx e 3xx response_codes, por exemplo:

"response_code !=~ 1.*| 2.*|3.*"
Agrupar por method, response_code, fault_code, fault_source, apigee_fault, e todas as etiquetas do tipo de recurso ProxyV2
Agregador soma
Consideração de alertas A proporção de erros de resposta do proxy: total de erros de resposta / total de respostas.
  • Total de erros de resposta = Soma de proxyv2/response_count com o filtro response_code != 200
  • Contagem total de respostas = Soma de proxyv2/response_count
Limite de alerta Depende do SLO para a 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 taxa de erro 500 de resposta do proxy for de 5% durante 5 minutos.
Consulta MQL do painel de controlo 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 MQL da política de alerta de operação 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 destino

Exemplo de utilização: use o elemento targetv2/response_count para monitorizar a taxa de resposta de erros do destino da API. O gráfico targetv2/response_count apresenta a taxa de pedidos da API Target. Este gráfico pode ser útil para identificar que alvo está a receber uma taxa de pedidos mais elevada ou qualquer pico de erros anormal nas chamadas de pedidos.

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

Use uma regex para excluir todos os códigos 2xx e 3xx response_codes, por exemplo:

"response_code !=~ 1.*| 2.*|3.*"
Agrupar por method e todas as etiquetas do tipo de recurso TargetV2
Agregador soma
Consideração de alertas A proporção de erros de resposta do proxy, por exemplo: total de erros de resposta / total de respostas.
  • Total de erros de resposta = Soma de targetv2/response_count com o filtro response_code != 200
  • Número total de respostas = Soma de targetv2/response_count
Limite de alerta Depende do SLO para a instalação. Por exemplo: para produção, acione uma notificação de evento se a taxa de erro de resposta alvo for de 5% durante 3 minutos.
Consulta MQL do painel de controlo 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

Percentil de latências de proxy

Exemplo de utilização: use proxyv2/latencies_percentile para monitorizar o percentil de latência (p50, p90, p95 e p99) de todas as respostas de proxy da API a um pedido. O gráfico proxyv2/latencies_percentile pode ser útil para identificar a latência no proxy de API do Apigee em relação à latência geral do pedido do proxy de API.

Tipos de recursos ProxyV2
Métrica proxyv2/latencies_percentile
Filtrar por percentile = p99
Agrupar por method, percentil e todas as etiquetas do tipo de recurso ProxyV2
Agregador p99 (percentil 99)
Consideração de alertas Valor elevado do percentil de latências_p99.
Limite de alerta Depende do SLO para a instalação. Por exemplo: para produção, acione uma notificação de evento se o valor de proxy p99 latencies_percentile for de 5 segundos durante 5 minutos.
Consulta MQL do painel de controlo 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 alvo

Exemplo de utilização: use targetv2/latencies_percentile para monitorizar o percentil de latência (p50, p90, p95 e p99) de todas as respostas de destino do proxy de API a um pedido. O gráfico targetv2/latencies_percentile identifica o tempo total que o destino do proxy da API Apigee demora a responder a um pedido. Este valor não inclui a sobrecarga do proxy da API Apigee.

Tipos de recursos TargetV2
Métrica targetv2/latencies_percentile
Filtrar por percentile = p99
Agrupar por method, percentil e todas as etiquetas do tipo de recurso TargetV2
Agregador p99 (percentil 99)
Consideração de alertas Valor elevado do percentil de latências_p99.
Limite de alerta Depende do SLO para a instalação. Por exemplo: para produção, acione uma notificação de evento se o valor de target p99 latencies_percentile for de 5 segundos durante 5 minutos.
Consulta MQL do painel de controlo 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 de políticas

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

Tipos de recursos ProxyV2
Métrica proxyv2/latencies_percentile
Filtrar por percentile = p99
Agrupar por method, percentil e todas as etiquetas do tipo de recurso ProxyV2
Agregador p99 (percentil 99)
Consideração de alertas Valor elevado do percentil de latências_p99.
Limite de alerta Depende do SLO para a instalação. Por exemplo: para produção, acione uma notificação de evento se o valor de proxy p99 latencies_percentile for de 5 segundos durante 5 minutos.
Consulta MQL do painel de controlo 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)]

Bases de dados

Cassandra

O serviço de base de dados do Apigee Cassandra tem várias métricas de INS do Cassandra. Estas métricas de SLI podem fornecer uma monitorização abrangente para o serviço Apigee Cassandra. No mínimo, juntamente com a utilização de recursos do Cassandra (CPU, memória e volume de disco), a latência de pedidos de leitura e escrita do cliente deve ser monitorizada para verificar o estado de funcionamento do serviço Cassandra.

Taxa de pedidos de leitura do Cassandra

Exemplo de utilização: a métrica do INS cassandra/clientrequest_rate (com scope=Read) fornece estatísticas sobre a taxa média de pedidos de leitura dos serviços Cassandra em qualquer momento. Esta métrica ajuda a compreender as tendências do nível de atividade dos pedidos de leitura dos clientes.

Tipos de recursos k8s_container
Métrica cassandra/clientrequest_rate
Filtrar por scope = Read e unit = OneMinuteRate
Agrupar por scope, unit e todas as etiquetas do tipo de recurso k8s_container
Agregador soma
Consideração de alertas Para quaisquer potenciais problemas ou alterações significativas nos padrões de consulta dos clientes; por exemplo, um aumento ou uma diminuição repentina e inesperada na taxa de pedidos de leitura.
Limite de alerta Nenhum
Consulta MQL do painel de controlo 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 pedidos de escrita do Cassandra

Exemplo de utilização: a métrica SLI cassandra/clientrequest_rate (com scope=Write) fornece informações sobre a taxa média de pedidos de gravação dos serviços Cassandra em qualquer momento. Esta métrica ajuda a compreender as tendências do nível de atividade dos pedidos de gravação dos clientes.

Tipos de recursos k8s_container
Métrica cassandra/clientrequest_rate
Filtrar por scope = Read e unit = OneMinuteRate
Agrupar por scope, unit e todas as etiquetas do tipo de recurso k8s_container
Agregador soma
Consideração de alertas Para quaisquer potenciais problemas ou alterações significativas nos padrões de consulta dos clientes; por exemplo, um aumento ou uma diminuição súbita e inesperada nos pedidos de gravação que justifiquem uma investigação mais aprofundada.
Limite de alerta Nenhum
Consulta MQL do painel de controlo 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 do pedido de leitura do Cassandra

Exemplo de utilização: a métrica SLI cassandra/clientrequest_latency (com scope=Read) fornece a latência do pedido de leitura dos serviços Cassandra (no percentil 99, no percentil 95 ou no percentil 75). Estas métricas ajudam a ter uma vista geral do desempenho do Cassandra e podem indicar alterações nos padrões de utilização ou um problema que se manifeste ao longo do tempo.

Tipos de recursos k8s_container
Métrica cassandra/clientrequest_latency
Filtrar por scope = Read e unit = 99thPercentile
Agrupar por scope, unit e todas as etiquetas do tipo de recurso k8s_container
Agregador soma
Consideração de alertas Se o SLI de latência dos pedidos de leitura mostrar consistentemente uma tendência de aumento da latência do percentil 99 de forma contínua.
Limite de alerta Depende do seu SLO para os serviços Cassandra. Por exemplo: em produção, acionar uma notificação de evento se o valor de leitura clientrequest_latency do 99.º percentil for de 5 segundos durante 3 minutos
Consulta MQL do painel de controlo 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 do pedido de gravação do Cassandra

Exemplo de utilização: a métrica SLI cassandra/clientrequest_latency (com scope=Write) fornece a latência do pedido de gravação dos serviços Cassandra (no 99.º percentil, 95.º percentil ou 75.º percentil). Estas métricas ajudam a ter uma vista geral do desempenho do Cassandra e podem indicar alterações nos padrões de utilização ou um problema que se manifeste ao longo do tempo.

Tipos de recursos k8s_container
Métrica cassandra/clientrequest_latency
Filtrar por scope = Write e unit = 99thPercentile
Agrupar por scope, unit e todas as etiquetas do tipo de recurso k8s_container
Agregador soma
Consideração de alertas Se o SLI de latência dos pedidos de gravação mostrar consistentemente uma tendência de aumento contínuo da latência do percentil 99.
Limite de alerta Depende do seu SLO para os serviços Cassandra. Por exemplo: em produção, acionar uma notificação de evento se o valor de gravação clientrequest_latency do percentil 99 for de 5 segundos durante 3 minutos
Consulta MQL do painel de controlo 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 controlo do Apigee

As métricas SLI do serviço Apigee Synchronizer fornecem contagens de pedidos e respostas, bem como latências entre o plano de controlo do Apigee e o plano de tempo de execução híbrido. Espera-se que as instâncias do sincronizador em execução no plano de execução consultem o plano de controlo regularmente, transfiram os contratos e disponibilizem os mesmos às instâncias de execução locais.

Taxa de pedidos

Contagem de pedidos a montante

Exemplo de utilização: as métricas upstream/request_count indicam o número de pedidos feitos pelo serviço Synchronizer ao plano de controlo do Apigee.

Tipos de recursos k8s_container
Métrica upstream/request_count
Filtrar por container_name = apigee-synchronizer e type = CONTRACT
Agrupar por method, type, container_name e todas as etiquetas do tipo de recurso k8s_container
Agregador soma
Consideração de alertas Use esta opção para anomalias de tráfego, como um pico anormal de request_count ou um alerta de diminuição.
Limite de alerta Nenhum
Consulta MQL do painel de controlo 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

Quantidade de respostas a montante

Exemplo de utilização: a métrica SLI upstream/response_count indica o número de respostas que os serviços do sincronizador receberam do plano de controlo do Apigee. Este gráfico pode ser útil para identificar problemas de conetividade ou configuração entre o plano de tempo de execução do Apigee Hybrid e o plano de controlo.

Tipos de recursos k8s_container
Métrica upstream/request_count
Filtrar por method, response_type, container_name e todas as etiquetas do tipo de recurso k8s_container
Agrupar por
Agregador soma
Consideração de alertas Se existirem erros nas métricas upstream/response_count com códigos de resposta diferentes de 200 devolvidos pelo plano de controlo do Apigee, é necessária uma investigação mais aprofundada desses erros.
Limite de alerta Depende do seu SLO para os serviços Cassandra. Por exemplo: em produção, acione uma notificação de evento se o sincronizador tiver mais de um erro de response_code a cada 3 minutos.
Consulta MQL do painel de controlo 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 Kubernetes fornecem métricas SLI ao nível do sistema. As etiquetas das métricas de SLI podem ser filtradas e agrupadas para monitorizar um contentor específico e a respetiva utilização de recursos. Para monitorizar o estado de funcionamento e a disponibilidade da infraestrutura do cluster do Apigee Runtime, um administrador do cluster pode monitorizar a utilização de recursos comuns de contentores e pods, como CPU, memória, disco e contagens de reinícios de contentores. Siga a documentação do GKE para ver mais detalhes sobre as métricas e as etiquetas disponíveis.

A tabela seguinte apresenta alguns dos serviços e os contentores que pode monitorizar para cada serviço.

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

Contentores / agrupamentos

Contagem de reinícios

Exemplo de utilização: a métrica SLI do sistema kubernetes.io/container/restart_count indica o número de vezes que um contentor foi reiniciado. Este gráfico pode ser útil para identificar se um contentor está a falhar/ser reiniciado com frequência. O contentor de serviço específico pode ser filtrado por etiquetas de métricas para a monitorização do contentor de um serviço específico.

O exemplo seguinte mostra a utilização da métrica kubernetes.io/container/restart_count para o contentor do Cassandra. Pode usar esta métrica para qualquer um dos contentores na tabela acima.

Tipos de recursos 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 etiquetas do tipo de recurso k8s_container
Agregador soma
Consideração de alertas Se um contentor for reiniciado com frequência, é necessária uma investigação mais detalhada para determinar a causa principal. Existem vários motivos pelos quais um contentor pode ser reiniciado, como OOMKilled, o disco de dados estar cheio e problemas de configuração, entre outros.
Limite de alerta Depende do SLO para a instalação. Por exemplo: para produção, acione uma notificação de evento se um contentor for reiniciado mais de 5 vezes em 30 minutos.
Consulta MQL do painel de controlo 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)]