Monitoraggio e registrazione - AWS AppSync

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à.

Monitoraggio e registrazione

Per monitorare la tua API AWS AppSync GraphQL e risolvere i problemi relativi alle richieste, puoi attivare la registrazione su Amazon Logs. CloudWatch

Configurazione e configurazione

Per attivare la registrazione automatica su un'API GraphQL, usa AWS AppSync la console.

  1. Accedi AWS Management Console e apri la AppSync console.

  2. Nella pagina delle API, scegli il nome di un'API GraphQL.

  3. Nella home page dell'API, nel riquadro di navigazione, scegli Impostazioni.

  4. Sotto Logging (Registrazione) segui la procedura riportata di seguito:

    1. Attiva Abilita i registri.

    2. Per una registrazione dettagliata a livello di richiesta, seleziona la casella di controllo in Includi contenuti dettagliati. (opzionale)

    3. In Field resolver log level, scegli il livello di registrazione a livello di campo preferito (Nessuno, Errore o Tutto). (opzionale)

    4. 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.

  5. Selezionare 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 IAM, crea una nuova policy con il nome AWSAppSyncPushToCloudWatchLogsPolicy 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 API 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, ognuno Request consuma un token. Tuttavia, a un Request 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. 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 appsyncCacheEngineCPUUtilization

Unità: Percentuale. La percentuale di CPU attualmente utilizzata dal processo Redis per un'API specificata da ID.

Abbonamenti in tempo reale

Tutti i parametri vengono emessi in un'unica dimensione: GraphQLAPIId. Ciò significa che tutti i parametri sono accoppiati con ID API GraphQL. 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 con successo.

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 provenienti da. AWS AppSync

Unità: numero. Utilizzate 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 sottoscrizioni invalidate (annullate) 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 con successo.

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 migliorate

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:

  1. 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:

    Parametro Dimensione metrica Nome parametro Unità Descrizione
    Errori GraphQL per resolver API_ID, Resolver Errore GraphQL Conteggio Il numero di errori GraphQL che si sono verificati per resolver.
    Richieste per resolver API_ID, Resolver Richiesta Conteggio Il numero di chiamate avvenute durante una richiesta. Questo dato viene registrato per ciascun resolver.
    Latenza per resolver API_ID, Resolver Latenza Millisecondo Il tempo necessario per completare una chiamata al resolver. La latenza viene misurata in millisecondi e registrata per ogni resolver.
    Visite alla cache per resolver API_ID, Risolver CacheHit Conteggio 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.
    Manca la cache per ogni resolver API_ID, Resolver CacheMiss Conteggio 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.
  2. 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 della richiesta (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:

    Parametro Dimensione metrica Nome parametro Unità Descrizione
    Richieste per fonte di dati API_ID, Datasource Richiesta Conteggio 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
    Latenza per fonte di dati API_ID, origine dati Latenza Millisecondo Il tempo necessario per completare una chiamata alla fonte di dati. La latenza viene registrata in base alla singola fonte di dati.
    Errori per fonte di dati API_ID, Datasource Errore GraphQL Conteggio Il numero di errori che si sono verificati durante una chiamata all'origine dati.
  3. Metriche operative: abilita le metriche a livello operativo GraphQL.

    Parametro Dimensione metrica Nome parametro Unità Descrizione
    Richieste per operazione API_ID, Operazione Richiesta Conteggio Il numero di volte in cui è stata chiamata un'operazione GraphQL specificata.
    Errori GraphQL per operazione API_ID, Operazione Errore GraphQL Conteggio Il numero di errori GraphQL che si sono verificati durante un'operazione GraphQL specificata.

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 con errori:
    • 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

  • Tutto: registra le seguenti informazioni per tutti i campi della query:
    • Informazioni di traccia a livello di campo

    • 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 impiegato 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 decisione Automerge 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 alle API del tuo account, a seconda della regione in cui viene distribuito. AWS Se ciascuna delle tue API utilizza una media di due token al secondo, sarai limitato a 2.500 o 5.000 richieste al secondo, rispettivamente. Se hai bisogno di più token al secondo rispetto alla quantità assegnata, 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: latenza E nd-to-end 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, scegli Logs Insights, seleziona il gruppo di AWS AppSync log per la tua API GraphQL, quindi AWS AppSync scegli le query in Query di esempio.

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 Se devi utilizzare il formato di log precedente all'8 maggio 2019, crea un ticket di supporto con le seguenti impostazioni: imposta Type (Tipo) su Account Management (Gestione account) e quindi imposta Category (Categoria) su General Account Question (Domanda account generale).

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.