View a markdown version of this page

Osservabilità per il Custom Event Bus: metriche, registri e CloudTrail - Amazon EventBridge

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

Osservabilità per il Custom Event Bus: metriche, registri e CloudTrail

Tre fonti ti dicono cosa stanno facendo un autobus e i suoi abbonati. Le CloudWatch metriche di Amazon nel AWS/EventsV2 namespace sono attive per tutti gli abbonati; per avvisare quando le consegne falliscono, attiva OnFailureDestinationDelivered o EventsDropped attiva un segno negativo con numeri matematici metrici. EventDeliveryAttempts EventsDelivered I log degli abbonati registrano ogni tentativo di consegna come record JSON; sono disattivati finché non imposti il numero dell'abbonato. LogConfiguration.Level AWS CloudTrail registra le chiamate API che creano e modificano bus, abbonati e sorgenti di eventi.

Metriche

Le metriche relative agli abbonati hanno due dimensioni EventBus e ciascuna contiene l'SubscriberARN della risorsa. Se l'abbonato appartiene a un account diverso dal bus, emette EventBridge anche la metrica con EventBus e in SubscriberAccount modo che il proprietario del bus possa vedere il consumo per account. La tabella seguente elenca i parametri .

MetricaUnitàSignificato
FilterEvaluatedConteggioEventi valutati in base ai filtri dell'abbonato
FilterMatchedConteggioEventi che corrispondono a tutti i filtri
EventDeliveryAttemptsConteggioTentativi di consegna, conteggiati per evento. EventsDeliveredSottrai per contare i tentativi falliti
TargetInvocationsConteggioChiamate effettuate verso la destinazione; una chiamata può comportare una serie di eventi
RetryInvocationAttemptsConteggioEmesso solo in caso di nuovo tentativo, valutato come profondità del tentativo: il secondo tentativo è 1, il terzo è 2. Il numero di campioni è il numero di tentativi
EventsDeliveredConteggioEventi accettati dall'obiettivo
EgressBytesByteByte consegnati alla destinazione
EventTransformationFailuresConteggioEventi la cui espressione Transformer o Input universal-target hanno avuto esito negativo
IngestionToInvocationStartTimeMillisecondiTempo che intercorre tra l'arrivo dell'evento sul bus e l'inizio della chiamata target. Non viene emesso quando il tentativo fallisce prima di chiamare il bersaglio
IngestionToInvocationEndTimeMillisecondiTempo che intercorre tra l'arrivo dell'evento sull'autobus e la fine della chiamata al bersaglio
OnFailureDestinationDeliveredConteggioDocumenti scritti nella coda per le lettere morte
OnFailureDestinationFailedConteggioRecord che non è stato possibile scrivere nella coda per le lettere morte
EventsDroppedConteggioEventi che hanno esaurito i tentativi senza alcuna coda di lettere morte per registrarli
ApproximateBacklogAgeMillisecondiEtà dell'evento più vecchio che l'abbonato non ha ancora fornito
SubscriberLogRecordsDroppedConteggioRecord di log che non possono essere scritti, perché la consegna dei log è la soluzione migliore

Il numero di bus del tuo account viene inoltre riportato nel AWS/Usage namespace come ResourceCount with Service EventBridge e con un Resource valore che inizia conEventsV2/, così puoi attivare un allarme quando ti avvicini alla quota dei bus. Per le quote, consulta. Quote personalizzate per gli Event Bus

Pubblicazione di parametri

Ogni singola PutEvents PutRawEvents chiamata genera inoltre delle metriche nel AWS/EventsV2 namespace, in modo da segnalare eventuali chiamate di pubblicazione limitate o non riuscite per un bus, ad esempio se la dimensione è impostata suPublishEventsApproximateThrottledCallCount. EventBus orders L'account del proprietario del bus riceve tutte le metriche di pubblicazione. Un account che effettua delle pubblicazioni su un autobus di cui non è proprietario le riceve anche, nel proprio account, per le proprie chiamate.

