Panoramica
Questa guida fornisce linee guida su cosa monitorare e su come monitorare un deployment Apigee Hybrid. È destinato agli amministratori di cluster ibridi e agli amministratori dell'organizzazione.
Se non hai mai utilizzato Google Cloud Monitoring, consulta la documentazione di Google Cloud Monitoring per: Creare grafici con Esplora metriche e Come funzionano gli avvisi.
I cluster ibridi Apigee forniscono metriche SLI (indicatore del livello del servizio) per aiutarti a comprendere in che modo di sistema e applicazioni siano in esecuzione in un dato momento. Puoi visualizzare un elenco completo delle Metriche disponibili.
Google Cloud Monitoring utilizza il tipo di risorsa per identificare ogni metrica SLI. Esistono tre tipi di risorse comuni utilizzati per tutte le metriche di Apigee Hybrid.
k8s_container
per le metriche a livello di sistema.ProxyV2
per le metriche del proxy API Apigee.TargetV2
per le metriche target dell'API Apigee
I tipi di risorse hanno etichette comuni che si applicano a tutte le metriche associate. Ad esempio:
tutte le metriche con tipo di risorsa k8s_container
hanno cluster_name
,
Possibilità di utilizzare le etichette pod_name
e container_name
, oltre alle
le etichette delle metriche. Per monitorare efficacemente l'integrità e le prestazioni del cluster, è consigliabile utilizzare una combinazione di etichette di tipo di risorsa ed etichette di metriche.
Soglia di avviso: in un mondo perfetto, le soglie di avviso sarebbero ovvie e il valore fornito documentazione elenca i valori che devono attivare gli avvisi. In realtà, è meno ovvio per Apigee definire cosa sia un rendimento accettabile e cosa sia un utilizzo pericoloso delle risorse di servizi e infrastrutture. I valori delle soglie di avviso variano notevolmente in base a particolari schemi di traffico e contratti SLO/SLA.
L'ottimizzazione e la determinazione della soglia di avviso sono un processo continuo, in quanto possono variare in base all'utilizzo del servizio e dell'infrastruttura. Utilizza la soglia di avviso e critica per le notifiche e gli avvisi.
- Buono: il valore è inferiore alla soglia di avviso.
- Riguardante: valore superiore alla soglia di avviso, ma inferiore alla soglia critica.
- Critica: Valore > Soglia critica.
I clienti devono utilizzare gli strumenti forniti per determinare la soglia ottimale, che si tratti delle dashboard di Cloud Monitoring che possono creare con l'MQL fornito di seguito o degli analytics di Apigee, per identificare il comportamento "normale" e regolare di conseguenza le soglie di avviso.
Il monitoraggio del cluster ibrido può essere classificato in quattro diversi gruppi generali, ad esempio Traffico, database, piano di controllo Apigee e infrastruttura il monitoraggio. Nelle sezioni seguenti vengono descritti in dettaglio questi gruppi:
Traffico
Le metriche SLI di proxy e target di Apigee forniscono conteggi di richieste/risposte e latenze per i proxy e i target API. La metrica SLI di latenza dei criteri di Apigee fornisce latenze di risposta ai criteri. Queste metriche SLI forniscono la copertura per il monitoraggio del traffico dell'API Apigee.
Tasso di richieste
Numero di richieste proxy
Caso d'uso: utilizza proxyv2/request_count per monitorare il conteggio delle richieste del proxy. La Il grafico proxyv2/request_count mostra il tasso di richieste per i proxy. Questo grafico è utile per identificare il proxy che riceve una frequenza di richieste più elevata, i pattern di frequenza delle richieste e eventuali picchi anomali nelle chiamate di richiesta per un determinato proxy. Qualsiasi picco anomalo imprevisto nell'API il traffico potrebbe essere un problema di sicurezza per un bot o un attacco ai proxy API. Analogamente, un calo significativo del traffico cloud complessivo indica problemi con i client o la connettività dei componenti Apigee upstream.
Tipi di risorse | ProxyV2 |
Metrica | proxyv2/request_count |
Raggruppa per | method e tutte le etichette dei tipi di risorsa ProxyV2 |
Aggregatore | sum |
Considerazione dell'avviso | Eventi come gli avvisi relativi a picchi/cali anomali di request_count |
Soglia di avviso | Nessuna |
Query MQL della dashboard di 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)] |
Numero di richieste target
Caso d'uso: utilizza targetv2/request_count per monitorare il numero di richieste del target di runtime Apigee. Il grafico targetv2/request_count mostra la frequenza delle richieste ricevute dal target Apigee. Questo grafico può essere utile per vedere quale target riceve un tasso di richieste più elevato, pattern di frequenza e qualsiasi picco anomalo nelle chiamate di richiesta per un particolare target.
Tipi di risorse | TargetV2 |
Metrica | targetv2/request_count |
Raggruppa per | method e tutte le etichette dei tipi di risorsa TargetV2 |
Aggregatore | sum |
Considerazione dell'avviso | Eventi come gli avvisi relativi a picchi/cali anomali di request_count |
Soglia di avviso | Nessuna |
Query MQL della dashboard di 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)] |
Tasso di errori
Numero di risposte di errori del proxy
Caso d'uso: utilizza proxyv2/response_count per monitorare la risposta di errore del proxy di conversione. Il grafico proxyv2/response_count mostra la frequenza di richiesta per il proxy API. Questo grafico è utile per capire quale proxy presenta un tasso di errori delle richieste più elevato o eventuali picchi di errori anomali nelle chiamate di richiesta per un determinato proxy.
Tipi di risorse | ProxyV2 |
Metrica | proxyv2/response_count |
Filtra per | response_code != 200
Utilizza un'espressione regolare per escludere tutti i "response_code !=~ 1.*| 2.*|3.*" |
Raggruppa per | method, response_code , fault_code ,
fault_source , apigee_fault ,
e tutte le etichette dei tipi di risorse ProxyV2
|
Aggregatore | sum |
Considerazione degli avvisi | Il rapporto di errori di risposta del proxy: Errori di risposta totali/Numero di risposte totali.
|
Soglia di avviso | Dipende dallo SLO per l'installazione. Installazioni di produzione e non di produzione possono avere soglie diverse. Ad esempio: per la produzione, attiva una notifica di evento se il rapporto di errore 500 della risposta del proxy è del 5% per 5 minuti. |
Query MQL della dashboard di 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)] |
|
Esempio di criterio di avviso relativo alle operazioni di Google Cloud MQL:
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'%' |
Conteggio delle risposte di errore target
Caso d'uso: utilizza targetv2/response_count per monitorare l'errore di destinazione dell'API. il tasso di risposta. Il grafico targetv2/response_count mostra il tasso di richieste dal target API. Questo il grafico può essere utile per identificare il target che riceve un tasso di richieste più elevato o qualsiasi un picco di errori nelle chiamate delle richieste.
Tipi di risorse | TargetV2 |
Metrica | targetv2/response_count |
Filtra per | response_code != 200
Utilizza un'espressione regolare per escludere tutti i "response_code !=~ 1.*| 2.*|3.*" |
Raggruppa per | method e tutte le funzionalità TargetV2 etichette dei tipi di risorse |
Aggregatore | sum |
Considerazione dell'avviso | Il rapporto di errori di risposta proxy, ad esempio: Totale errori di risposta / Conteggio totale risposte.
|
Soglia di avviso | Dipende dallo SLO per l'installazione. Ad esempio: per la produzione, attiva un evento. Notifica, Se il tasso di errore di risposta target è del 5% per 3 minuti. |
Query MQL della dashboard di 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)] |
Latenze
Percentile latenze del proxy
Caso d'uso: utilizza proxyv2/latencies_percentile per monitorare il percentile di latenza (p50, p90, p95 e p99) di tutte le risposte del proxy API a una richiesta. Il grafico proxyv2/latencies_percentile può essere utile per identificare la latenza nel proxy API Apigee rispetto alla latenza complessiva della richiesta del proxy API.
Tipi di risorse | ProxyV2 |
Metrica | proxyv2/latencies_percentile |
Filtra per | percentile = p99 |
Raggruppa per | method, percentile e tutti i valori ProxyV2 etichette dei tipi di risorse |
Aggregatore | p99 (99° percentile) |
Considerazione degli avvisi | Valore elevato di latencies_percentile p99. |
Soglia di avviso | Dipende dallo SLO per l'installazione. Ad esempio, per la produzione, attiva una notifica di evento. Se il valore il proxy p99 latencies_percentile è di 5 secondi per 5 minuti. |
Query MQL della dashboard di 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)] |
Percentile latenze target
Caso d'uso: utilizza targetv2/latencies_percentile per monitorare il percentile di latenza (p50, p90, p95 e p99) di tutte le risposte del target del proxy API a una richiesta. La Il grafico targetv2/latencies_percentile identifica la quantità di tempo totale per il proxy API Apigee per rispondere a una richiesta. Questo valore non include l'overhead del proxy API Apigee.
Tipi di risorse | TargetV2 |
Metrica | targetv2/latencies_percentile |
Filtra per | percentile = p99 |
Raggruppa per | method, percentile e tutti i valori TargetV2 etichette dei tipi di risorse |
Aggregatore | p99 (99° percentile) |
Considerazione degli avvisi | Valore elevato di latencies_percentile p99. |
Soglia di avviso | Dipende dallo SLO per l'installazione. Ad esempio: per la produzione, attiva una notifica di evento se il valore di latencies_percentile target p99 è 5 secondi per 5 minuti. |
Query MQL della dashboard di 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)] |
Percentile delle latenze dei criteri
Caso d'uso: utilizza policyv2/latencies_percentile per monitorare il percentile della latenza di elaborazione (p50, p90, p95 e p99) di tutti i criteri Apigee. Il grafico policyv2/latencies_percentile può essere utile per identificare la latenza nel criterio dell'API Apigee rispetto alla latenza complessiva delle richieste del proxy API del cliente.
Tipi di risorse | ProxyV2 |
Metrica | proxyv2/latencies_percentile |
Filtra per | percentile = p99 |
Raggruppa per | method, percentile e tutte le etichette dei tipi di risorsa ProxyV2 |
Aggregatore | p99 (99° percentile) |
Considerazione degli avvisi | Valore elevato di latencies_percentile p99. |
Soglia di avviso | Dipende dallo SLO per l'installazione. Ad esempio, per la produzione, attiva una notifica di evento. Se il valore il proxy p99 latencies_percentile è di 5 secondi per 5 minuti. |
Query MQL della dashboard di 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)] |
Database
Cassandra
Il servizio di database Cassandra di Apigee dispone di più metriche SLI di Cassandra. Queste metriche SLI possono fornire un monitoraggio completo del servizio Apigee Cassandra. Come minimo, insieme all'utilizzo delle risorse Cassandra (CPU, memoria e volume del disco), è necessario monitorare la latenza delle richieste di lettura e scrittura del client per il corretto funzionamento del servizio Cassandra.
Tasso di richieste di lettura Cassandra
Caso d'uso: la metrica SLI cassandra/clientrequest_rate (con scope=Read) fornisce insight sulla tariffa media delle richieste di lettura dei servizi Cassandra in un determinato momento. Questa metrica consente di comprendere le tendenze del livello di attività delle richieste di lettura dei clienti.
Tipi di risorse | k8s_container |
Metrica | cassandra/clientrequest_rate |
Filtra per | scope = Read e unit = OneMinuteRate |
Raggruppa per | scope, unit e tutte le etichette dei tipi di risorsa k8s_container |
Aggregatore | sum |
Considerazione degli avvisi | Per eventuali problemi o modifiche significative ai pattern di query dei clienti; ad esempio un picco o un calo improvviso e imprevisto nella tasso di richieste di lettura. |
Soglia di avviso | Nessuno |
Query MQL della dashboard di 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)] |
Tasso di richieste di scrittura Cassandra
Caso d'uso: la metrica SLI cassandra/clientrequest_rate (con scope=Write) fornisce insight sulla tariffa media delle richieste di scrittura nei servizi Cassandra in un dato momento. Questa metrica consente con la comprensione dei clienti di scrittura delle tendenze dei livelli di attività delle richieste.
Tipi di risorse | k8s_container |
Metrica | cassandra/clientrequest_rate |
Filtra per | scope = Read e unit = OneMinuteRate |
Raggruppa per | scope, unit e tutti i valori k8s_container etichette dei tipi di risorse |
Aggregatore | sum |
Considerazione degli avvisi | Per eventuali problemi potenziali o variazioni significative dei pattern di query dei clienti; della un picco o un calo improvviso e imprevisto nelle richieste di scrittura che giustificano ulteriori le indagini. |
Soglia di avviso | Nessuna |
Query MQL della dashboard di 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)] |
Latenza della richiesta di lettura Cassandra
Caso d'uso: la metrica SLI cassandra/clientrequest_latency (con scope=Read) fornisce Latenza delle richieste di lettura dei servizi Cassandra (al 99° percentile, 95° percentile o 75° percentile). Queste metriche consentono di avere una visione complessiva del rendimento di Cassandra e possono indicare eventuali cambiamenti nei pattern di utilizzo o un problema che si manifesta nel tempo.
Tipi di risorse | k8s_container |
Metrica | cassandra/clientrequest_latency |
Filtra per | scope = Read e unit = 99thPercentile |
Raggruppa per | scope, unit e tutti i valori k8s_container etichette dei tipi di risorse |
Aggregatore | sum |
Considerazione degli avvisi | Se l'SLI della latenza delle richieste di lettura mostra costantemente una tendenza verso l'aumento della latenza al 99° percentile. |
Soglia di avviso | Dipende dallo SLO per i servizi Cassandra. Ad esempio: in produzione, attiva una notifica di evento se il valore clientrequest_latency letto del 99° percentile è di 5 secondi per 3 minuti |
Query MQL della dashboard di 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)] |
Latenza della richiesta di scrittura Cassandra
Caso d'uso: la metrica SLI cassandra/clientrequest_latency (con scope=Write) fornisce la latenza delle richieste di scrittura dei servizi Cassandra (al 99° percentile, 95° percentile o 75° ). Queste metriche consentono di avere una visione complessiva del rendimento di Cassandra e possono indicare eventuali cambiamenti nei pattern di utilizzo o un problema che si manifesta nel tempo.
Tipi di risorse | k8s_container |
Metrica | cassandra/clientrequest_latency |
Filtra per | scope = Write e unit = 99thPercentile |
Raggruppa per | scope, unit e tutte le etichette dei tipi di risorsa k8s_container |
Aggregatore | sum |
Considerazione dell'avviso | Se lo SLI di latenza delle richieste di scrittura mostra in modo coerente una latenza del 99° percentile, con una tendenza continua verso l'alto. |
Soglia di avviso | Dipende dallo SLO per i servizi Cassandra. Ad esempio: in produzione, attiva una notifica evento se il valore clientrequest_latency di 99thPercentile è 5 secondi per 3 minuti |
Query MQL della dashboard di 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)] |
Control plane Apigee
Le metriche SLI del servizio Apigee Synchronizer forniscono conteggi di richieste e risposte e la latenza tra il piano di controllo di Apigee e il piano di runtime ibrido. Le istanze di sincronizzazione in esecuzione nel piano di runtime devono eseguire regolarmente il polling del piano di controllo, scaricare i contratti e metterli a disposizione delle istanze di runtime locali.
Tasso di richieste
Numero di richieste in upstream
Caso d'uso: le metriche upstream/request_count indicano il numero di richieste effettuate dal servizio di sincronizzazione al piano di controllo Apigee.
Tipi di risorse | k8s_container |
Metrica | upstream/request_count |
Filtra per | container_name = apigee-synchronizer e type = CONTRACT |
Raggruppa per | method, type, container_name e tutte le etichette del tipo di risorsa k8s_container |
Aggregatore | sum |
Considerazione dell'avviso | Utilizza questa metrica per le anomalie del traffico, ad esempio un picco o un avviso di calo anomalo di request_count. |
Soglia di avviso | Nessuna |
Query MQL della dashboard di 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)] |
Percentuale di errori
Numero di risposte upstream
Caso d'uso: la metrica SLI upstream/response_count fornisce il numero di risposte ricevute dai servizi di sincronizzazione dal piano di controllo Apigee. Questo diagramma può essere utile per identificare eventuali problemi di connettività o configurazione tra il piano di runtime di Apigee Hybrid e il piano di controllo.
Tipi di risorse | k8s_container |
Metrica | upstream/request_count |
Filtra per | method, response_type, container_name e tutte le etichette per il tipo di risorsa k8s_container |
Raggruppa per | |
Aggregatore | sum |
Considerazione degli avvisi | Se sono presenti errori nelle metriche upstream/response_count con codici di risposta diversi da 200 restituiti dal piano di controllo Apigee, è necessario effettuare ulteriori accertamenti su questi errori. |
Soglia di avviso | Dipende dallo SLO per i servizi Cassandra. Ad esempio, in produzione, attiva una notifica di evento se Synchronizer riscontra più di un errore response_code ogni tre minuti. |
Query MQL della dashboard di 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)] |
Infrastruttura
GKE e altre piattaforme Kubernetes forniscono metriche SLI a livello di sistema. Le etichette delle metriche SLI possono essere filtrate e raggruppate per monitorare un contenitore specifico e il relativo utilizzo delle risorse. Per monitorare l'integrità e la disponibilità dell'infrastruttura del cluster Apigee Runtime, un amministratore del cluster può monitorare l'utilizzo delle risorse comuni dei container e dei pod, come CPU, memoria, disco e conteggi di riavvio dei container. Segui Documentazione di GKE per ulteriori dettagli sulle metriche ed etichette.
La tabella seguente elenca alcuni dei servizi e dei container che puoi monitorare per ciascun servizio.
Nome servizio | Nome contenitore |
---|---|
Cassandra | apigee-cassandra |
Processore di messaggi(MP) | apigee-runtime |
Synchronizer | apigee-synchronizer |
Telemetria | apigee-prometheus-app apigee-prometheus-proxy apigee-prometheus-agg apigee-stackdriver-exporter |
Container/pod
Conteggio riavvii
Caso d'uso: la metrica SLI di sistema kubernetes.io/container/restart_count fornisce il numero di volte in cui un container è stato riavviato. Questo grafico può essere utile per capire se un container si arresta in modo anomalo o si riavvia spesso. Il container di servizio specifico può essere filtrato in base alle metriche per il monitoraggio dei container di un servizio specifico.
Di seguito viene mostrato l'utilizzo della metrica kubernetes.io/container/restart_count per il contenitore Cassandra. Puoi utilizzare questa metrica per uno qualsiasi dei contenitori nella tabella precedente.
Tipi di risorse | k8s_container |
Metrica | kubernetes.io/container/restart_count |
Filtra per | namespace_name = apigee e container_name =~ .*cassandra.* |
Raggruppa per | cluster_name, namespace_name, pod_name, container_name e tutte le etichette per il tipo di risorsa k8s_container |
Aggregatore | sum |
Considerazione dell'avviso | Se un contenitore si riavvia di frequente, è necessario effettuare ulteriori accertamenti per individuare la causa principale. Esistono diversi motivi per cui un contenitore può riavviarsi, ad esempio OOMKilled ,
disco dati pieno e problemi di configurazione, per citarne alcuni. |
Soglia di avviso | Dipende dallo SLO per l'installazione. Ad esempio, per la produzione, attiva una notifica di evento. Se un container si riavvia più spesso di 5 volte in 30 minuti. |
Query MQL della dashboard di 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)] |