Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Puoi registrare ed eseguire il debug dell'API GraphQL CloudWatch utilizzando metriche CloudWatch e log. Questi strumenti consentono agli sviluppatori di monitorare le prestazioni, risolvere i problemi e ottimizzare efficacemente le operazioni GraphQL.
CloudWatch metrics è uno strumento che fornisce un'ampia gamma di metriche per monitorare le prestazioni e l'utilizzo delle API. Queste metriche si dividono in due categorie principali:
-
Metriche generali sulle API: includono
4XXError
e5XXError
per tracciare gli errori di client e server, misurareLatency
i tempi di risposta, monitorareRequests
le chiamate API totali e tracciareTokensConsumed
l'utilizzo delle risorse. -
Metriche di abbonamento in tempo reale: queste metriche si concentrano sulle WebSocket connessioni e sulle attività di abbonamento. Includono metriche relative alle richieste di connessione, alle connessioni riuscite, alle registrazioni degli abbonamenti, alla pubblicazione di messaggi e alle connessioni e agli abbonamenti attivi.
La guida introduce anche Enhanced Metrics, che offre dati più granulari sulle prestazioni dei resolver, sulle interazioni con le fonti di dati e sulle singole operazioni GraphQL. Queste metriche forniscono informazioni più approfondite ma comportano costi aggiuntivi.
CloudWatch Logs è uno strumento che abilita le funzionalità di registrazione per GraphQL. APIs I log possono essere impostati su due livelli dell'API:
-
Registri a livello di richiesta: acquisiscono informazioni complessive sulle richieste, tra cui intestazioni HTTP, query GraphQL, riepiloghi delle operazioni e registrazioni di sottoscrizioni.
-
Registri a livello di campo: forniscono informazioni dettagliate sulle risoluzioni dei singoli campi, incluse le mappature delle richieste e delle risposte e le informazioni di tracciamento per ogni campo.
È possibile configurare la registrazione, interpretare le voci di registro e utilizzare i dati di registro per la risoluzione dei problemi e l'ottimizzazione. AWS AppSync fornisce vari tipi di log che rivelano i dati di esecuzione, analisi, convalida e risoluzione del campo della query.
Installazione e configurazione
Per attivare la registrazione automatica su un'API GraphQL, usa AWS AppSync la console.
-
Nella APIspagina, scegli il nome di un'API GraphQL.
-
Nella home page dell'API, nel riquadro di navigazione, scegli Impostazioni.
-
Sotto Logging (Registrazione) segui la procedura riportata di seguito:
-
Attiva Abilita i registri.
-
Per una registrazione dettagliata a livello di richiesta, seleziona la casella di controllo in Includi contenuti dettagliati. (opzionale)
-
In Field resolver log level, scegli il livello di registrazione a livello di campo preferito (Nessuno, Errore, Info, Debug o Tutto). (opzionale)
-
In Crea o usa un ruolo esistente, scegli Nuovo ruolo per creare un nuovo AWS Identity and Access Management (IAM) AWS AppSync su cui scrivere CloudWatch i log. Oppure, scegli Ruolo esistente per selezionare l'Amazon Resource Name (ARN) di un ruolo IAM esistente nel tuo AWS account.
-
-
Seleziona Salva.
Configurazione manuale del ruolo IAM
Se scegli di utilizzare un ruolo IAM esistente, il ruolo deve concedere AWS AppSync le autorizzazioni necessarie per scrivere i log. CloudWatch Per configurarlo manualmente, è necessario fornire un ruolo di servizio ARN in modo che AWS AppSync possa assumere il ruolo durante la scrittura dei log.
Nella console IAMAWSAppSyncPushToCloudWatchLogsPolicy
che ha la seguente definizione:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }
Quindi, crea un nuovo ruolo con il nome AWSAppSyncPushToCloudWatchLogsRolee allega la policy appena creata al ruolo. Modifica la relazione di trust per questo ruolo nel modo seguente:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "appsync.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Copia il ruolo ARN e usalo quando configuri la registrazione per un'API AWS AppSync GraphQL.
CloudWatch metriche
Puoi utilizzare le CloudWatch metriche per monitorare e fornire avvisi su eventi specifici che possono causare codici di stato HTTP o latenza. Vengono emesse le seguenti metriche:
-
4XXError
-
Errori derivanti da richieste non valide a causa di una configurazione errata del client. In genere, questi errori si verificano ovunque al di fuori dell'elaborazione GraphQL. Ad esempio, questi errori possono verificarsi quando la richiesta include un payload JSON errato o una query errata, quando il servizio è limitato o quando le impostazioni di autorizzazione non sono configurate correttamente.
Unità: numero. Viene usata la statistica Sum (Somma) per ottenere il numero totale di occorrenze di questi errori.
-
5XXError
-
Errori riscontrati durante l'esecuzione di una query GraphQL. Ad esempio, ciò può verificarsi quando si richiama una query per uno schema vuoto o errato. Può verificarsi anche quando l'ID o la AWS regione del pool di utenti di Amazon Cognito non sono validi. In alternativa, ciò potrebbe accadere anche se si AWS AppSync verifica un problema durante l'elaborazione di una richiesta.
Unità: numero. Viene usata la statistica Sum (Somma) per ottenere il numero totale di occorrenze di questi errori.
-
Latency
-
Il tempo che intercorre tra il momento in cui AWS AppSync riceve una richiesta da un client e il momento in cui restituisce una risposta al client. Ciò non include la latenza di rete riscontrata per la ricezione di una risposta nei dispositivi finali.
Unità: millisecondi. Viene usata la statistica Average (Media) per valutare le latenze previste.
Requests
-
Il numero di richieste (interrogazioni+mutazioni) elaborate da tutte le APIs parti del tuo account, per regione.
Unità: numero. Il numero di tutte le richieste elaborate in una particolare regione.
TokensConsumed
-
I token vengono assegnati in
Requests
base alla quantità di risorse (tempo di elaborazione e memoria utilizzata) consumate da aRequest
. Di solito, ognunoRequest
consuma un token. Tuttavia, a unRequest
utente che consuma grandi quantità di risorse vengono assegnati token aggiuntivi in base alle esigenze.Unità: numero. Il numero di token assegnati alle richieste elaborate in una particolare regione.
NetworkBandwidthOutAllowanceExceeded
-
Nota
Nella AWS AppSync console, nella pagina delle impostazioni della cache, l'opzione Cache Health Metrics consente di abilitare questa metrica di integrità relativa alla cache.
I pacchetti di rete sono stati interrotti perché la velocità effettiva ha superato il limite di larghezza di banda aggregato. Ciò è utile per diagnosticare i colli di bottiglia in una configurazione di cache. I dati vengono registrati per una particolare API specificando la nella metrica.
API_Id
appsyncCacheNetworkBandwidthOutAllowanceExceeded
Unità: numero. Il numero di pacchetti eliminati dopo aver superato il limite di larghezza di banda per un'API specificata dall'ID.
EngineCPUUtilization
-
Nota
Nella AWS AppSync console, nella pagina delle impostazioni della cache, l'opzione Cache Health Metrics consente di abilitare questa metrica di integrità relativa alla cache.
L'utilizzo della CPU (percentuale) assegnato al processo Redis OSS. Ciò è utile per diagnosticare i colli di bottiglia in una configurazione della cache. I dati vengono registrati per una particolare API specificando la nella metrica.
API_Id
appsyncCacheEngineCPUUtilization
Unità: Percentuale. La percentuale di CPU attualmente utilizzata dal processo Redis OSS per un'API specificata da ID.
Abbonamenti in tempo reale
Tutte le metriche vengono emesse in un'unica dimensione: Graph. QLAPIId Ciò significa che tutte le metriche sono abbinate all'API GraphQL. IDs Le seguenti metriche sono relative agli abbonamenti GraphQL su pure: WebSockets
ConnectRequests
-
Il numero di richieste di WebSocket connessione effettuate a AWS AppSync, inclusi i tentativi riusciti e quelli non riusciti.
Unità: numero. Utilizza la statistica Sum per ottenere il numero totale di richieste di connessione.
ConnectSuccess
-
Il numero di WebSocket connessioni riuscite a. AWS AppSync È possibile avere connessioni senza sottoscrizioni.
Unità: numero. Viene usata la statistica Sum (Somma) per ottenere il numero totale di occorrenze di connessioni riuscite.
ConnectClientError
-
Il numero di WebSocket connessioni che sono state rifiutate a AWS AppSync causa di errori sul lato client. Ciò potrebbe implicare che il servizio sia limitato o che le impostazioni di autorizzazione siano configurate in modo errato.
Unità: numero. Viene usata la statistica Sum (Somma) per ottenere il numero totale di occorrenze di errori di connessione lato client.
ConnectServerError
-
Il numero di errori che hanno avuto origine durante l'elaborazione delle connessioni. AWS AppSync Questo accade in genere quando si verifica un problema imprevisto sul lato server.
Unità: numero. Viene usata la statistica Sum (Somma) per ottenere il numero totale di occorrenze di errori di connessione lato server.
DisconnectSuccess
-
Il numero di WebSocket disconnessioni riuscite da. AWS AppSync
Unità: numero. Viene usata la statistica Sum (Somma) per ottenere il numero totale di occorrenze di disconnessioni riuscite.
DisconnectClientError
-
Il numero di errori del client causati dalla WebSocket disconnessione delle AWS AppSync connessioni.
Unità: numero. Viene usata la statistica Sum (Somma) per ottenere il numero totale di occorrenze di errori di disconnessione.
DisconnectServerError
-
Il numero di errori del server causati dalla disconnessione delle connessioni AWS AppSync . WebSocket
Unità: numero. Viene usata la statistica Sum (Somma) per ottenere il numero totale di occorrenze di errori di disconnessione.
SubscribeSuccess
-
Il numero di abbonamenti registrati correttamente su Through. AWS AppSync WebSocket È possibile avere connessioni senza abbonamenti, ma non è possibile avere abbonamenti senza connessioni.
Unità: numero. Viene usata la statistica Sum (Somma) per ottenere il numero totale di occorrenze di sottoscrizioni riuscite.
SubscribeClientError
-
Il numero di abbonamenti che sono stati rifiutati a AWS AppSync causa di errori sul lato client. Ciò può verificarsi quando un payload JSON non è corretto, il servizio è limitato o le impostazioni di autorizzazione non sono configurate correttamente.
Unità: numero. Viene usata la statistica Sum (Somma) per ottenere il numero totale di occorrenze di errori di sottoscrizione lato client.
SubscribeServerError
-
Il numero di errori che hanno avuto origine durante l'elaborazione degli abbonamenti. AWS AppSync Questo accade in genere quando si verifica un problema imprevisto sul lato server.
Unità: numero. Viene usata la statistica Sum (Somma) per ottenere il numero totale di occorrenze di errori di sottoscrizione lato server.
UnsubscribeSuccess
-
Il numero di richieste di annullamento dell'iscrizione che sono state elaborate correttamente.
Unità: numero. Utilizza la statistica Sum per ottenere il numero totale di occorrenze delle richieste di annullamento dell'iscrizione riuscite.
UnsubscribeClientError
-
Il numero di richieste di annullamento dell'iscrizione che sono state rifiutate a AWS AppSync causa di errori sul lato client.
Unità: numero. Utilizza la statistica Sum per ottenere il numero totale di ricorrenze degli errori di richiesta di annullamento dell'iscrizione sul lato client.
UnsubscribeServerError
-
Il numero di errori che hanno avuto origine durante l'elaborazione delle richieste di annullamento dell'iscrizione. AWS AppSync Questo accade in genere quando si verifica un problema imprevisto sul lato server.
Unità: numero. Utilizza la statistica Sum per ottenere il numero totale di ricorrenze degli errori di richiesta di annullamento dell'iscrizione sul lato server.
PublishDataMessageSuccess
-
Numero di messaggi di evento di sottoscrizione pubblicati.
Unità: numero. Viene usata la statistica Sum (Somma) per ottenere il numero totale di messaggi di eventi di sottoscrizione pubblicati.
PublishDataMessageClientError
-
Numero di messaggi di evento di sottoscrizione che non sono stati pubblicati a causa di errori sul lato client.
Unit
: Conta. Viene usata la statistica Sum (Somma) per ottenere il numero totale di occorrenze di errori di eventi di pubblicazione della sottoscrizione lato client. PublishDataMessageServerError
-
Il numero di errori che hanno avuto origine AWS AppSync durante la pubblicazione dei messaggi relativi agli eventi di sottoscrizione. Questo accade in genere quando si verifica un problema imprevisto sul lato server.
Unità: numero. Viene usata la statistica Sum (Somma) per ottenere il numero totale di occorrenze di errori di eventi di pubblicazione della sottoscrizione lato server.
PublishDataMessageSize
-
Dimensione dei messaggi di evento di sottoscrizione pubblicati.
Unità: byte.
ActiveConnections
-
Il numero di WebSocket connessioni simultanee tra client e AWS AppSync in 1 minuto.
Unità: numero. Viene usata la statistica Sum (Somma) per ottenere il numero totale di connessioni aperte.
ActiveSubscriptions
-
Numero di sottoscrizioni simultanee dai client in 1 minuto.
Unità: numero. Viene usata la statistica Sum (Somma) per ottenere il numero totale di sottoscrizioni attive.
ConnectionDuration
-
La quantità di tempo in cui la connessione rimane aperta.
Unità: millisecondi. Viene usata la statistica Average (Media) per valutare la durata della connessione.
OutboundMessages
-
Il numero di messaggi misurati pubblicati con successo. Un messaggio misurato equivale a 5 kB di dati consegnati.
Unità: numero. Utilizza la statistica Sum per ottenere il numero totale di messaggi misurati pubblicati con successo.
InboundMessageSuccess
-
Il numero di messaggi in entrata elaborati correttamente. Ogni tipo di sottoscrizione richiamato da una mutazione genera un messaggio in entrata.
Unità: numero. Utilizza la statistica Sum per ottenere il numero totale di messaggi in entrata elaborati correttamente.
InboundMessageError
-
Il numero di messaggi in entrata che non sono stati elaborati a causa di richieste API non valide, ad esempio il superamento del limite di 240 kB per il payload dell'abbonamento.
Unità: numero. Utilizza la statistica Sum per ottenere il numero totale di messaggi in entrata con errori di elaborazione relativi all'API.
InboundMessageFailure
-
Il numero di messaggi in entrata che non sono stati elaborati a causa di errori da. AWS AppSync
Unità: numero. Utilizza la statistica Sum per ottenere il numero totale di messaggi in entrata con errori di elaborazione AWS AppSync correlati.
InboundMessageDelayed
-
Il numero di messaggi in entrata ritardati. I messaggi in entrata possono subire ritardi quando viene superata la quota di velocità per i messaggi in entrata o la quota per i messaggi in uscita.
Unità: numero. Utilizza la statistica Sum per ottenere il numero totale di messaggi in entrata che hanno subito un ritardo.
InboundMessageDropped
-
Il numero di messaggi in entrata persi. I messaggi in entrata possono essere eliminati quando viene superata la quota relativa alla tariffa per i messaggi in entrata o la quota per i messaggi in uscita.
Unità: numero. Utilizza la statistica Sum per ottenere il numero totale di messaggi in entrata che sono stati eliminati.
InvalidationSuccess
-
Il numero di abbonamenti invalidati (annullati) con successo da una mutazione con.
$extensions.invalidateSubscriptions()
Unità: numero. Utilizza la statistica Sum per recuperare il numero totale di abbonamenti che sono stati annullati con successo.
InvalidationRequestSuccess
-
Il numero di richieste di invalidazione elaborate con successo.
Unità: numero. Utilizza la statistica Sum per ottenere il numero totale di richieste di invalidamento elaborate correttamente.
InvalidationRequestError
-
Il numero di richieste di invalidazione che non sono state elaborate a causa di richieste API non valide.
Unità: numero. Utilizza la statistica Sum per ottenere il numero totale di richieste di invalidazione con errori di elaborazione relativi all'API.
InvalidationRequestFailure
-
Il numero di richieste di invalidazione che non sono state elaborate a causa di errori di. AWS AppSync
Unità: numero. Utilizza la statistica Sum per ottenere il numero totale di richieste di invalidazione con errori di elaborazione correlati. AWS AppSync
InvalidationRequestDropped
-
Il numero di richieste di invalidazione è diminuito quando è stata superata la quota di richieste di invalidamento.
Unità: numero. Utilizza la statistica Sum per ottenere il numero totale di richieste di invalidazione eliminate.
Confronto tra messaggi in entrata e in uscita
Quando viene eseguita una mutazione, vengono richiamati i campi di sottoscrizione con la direttiva @aws_subscribe per quella mutazione. Ogni chiamata di sottoscrizione genera un messaggio in entrata. Ad esempio, se due campi di sottoscrizione specificano la stessa mutazione in @aws_subscribe, quando viene chiamata la mutazione vengono generati due messaggi in entrata.
Un messaggio in uscita equivale a 5 kB di dati consegnati ai client. WebSocket Ad esempio, l'invio di 15 kB di dati a 10 client genera 30 messaggi in uscita (15 kB* 10 client/5 kB per messaggio = 30 messaggi).
È possibile richiedere aumenti delle quote per i messaggi in entrata o in uscita. Per ulteriori informazioni, consulta AWS AppSync endpoint e quote nella guida di riferimento AWS generale e le istruzioni per richiedere un aumento delle quote nella Service Quotas User Guide.
Metriche avanzate
Le metriche avanzate emettono dati granulari sull'utilizzo e sulle prestazioni delle API, come il conteggio delle AWS AppSync richieste e degli errori, la latenza e gli accessi non riusciti nella cache. Tutti i dati metrici avanzati vengono inviati al tuo CloudWatch account e puoi configurare i tipi di dati che verranno inviati.
Nota
Quando si utilizzano metriche avanzate, vengono applicati costi aggiuntivi. Per ulteriori informazioni, consulta i livelli di prezzo di monitoraggio dettagliati nei CloudWatchprezzi di Amazon
Queste metriche sono disponibili in varie pagine di impostazioni della AWS AppSync console. Nella pagina delle impostazioni API, la sezione Enhanced Metrics consente di abilitare o disabilitare i seguenti elementi:
Comportamento delle metriche dei resolver: queste opzioni controllano il modo in cui vengono raccolte le metriche aggiuntive per i resolver. Puoi scegliere di abilitare le metriche complete dei resolver a richiesta (metriche abilitate per tutti i resolver presenti nelle richieste) o le metriche per resolver (metriche abilitate solo per i resolver in cui la configurazione è impostata come abilitata). Sono disponibili le seguenti opzioni:
-
GraphQL errors per resolver (GraphQLError)
-
Il numero di errori GraphQL che si sono verificati per resolver.
Dimensione metrica:,
API_Id
Resolver
Unità: numero.
-
Requests per resolver (Request)
-
Il numero di chiamate avvenute durante una richiesta. Questo dato viene registrato per ciascun resolver.
Dimensione metrica:,
API_Id
Resolver
Unità: numero.
-
Latency per resolver (Latency)
-
Il tempo necessario per completare una chiamata al resolver. La latenza viene misurata in millisecondi e registrata per ogni resolver.
Dimensione
API_Id
metrica:,Resolver
Unità: millisecondi.
Cache hits per resolver (CacheHit)
-
Il numero di accessi alla cache durante una richiesta. Questo verrà emesso solo se viene utilizzata una cache. Gli accessi alla cache vengono registrati per ciascun resolver.
Dimensione metrica:,
API_Id
Resolver
Unità: numero.
Cache misses per resolver (CacheMiss)
-
Il numero di cache mancanti durante una richiesta. Questo verrà emesso solo se viene utilizzata una cache. Gli errori di cache vengono registrati per ciascun resolver.
Dimensione metrica:,
API_Id
Resolver
Unità: numero.
Comportamento delle metriche delle origini dati: queste opzioni controllano il modo in cui vengono raccolte le metriche aggiuntive per le fonti di dati. Puoi scegliere di abilitare le metriche complete delle origini dati delle richieste (metriche abilitate per tutte le origini dati nelle richieste) o le metriche per origine dati (le metriche sono abilitate solo per le fonti di dati in cui la configurazione è impostata su abilitata). Sono disponibili le seguenti opzioni:
-
Requests per data source (Request)
-
Il numero di chiamate avvenute durante una richiesta. Le richieste vengono registrate in base alla fonte dei dati. Se le richieste complete sono abilitate, ogni fonte di dati avrà la propria immissione. CloudWatch
Dimensione metrica:
API_Id
,Datasource
Unità: numero.
-
Latency per data source (Latency)
-
Il tempo necessario per completare una chiamata all'origine dati. La latenza viene registrata in base alla singola fonte di dati.
Dimensione metrica:,
API_Id
Datasource
Unità: millisecondi.
-
Errors per data source (GraphQLError)
-
Il numero di errori che si sono verificati durante una chiamata all'origine dati.
Dimensione metrica:,
API_Id
Datasource
Unità: numero.
Metriche operative: abilita le metriche a livello operativo GraphQL.
-
Requests per operation (Request)
-
Il numero di volte in cui è stata chiamata un'operazione GraphQL specificata.
Dimensione metrica:,
API_Id
Operation
Unità: numero.
-
GraphQL errors per operation (GraphQLError)
-
Il numero di errori GraphQL che si sono verificati durante un'operazione GraphQL specificata.
Dimensione metrica:,
API_Id
Operation
Unità: numero.
CloudWatch registri
È possibile configurare due tipi di logging per qualsiasi API GraphQL nuova o esistente: a livello di richiesta e a livello di campo.
Registri a livello di richiesta
Quando è configurata la registrazione a livello di richiesta (include contenuti dettagliati), vengono registrate le seguenti informazioni:
-
Il numero di token consumati
-
Intestazioni HTTP di richiesta e risposta
-
La query GraphQL in esecuzione nella richiesta
-
Il riepilogo generale dell'operazione
-
Sottoscrizioni GraphQL nuove ed esistenti registrate
Registri a livello di campo
Quando è configurata la registrazione a livello di campo, vengono registrate le seguenti informazioni:
-
Mappatura delle richieste generata con origine e argomenti per ogni campo
-
La mappatura delle risposte trasformata per ogni campo, che include i dati risultanti dalla risoluzione di quel campo
-
Informazioni di traccia per ogni campo
Se si attiva la registrazione, AWS AppSync gestisce i registri. CloudWatch Il processo include la creazione di gruppi e flussi di log e la segnalazione di tali log ai flussi di log.
Quando attivi la registrazione su un'API GraphQL e fai richieste AWS AppSync , crea un gruppo di log e flussi di log all'interno del gruppo di log. Al gruppo di log viene assegnato un nome nel formato /aws/appsync/apis/{graphql_api_id}
. In ogni gruppo di log, i log vengono ulteriormente suddivisi in flussi di log. Questi sono ordinati in base al valore Last Event Time (Ora ultimo evento) quando vengono segnalati i dati registrati.
Ogni evento di registro è contrassegnato con il codice x-amzn - di quella richiesta. RequestId Questo ti aiuta a filtrare gli eventi di registro CloudWatch per ottenere tutte le informazioni registrate su quella richiesta. Puoi ottenerlo RequestId dalle intestazioni di risposta di ogni richiesta AWS AppSync GraphQL.
Il logging a livello di campo è configurato con i livelli di log seguenti:
-
Nessuno: non viene acquisito alcun registro a livello di campo.
-
- Errore: registra le seguenti informazioni solo per i campi che rientrano nella categoria di errore:
-
-
Sezione dell'errore nella risposta del server
-
Errori a livello di campo
-
Funzioni di richiesta/risposta generate che sono state risolte per i campi con errore
-
-
- Informazioni: registra le seguenti informazioni solo per i campi che si trovano nelle categorie informazioni ed errori:
-
-
Messaggi a livello di informazioni
-
I messaggi utente inviati tramite e
$util.log.info
console.log
-
I registri di tracciamento e mappatura a livello di campo non vengono visualizzati.
-
Se la registrazione a livello di campo è impostata su
INFO
o superiore con contenuto verboso incluso, aggiunge i messaggi di registrazione del modello di mappatura trasformato. AWS AppSync Conterrà tutte le informazioni aggiunte al modello di mappatura trasformato o l'output del resolver o del JavaScript codice eseguito dalla funzione, e non deve essere utilizzato se si prevede di inviare informazioni riservate, come password o intestazioni di autorizzazione, a fonti di dati a valle e non si desidera che tali informazioni vengano inserite nei log.
-
-
- Debug: registra le seguenti informazioni solo per i campi che si trovano nelle categorie debug, info ed error:
-
-
Messaggi a livello di debug
-
I messaggi utente inviati tramite
$util.log.info
,, e$util.log.debug
console.log
console.debug
-
I registri di tracciamento e mappatura a livello di campo non vengono visualizzati.
-
-
- Tutti: registra le seguenti informazioni per tutti i campi della query:
-
-
Informazioni di traccia a livello di campo
-
Le funzioni di richiesta/risposta generate che sono state risolte per ogni campo
-
Vantaggi del monitoraggio
Puoi usare il logging e i parametri per identificare e ottimizzare le query GraphQL, oltre che per risolvere i relativi problemi. Puoi ad esempio eseguire il debug dei problemi di latenza usando le informazioni di traccia registrate per ogni campo nella query. Per dimostrare questo concetto, supponiamo di usare uno o più resolver annidati in una query GraphQL. Un esempio di operazione sul campo in CloudWatch Logs potrebbe essere simile alla seguente:
{ "path": [ "singlePost", "authors", 0, "name" ], "parentType": "Post", "returnType": "String!", "fieldName": "name", "startOffset": 416563350, "duration": 11247 }
Ciò potrebbe corrispondere a uno schema GraphQL analogo a quanto segue:
type Post { id: ID! name: String! authors: [Author] } type Author { id: ID! name: String! } type Query { singlePost(id:ID!): Post }
Nei risultati del registro precedenti, path mostra un singolo elemento nei dati restituiti dall'esecuzione di una query denominata. singlePost()
In questo esempio, rappresenta il campo del nome nel primo indice (0). Lo startOffset fornisce un offset dall'inizio dell'operazione di interrogazione GraphQL. La durata è il tempo totale per risolvere il campo. Questi valori possono essere utili per risolvere un problema a causa di cui i dati provenienti da un'origine dati specifica vengono eseguiti più lentamente del previsto oppure un campo specifico rallenta l'intera query. Ad esempio, puoi scegliere di aumentare il throughput assegnato per una tabella Amazon DynamoDB o rimuovere un campo specifico da una query che causa un cattivo funzionamento dell'operazione complessiva.
A partire dall'8 maggio 2019, AWS AppSync genera eventi di registro in formato JSON completamente strutturato. Questo può aiutarti a utilizzare servizi di analisi dei log come CloudWatch Logs Insights e Amazon OpenSearch Service per comprendere le prestazioni delle tue richieste GraphQL e le caratteristiche di utilizzo dei campi dello schema. Ad esempio, è possibile identificare in modo semplice i resolver con latenze di grandi dimensioni, possibile causa principale di un problema prestazionale. Inoltre, ora è possibile identificare i campi utilizzati più e meno frequentemente all’interno dello schema e valutare l'impatto di definire come obsoleti i campi GraphQL.
Rilevamento dei conflitti e registrazione della sincronizzazione
Se un' AWS AppSync API ha configurato la registrazione su CloudWatch Logs con il livello di registro Field resolver impostato su All, invia informazioni sul rilevamento e AWS AppSync la risoluzione dei conflitti al gruppo di log. Ciò fornisce informazioni dettagliate su come l'API ha risposto a un conflitto. AWS AppSync Per aiutarti a interpretare la risposta, nei log vengono fornite le seguenti informazioni:
-
conflictType
-
Indica nei dettagli se si è verificato un conflitto a causa di una mancata corrispondenza della versione o della condizione fornita dal cliente.
-
conflictHandlerConfigured
-
Indica il gestore di conflitti configurato nel resolver al momento della richiesta.
-
message
-
Fornisce informazioni su come il conflitto è stato rilevato e risolto.
-
syncAttempt
-
Il numero di tentativi che il server ha effettuato per sincronizzare i dati prima di rifiutare la richiesta.
-
data
-
Se il gestore dei conflitti configurato è
Automerge
, questo campo viene compilato per mostrare la decisioneAutomerge
presa per ogni campo. Le operazioni fornite possono essere:-
RIFIUTATO: quando
Automerge
rifiuta il valore del campo in entrata a favore del valore nel server. -
AGGIUNTO - Quando viene
Automerge
aggiunto al campo in entrata a causa dell'assenza di un valore preesistente nel server. -
AGGIUNTO: When
Automerge
aggiunge i valori in entrata ai valori dell'elenco esistente nel server. -
MERGED -
Automerge
When unisce i valori in entrata ai valori del Set esistente nel server.
-
Utilizzo del conteggio dei token per ottimizzare le richieste
Alle richieste che consumano meno o pari a 1.500 KB al secondo di memoria e tempo di vCPU viene allocato un token. Le richieste con un consumo di risorse superiore a 1.500 KB al secondo ricevono token aggiuntivi. Ad esempio, se una richiesta consuma 3.350 KB al secondo, AWS AppSync alloca tre token (arrotondati al valore intero successivo) alla richiesta. Per impostazione predefinita, AWS AppSync alloca un massimo di 5.000 o 10.000 token di richiesta al secondo APIs nel tuo account, a seconda della regione in cui viene distribuito. AWS Se APIs ognuno di voi utilizza una media di due token al secondo, sarete limitati a 2.500 o 5.000 richieste al secondo, rispettivamente. Se hai bisogno di più token al secondo rispetto all'importo assegnato, puoi inviare una richiesta per aumentare la quota predefinita per la frequenza di token di richiesta. Per ulteriori informazioni, consulta AWS AppSync Endpoint e quote nella Riferimenti generali di AWS guida e Richiesta di un aumento delle quote nella Service Quotas User Guide.
Un numero elevato di token per richiesta potrebbe indicare che esiste l'opportunità di ottimizzare le richieste e migliorare le prestazioni dell'API. I fattori che possono aumentare il numero di token per richiesta includono:
-
Le dimensioni e la complessità del tuo schema GraphQL.
-
La complessità dei modelli di mappatura delle richieste e delle risposte.
-
Il numero di chiamate del resolver per richiesta.
-
La quantità di dati restituita dai resolver.
-
La latenza delle fonti di dati downstream.
-
Progettazioni di schemi e query che richiedono chiamate successive all'origine dati (al contrario delle chiamate parallele o in batch).
-
Configurazione della registrazione, in particolare contenuti di log dettagliati e a livello di campo.
Nota
Oltre alle AWS AppSync metriche e ai log, i client possono accedere al numero di token utilizzati in una richiesta tramite l'intestazione di risposta. x-amzn-appsync-TokensConsumed
Limiti di dimensione del registro
Per impostazione predefinita, se la registrazione è stata abilitata, AWS AppSync invierà fino a 1 MB di log per richiesta. I log che superano questa dimensione verranno troncati. Per ridurre le dimensioni dei log, scegli il livello di registrazione per i ERROR
log a livello di campo e disabilita la registrazione, oppure disabilita VERBOSE
completamente i log a livello di campo se non necessario. In alternativa al livello di ALL
log, puoi utilizzare Enhanced Metrics per ottenere metriche su resolver, fonti di dati o operazioni GraphQL specifici, oppure utilizzare le utilità di registrazione fornite da per registrare solo le informazioni necessarie. AppSync
Riferimento al tipo di registro
RequestSummary
-
requestId: identificatore univoco per la richiesta.
-
graphQLAPIId: ID dell'API GraphQL che effettua la richiesta.
-
statusCode: risposta al codice di stato HTTP.
-
latenza: End-to-end latenza della richiesta, in nanosecondi, come numero intero.
{
"logType": "RequestSummary",
"requestId": "dbe87af3-c114-4b32-ae79-8af11f3f96f1",
"graphQLAPIId": "pmo28inf75eepg63qxq4ekoeg4",
"statusCode": 200,
"latency": 242000000
}
ExecutionSummary
-
requestId: identificatore univoco per la richiesta.
-
graphQLAPIId: ID dell'API GraphQL che effettua la richiesta.
-
StartTime: il timestamp di inizio dell'elaborazione GraphQL per la richiesta, in formato RFC 3339.
-
EndTime: il timestamp di fine dell'elaborazione GraphQL per la richiesta, in formato RFC 3339.
-
durata: Il tempo di elaborazione GraphQL totale trascorso, in nanosecondi, come numero intero.
-
versione: La versione dello schema di. ExecutionSummary
-
- parsing:
-
-
startOffset: l'offset iniziale per l'analisi, in nanosecondi, rispetto all'invocazione, come numero intero.
-
duration: il tempo impiegato per l'analisi, in nanosecondi, come numero intero.
-
-
- validation:
-
-
startOffset: l'offset iniziale per la convalida, in nanosecondi, relativo all'invocazione, come numero intero.
-
duration: il tempo impiegato per eseguire la convalida, in nanosecondi, come numero intero.
-
{
"duration": 217406145,
"logType": "ExecutionSummary",
"requestId": "dbe87af3-c114-4b32-ae79-8af11f3f96f1",
"startTime": "2019-01-01T06:06:18.956Z",
"endTime": "2019-01-01T06:06:19.174Z",
"parsing": {
"startOffset": 49033,
"duration": 34784
},
"version": 1,
"validation": {
"startOffset": 129048,
"duration": 69126
},
"graphQLAPIId": "pmo28inf75eepg63qxq4ekoeg4"
}
Tracciamento
-
requestId: identificatore univoco per la richiesta.
-
graphQLAPIId: ID dell'API GraphQL che effettua la richiesta.
-
startOffset: l'offset iniziale per la risoluzione del campo, in nanosecondi, rispetto all'invocazione, come numero intero.
-
duration: il tempo impiegato per risolvere il campo, in nanosecondi, come numero intero.
-
fieldName: il nome del campo in fase di risoluzione.
-
parentType: il tipo padre del campo in fase di risoluzione.
-
returnType: il tipo restituito del campo in fase di risoluzione.
-
path: un elenco di segmenti di percorso, che inizia dalla radice della risposta e termina con il campo in fase di risoluzione.
-
resolverArn: l'ARN del resolver utilizzato per la risoluzione del campo. Potrebbe non essere presente nei campi nidificati.
{
"duration": 216820346,
"logType": "Tracing",
"path": [
"putItem"
],
"fieldName": "putItem",
"startOffset": 178156,
"resolverArn": "arn:aws:appsync:us-east-1:111111111111:apis/pmo28inf75eepg63qxq4ekoeg4/types/Mutation/fields/putItem",
"requestId": "dbe87af3-c114-4b32-ae79-8af11f3f96f1",
"parentType": "Mutation",
"returnType": "Item",
"graphQLAPIId": "pmo28inf75eepg63qxq4ekoeg4"
}
Analisi CloudWatch dei log con Logs Insights
Di seguito sono elencati alcuni esempi di query che è possibile eseguire per ottenere informazioni dettagliate sulle prestazioni e lo stato delle operazioni GraphQL. Questi esempi sono disponibili come query di esempio nella console Logs Insights. CloudWatch Nella CloudWatchconsole
La seguente query restituisce le prime 10 richieste GraphQL con il numero massimo di token consumati:
filter @message like "Tokens Consumed"
| parse @message "* Tokens Consumed: *" as requestId, tokens
| sort tokens desc
| display requestId, tokens
| limit 10
La query seguente restituisce i primi 10 resolver con latenza massima:
fields resolverArn, duration
| filter logType = "Tracing"
| limit 10
| sort duration desc
La query seguente restituisce i resolver richiamati più di frequente:
fields ispresent(resolverArn) as isRes
| stats count() as invocationCount by resolverArn
| filter isRes and logType = "Tracing"
| limit 10
| sort invocationCount desc
La query seguente restituisce i resolver con il maggior numero di errori nei modelli di mappatura:
fields ispresent(resolverArn) as isRes
| stats count() as errorCount by resolverArn, logType
| filter isRes and (logType = "RequestMapping" or logType = "ResponseMapping") and fieldInError
| limit 10
| sort errorCount desc
La query seguente restituisce le statistiche di latenza dei resolver:
fields ispresent(resolverArn) as isRes
| stats min(duration), max(duration), avg(duration) as avg_dur by resolverArn
| filter isRes and logType = "Tracing"
| limit 10
| sort avg_dur desc
La query seguente restituisce le statistiche di latenza dei campi:
stats min(duration), max(duration), avg(duration) as avg_dur
by concat(parentType, '/', fieldName) as fieldKey
| filter logType = "Tracing"
| limit 10
| sort avg_dur desc
I risultati delle query di CloudWatch Logs Insights possono essere esportati nei dashboard. CloudWatch
Analizza i tuoi log con Service OpenSearch
Puoi cercare, analizzare e visualizzare i tuoi AWS AppSync log con Amazon OpenSearch Service per identificare i punti deboli delle prestazioni e le cause principali dei problemi operativi. Puoi identificare i resolver con la latenza massima e gli errori. Inoltre, puoi utilizzare OpenSearch Dashboards per creare dashboard con visualizzazioni potenti. OpenSearch Dashboards è uno strumento open source di visualizzazione ed esplorazione dei dati disponibile in Service. OpenSearch Utilizzando OpenSearch le dashboard, puoi monitorare continuamente le prestazioni e lo stato delle tue operazioni GraphQL. Ad esempio, puoi creare dashboard per visualizzare la latenza P90 delle tue richieste GraphQL e approfondire le latenze P90 di ciascun resolver.
Quando usi OpenSearch Service, usa «cwl*» come modello di filtro per cercare gli indici. OpenSearch OpenSearch Il servizio indicizza i log trasmessi in streaming da CloudWatch Logs con il prefisso «cwl-». Per differenziare i log AWS AppSync delle API dagli altri CloudWatch registri inviati al OpenSearch Servizio, consigliamo di aggiungere un'espressione di filtro aggiuntiva di alla ricerca. graphQLAPIID.keyword=
YourGraphQLAPIID
Migrazione del formato di registro
Gli eventi di registro AWS AppSync generati a partire dall'8 maggio 2019 sono formattati come JSON completamente strutturato. Per analizzare le richieste GraphQL prima dell'8 maggio 2019, puoi migrare i log più vecchi in JSON completamente strutturato utilizzando uno script disponibile nell'esempio. GitHub
Puoi anche utilizzare i filtri metrici CloudWatch per trasformare i dati di registro in CloudWatch metriche numeriche, in modo da poterli rappresentare graficamente o impostare un allarme su di essi.