MetricaUnitàSignificato
PublishEventsApproximateCallCountConteggioPubblica le chiamate ricevute
PublishEventsApproximateSuccessCallCountConteggioPubblica le chiamate che hanno restituito HTTP 200
PublishEventsApproximateFailedCallCountConteggioPubblica chiamate che hanno restituito un errore
PublishEventsApproximateThrottledCallCountConteggioPubblica le chiamate rifiutate con ThrottlingException
PublishEventsEntryCountConteggioInserimenti nelle chiamate di pubblicazione
PublishEventsFailedEntriesCountConteggioVoci non riuscite all'interno di una chiamata accettata, riportate nella risposta come voci non riuscite
PublishEventsIngressBytesByteByte del payload dell'evento memorizzati. Assente, anziché 0, per le chiamate in cui non è stato memorizzato nulla. L'andamento si riferisce alla voce in ingresso della fattura, che arrotonda ogni voce a un intero KB.

Le dimensioni dipendono dalla metrica e dall'autore della pubblicazione.

  • Ogni metrica viene pubblicata con la sola EventBus dimensione: i totali per il bus.

  • Per gli eventi che arrivano tramite una fonte di eventi, le metriche di conteggio vengono pubblicate anche con EventBus eEventSource, in modo da poter vedere la condivisione di una fonte. PublishEventsIngressBytesnon presenta alcuna EventSource ripartizione.

  • PublishEventsIngressBytesviene inoltre pubblicato al proprietario del bus con EventBus ePublisherAccount, in modo che il proprietario del bus possa vedere quanti byte sono memorizzati in ciascun account di pubblicazione.

Registri degli abbonati

Un abbonato può registrare cosa è successo a ogni evento che ha cercato di trasmettere. La registrazione avviene per abbonato e viene disattivata quando ne crei uno, quindi un nuovo iscritto non registra nulla finché non lo imposti. LogConfiguration Ogni record è un documento JSON con un simbolo message_type che indica ciò che descrive.

  • SUBSCRIBER_MATCHED: un evento ha soddisfatto i filtri dell'abbonato ed è entrato nella consegna.

  • EVENT_DELIVERY_ATTEMPT: un tentativo di invocare il bersaglio, con il relativo risultato, il numero di tentativi e la durata. Questo è il record descritto nel resto di questa sezione.

  • EVENT_TRANSFORMATION_FAILURE: l'Inputespressione Transformer o universal-target non è riuscita per un evento, con l'errore.

  • ON_FAILURE_DESTINATION_DELIVERY_ATTEMPT: un tentativo di scrivere un record nella coda delle lettere morte.

La consegna dei log è il massimo impegno. Un record che non può essere scritto viene conteggiato nella SubscriberLogRecordsDropped metrica anziché ritentare all'infinito. Quando il bus è crittografato con una chiave gestita dal cliente, EventBridge crittografa i campi di payload di ogni record contenuto in quella chiave prima che esca EventBridge, in modo che un account di destinazione che non può utilizzare la chiave possa visualizzare il record senza di essi. Il record di un evento riprodotto viene mantenuto details.delivery_typeREPLAY; quello di un evento dal vivo. LIVE

Le due impostazioni che producono un record

È necessario che esistano entrambe due impostazioni indipendenti prima di poter leggere un singolo record.

  1. Il livello di registro dell'abbonato. LogConfiguration.Leveldecide quali record EventBridge emettere. Il valore predefinito èOFF, che non ne emette nessuno.

  2. A CloudWatch Consegna dei registri. I record ti arrivano tramite il meccanismo di distribuzione CloudWatch dei log fornito da Amazon Logs, che associa l'abbonato a una destinazione di tua proprietà. Senza di esso, i record non hanno nessun posto dove atterrare e nessun gruppo di log viene visualizzato da solo.

Effettua entrambe le impostazioni prima di iniziare a diagnosticare un problema di consegna anziché dopo. Solo gli abbonati dispongono di una configurazione di registro. I bus e le sorgenti di eventi non ne hanno, quindi è possibile attivare l'accesso un abbonato alla volta. LogConfigurationha due membri.

Level

Il livello minimo di un record. I record al di sotto di esso non vengono emessi. OFF, impostazione predefinita, non emette nulla. ERRORemette solo tentativi di consegna falliti. INFOemette tutti i tentativi di consegna, compresi quelli andati a buon fine.

IncludePayload

Se un record contiene il payload del tuo evento. ON_ERROR_ONLY, impostazione predefinita, lo inserisce solo nei record di errore. FULLlo inserisce in ogni record. Consulta Carichi utili nei record di registro.

È possibile impostare LogConfiguration quando si crea un abbonato o successivamente conUpdateSubscriber. Un aggiornamento ha effetto senza ricreare il sottoscrittore. Né la risposta di creazione né la risposta di aggiornamento restituiscono il campo, quindi conferma il valore memorizzato conDescribeSubscriber, che lo restituisce.

Attiva la registrazione per un abbonato

I passaggi seguenti registrano ogni tentativo di consegna per un abbonato esistente e inviano i record a un gruppo di CloudWatch log Logs nello stesso account. Il primo comando è una EventBridge chiamata e gli altri sono chiamate CloudWatch Logs. Inizia aumentando il livello di registro dell'abbonato. INFOregistra sia i successi che i fallimenti, ovvero ciò che ti dice se un evento è stato effettivamente consegnato.

aws eventsv2 update-subscriber \ --subscriber-arn arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLE1234567890abcdef \ --log-configuration '{ "Level": "INFO", "IncludePayload": "FULL" }'

Quindi, crea il gruppo di log di destinazione. Il nome deve iniziare con/aws/vendedlogs/. CloudWatch Logs gestisce automaticamente la policy relativa alle risorse di distribuzione solo con quel prefisso; per un gruppo di log esterno, è necessario gestire personalmente tale policy.

aws logs create-log-group \ --log-group-name /aws/vendedlogs/large-orders-delivery

Crea una fonte di consegna. --resource-arnÈ l'ARN dell'abbonato, che è ciò che fa sì che la fonte produca i record di quell'abbonato. Imposta --log-type in modo che corrisponda al livello configurato: INFO_LOGS per o per LevelINFO. ERROR_LOGS Level ERROR

aws logs put-delivery-source \ --name large-orders-source \ --resource-arn arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLE1234567890abcdef \ --log-type INFO_LOGS

Crea una destinazione di consegna assegnando un nome al gruppo di log. La risposta contiene l'ARN di destinazione, necessario per il comando successivo.

aws logs put-delivery-destination \ --name large-orders-destination \ --delivery-destination-configuration destinationResourceArn=arn:aws:logs:us-east-1:111122223333:log-group:/aws/vendedlogs/large-orders-delivery

Infine, associa l'origine alla destinazione. Usa l'ARN di destinazione della risposta precedente.

aws logs create-delivery \ --delivery-source-name large-orders-source \ --delivery-destination-arn destination-arn

I record ora vengono visualizzati nel gruppo di log. Arrivano più tardi della consegna stessa, perché la pipeline di log li raggruppa in batch, quindi tenete conto di questo ritardo quando leggete un gruppo di log subito dopo la pubblicazione. Tre proprietà di questo cablaggio determinano la sua estensione. Una destinazione è un gruppo di log, un bucket Amazon S3 o uno stream Amazon Data Firehose e i comandi precedenti sono gli stessi per ciascuno: solo modifiche. destinationResourceArn Una consegna associa esattamente una fonte a una destinazione, quindi l'invio dei record di un abbonato a una seconda destinazione richiede una seconda consegna. La destinazione può trovarsi in un account diverso da quello dell'abbonato e, in tal caso, l'account di destinazione deve richiamare PutDeliveryDestinationPolicy la destinazione per consentire la consegna, ovvero il modo in cui un account centrale raccoglie i record degli abbonati di cui non è proprietario.

Leggere un registro di consegna

EventBridge emette un record per tentativo di consegna per evento. Quattro campi sono al livello superiore. message_typesi EVENT_DELIVERY_ATTEMPT riferisce a un tentativo di consegna; gli altri tipi sono elencati all'inizio di questa sezione. resource_arnè l'ARN dell'abbonato che ha effettuato il tentativo, ovvero il modo in cui si separano gli abbonati che condividono un gruppo di log. log_levelè il livello del record stesso: un tentativo è INFO andato a buon fine e un tentativo fallito sìERROR, motivo per cui registra Level ERROR ancora gli errori. detailsè un oggetto che contiene lo stato di consegna e contiene i campi su cui si generano query e allarmi.

outcome e attempt_count

SUCCESSo FAILURE per questo tentativo, e a quale tentativo si è trattato, quindi i tentativi sono numerabili.

terminal_kind

È presente nell'unico record che indica come è terminato l'evento:EVENTS_DELIVERED,ON_FAILURE_DESTINATION_DELIVERED, o EVENTS_DROPPED quando i tentativi sono scaduti e non è stata configurata alcuna destinazione in caso di errore.

target_arn e target_properties

La destinazione su cui è stato effettuato il tentativo e i parametri di destinazione risolti dal sottoscrittore per questo evento. target_propertiesviene omesso quando il sottoscrittore non configura alcun parametro.

ingestion_to_start_latency_ms e ingestion_to_complete_latency_ms

Millisecondi dall'inserimento dell'evento all'inizio e alla fine di questo tentativo.

target_input

I byte inviati alla destinazione, parola per parola. Questo è un campo di payload; vedi. Carichi utili nei record di registro

event_detail, event_metadata e event_system_metadata

L'evento lo EventBridge ha tenuto. event_system_metadatacontiene gli identificatori con cui correlate i record. event_detailappare solo quando è diverso datarget_input, come nel caso in cui l'abbonato ha un trasformatore.

Per diagnosticare una consegna che non è mai arrivata, leggi i registri dell'abbonato in questo ordine. outcomeindica se EventBridge è stato raggiunto l'obiettivo. attempt_countindica se sta ancora riprovando, perché un evento senza terminal_kind record non è terminato. terminal_kindindica come è andato a finire e separa un evento in lettere morte da uno che è stato eliminato. target_arntarget_properties, e indica target_input cosa è stato inviato e dove, ed è qui che si presenta un problema con il trasformatore o il parametro di destinazione. Un errore è visibile nel record non appena il tentativo fallisce, quindi non è necessario attendere la scadenza dei tentativi. Per la procedura completa, consulta Risoluzione dei problemi: hai pubblicato e nulla è arrivato a destinazione.

Carichi utili nei record di registro

IncludePayloadcontrolla due campi e nessun altro: details.target_input edetails.event_detail. Ogni altro campo viene emesso indipendentemente dal valore scelto, quindi un abbonato che tiene i payload fuori dai suoi registri riporta comunque il risultato, l'obiettivo, il numero di tentativi e le latenze. FULLincorpora il payload in ogni record, compresi i record relativi alle consegne riuscite. ON_ERROR_ONLY, impostazione predefinita, lo incorpora solo nei record di errori e omette entrambi i campi da un record per una consegna corretta.

Importante

Un record di registro contenente un payload contiene i tuoi dati. ConFULL, il gruppo di log contiene una copia di tutti i corpi degli eventi forniti dall'abbonato e chiunque sia in grado di leggere il gruppo di log può leggere quei corpi. Usalo FULL mentre esegui il debug di un abbonato, quindi restituiscilo a. ON_ERROR_ONLY Ciò limita sia l'esposizione che il volume memorizzato.

L'API effettua chiamate AWS CloudTrail

L'abbonato registra le consegne registrate, non le chiamate effettuate per configurarle. AWS CloudTrail registra le chiamate all'API di gestione, in modo che una modifica a un bus, a un abbonato o a una fonte di eventi sia verificabile dal percorso anziché da un gruppo di log. Per sapere come si EventBridge integra con CloudTrail, consulta. Registrazione delle chiamate Amazon EventBridge API utilizzando AWS CloudTrail