Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Beobachtbarkeit für den Custom Event Bus: Metriken, Protokolle und CloudTrail
Drei Quellen geben Aufschluss darüber, was ein Bus und seine Abonnenten tun. Die CloudWatch Amazon-Metriken im AWS/EventsV2 Namespace sind für jeden Abonnenten aktiviert. Um zu alarmieren, wenn Lieferungen fehlschlagen, melden Sie den Alarm an OnFailureDestinationDelivered oderEventsDropped, oder EventsDelivered bei EventDeliveryAttempts Minuszeichen mit metrischen Berechnungen. In den Abonnentenprotokollen wird jeder Zustellungsversuch als JSON-Datensatz aufgezeichnet. Sie sind deaktiviert, bis Sie LogConfiguration.Level den Abonnenten aktivieren. AWS CloudTrail zeichnet die API-Aufrufe auf, die Busse, Abonnenten und Ereignisquellen erstellen und ändern.
Kennzahlen
Abonnentenmetriken haben zwei DimensionenSubscriber, EventBus und jede enthält den Ressourcen-ARN. Wenn der Abonnent einem anderen Konto als dem Bus angehört, wird EventBridge auch die Metrik mit EventBus und ausgegeben, SubscriberAccount sodass der Busbesitzer den Verbrauch pro Konto sehen kann. In der folgende Tabelle sind die Metriken aufgelistet.
| Metrik | Einheit | Bedeutung |
|---|---|---|
FilterEvaluated | Anzahl | Ereignisse, die anhand der Filter des Abonnenten ausgewertet werden |
FilterMatched | Anzahl | Ereignisse, die allen Filtern entsprachen |
EventDeliveryAttempts | Anzahl | Zustellungsversuche, pro Ereignis gezählt. SubtrahierenEventsDelivered, um fehlgeschlagene Versuche zu zählen |
TargetInvocations | Anzahl | An das Ziel gerichtete Anrufe; ein Anruf kann eine Reihe von Ereignissen auslösen |
RetryInvocationAttempts | Anzahl | Wird nur bei einem Wiederholungsversuch ausgegeben und als Wiederholungstiefe angegeben: Der zweite Versuch ist 1, der dritte ist 2. Die Anzahl der Stichproben entspricht der Anzahl der Wiederholungen |
EventsDelivered | Anzahl | Ereignisse, die das Ziel akzeptiert hat |
EgressBytes | Bytes | An das Ziel übermittelte Byte |
EventTransformationFailures | Anzahl | Ereignisse, deren Transformer oder universeller Input Zielausdruck fehlgeschlagen ist |
IngestionToInvocationStartTime | Millisekunden | Zeit von der Ankunft des Ereignisses im Bus bis zum Beginn des Zielanrufs. Wird nicht ausgegeben, wenn der Versuch fehlgeschlagen ist, bevor das Ziel angerufen wurde |
IngestionToInvocationEndTime | Millisekunden | Zeit von der Ankunft des Ereignisses im Bus bis zum Ende des Zielanrufs |
OnFailureDestinationDelivered | Anzahl | Aufzeichnungen, die in die Warteschlange für unzustellbare Nachrichten geschrieben wurden |
OnFailureDestinationFailed | Anzahl | Datensätze, die nicht in die Warteschlange für unzustellbare Nachrichten geschrieben werden konnten |
EventsDropped | Anzahl | Ereignisse, die die Anzahl der Wiederholungsversuche ausgeschöpft haben, ohne dass die Warteschlange zum Aufzeichnen von Nachrichten unterbrochen wurde |
ApproximateBacklogAge | Millisekunden | Alter des ältesten Ereignisses, das der Abonnent noch nicht zugestellt hat |
SubscriberLogRecordsDropped | Anzahl | Protokollieren Sie Datensätze, die nicht geschrieben werden konnten, da die Protokollzustellung nach besten Kräften erfolgt |
Die Anzahl der Busse Ihres Kontos wird ebenfalls im AWS/Usage Namespace als ResourceCount mit Service EventBridge und als Resource Wert, der mit beginnt, gemeldetEventsV2/, sodass Sie einen Alarm auslösen können, wenn Sie sich dem Buskontingent nähern. Informationen zu den Kontingenten finden Sie unterBenutzerdefinierte Event Bus-Kontingente.
Veröffentlichung von Metriken
Jeder PutEvents PutRawEvents UND-Aufruf erzeugt auch Metriken im AWS/EventsV2 Namespace, sodass Sie bei gedrosselten oder fehlgeschlagenen Veröffentlichungsaufrufen für einen Bus Alarm auslösen können, z. B. bei einem, PublishEventsApproximateThrottledCallCount bei dem die EventBus Dimension auf gesetzt ist. orders Das Konto des Busbesitzers erhält alle Veröffentlichungsmetriken. Ein Konto, das für einen Bus veröffentlicht, der ihm nicht gehört, empfängt die Daten ebenfalls auf seinem eigenen Konto für eigene Anrufe.
| Metrik | Einheit | Bedeutung |
|---|---|---|
PublishEventsApproximateCallCount | Anzahl | Veröffentlichen Sie eingegangene Anrufe |
PublishEventsApproximateSuccessCallCount | Anzahl | Veröffentlichen Sie Anrufe, die HTTP 200 zurückgegeben haben |
PublishEventsApproximateFailedCallCount | Anzahl | Veröffentlichen Sie Anrufe, die einen Fehler zurückgegeben haben |
PublishEventsApproximateThrottledCallCount | Anzahl | Veröffentlichen Sie abgelehnte Anrufe mit ThrottlingException |
PublishEventsEntryCount | Anzahl | Einträge in den Veröffentlichungsaufrufen |
PublishEventsFailedEntriesCount | Anzahl | Einträge, die bei einem angenommenen Anruf fehlgeschlagen sind, werden in der Antwort als fehlgeschlagene Einträge gemeldet |
PublishEventsIngressBytes | Bytes | Byte der Event-Payload wurden gespeichert. Fehlt, statt 0, bei Aufrufen, die nichts gespeichert haben. Trends beziehen sich auf den Eingangsposten auf Ihrer Rechnung, bei dem jeder Eintrag auf eine ganze KB aufgerundet wird. |
Die Dimensionen hängen von der Metrik und davon ab, wer sie veröffentlicht hat.
Jede Metrik wird nur mit der
EventBusDimension veröffentlicht: den Gesamtwerten für den Bus.Bei Ereignissen, die über eine Ereignisquelle eintreffen, werden die Zählmetriken auch mit
EventBusund veröffentlichtEventSource, sodass Sie den Anteil einer Quelle sehen können.PublishEventsIngressByteshat keineEventSourcePanne.PublishEventsIngressByteswird auch mitEventBusund für den Busbesitzer veröffentlichtPublisherAccount, sodass ein Busbesitzer sehen kann, wie viele Byte jedes Veröffentlichungskonto gespeichert hat.
Abonnenten-Protokolle
Ein Abonnent kann aufzeichnen, was mit jedem Ereignis passiert ist, das er zu übermitteln versucht hat. Die Protokollierung erfolgt pro Abonnent und ist deaktiviert, wenn Sie einen erstellen. Ein neuer Abonnent zeichnet also nichts auf, bis Sie es eingerichtet habenLogConfiguration. Jeder Datensatz ist ein JSON-Dokument mit einemmessage_type, das aussagt, was es beschreibt.
-
SUBSCRIBER_MATCHED: Ein Ereignis entsprach den Filtern des Abonnenten und wurde zugestellt. -
EVENT_DELIVERY_ATTEMPT: ein Versuch, das Ziel aufzurufen, mit seinem Ergebnis, der Anzahl der Versuche und der Dauer. Dies ist der Datensatz, der im Rest dieses Abschnitts beschrieben wird. -
EVENT_TRANSFORMATION_FAILURE: DerInputAusdruckTransformeroder universal-target ist für ein Ereignis fehlgeschlagen. Der Fehler ist aufgetreten. -
ON_FAILURE_DESTINATION_DELIVERY_ATTEMPT: ein Versuch, einen Datensatz in die Warteschlange mit unlesbaren Buchstaben zu schreiben.
Die Protokollzustellung erfolgt nach bestem Wissen. Ein Datensatz, der nicht geschrieben werden kann, wird in der SubscriberLogRecordsDropped Metrik gezählt und nicht auf unbestimmte Zeit wiederholt. Wenn der Bus mit einem vom Kunden verwalteten Schlüssel verschlüsselt wird, werden die EventBridge Nutzdatenfelder jedes Datensatzes unter diesem Schlüssel verschlüsselt, bevor er ihn verlässt EventBridge, sodass ein Zielkonto, das den Schlüssel nicht verwenden kann, den Datensatz ohne sie sieht. Der Datensatz eines wiedergegebenen Ereignisses wird übertragen details.delivery_typeREPLAY; der Datensatz eines Live-Ereignisses. LIVE
Die beiden Einstellungen, die eine Aufzeichnung erzeugen
Es müssen zwei unabhängige Einstellungen vorhanden sein, bevor Sie einen einzelnen Datensatz lesen können.
-
Das Log-Level des Abonnenten.
LogConfiguration.Levelentscheidet, welche Datensätze EventBridge ausgegeben werden. Die Standardeinstellung istOFF, was keinen ausgibt. -
A: CloudWatch Protokolliert die Lieferung. Aufzeichnungen erreichen Sie über den Amazon CloudWatch Logs-Versandmechanismus für verkaufte Protokolle, der den Abonnenten mit einem Ziel verbindet, das Ihnen gehört. Ohne ihn können Datensätze nirgends landen, und keine Protokollgruppe erscheint für sich allein.
Nehmen Sie beide Einstellungen vor, bevor Sie mit der Diagnose eines Lieferproblems beginnen, und nicht danach. Nur Abonnenten haben eine Protokollkonfiguration. Busse und Ereignisquellen haben keine, daher schalten Sie die Protokollierung jeweils für einen Abonnenten ein. LogConfigurationhat zwei Mitglieder.
Level-
Die Mindeststufe eines Datensatzes. Datensätze, die unter diesem Wert liegen, werden nicht ausgegeben.
OFF, die Standardeinstellung, gibt nichts aus.ERRORgibt nur fehlgeschlagene Zustellungsversuche aus.INFOgibt jeden Zustellungsversuch aus, auch die, die erfolgreich waren. IncludePayload-
Ob ein Datensatz Ihre Event-Nutzlast enthält.
ON_ERROR_ONLY, die Standardeinstellung, enthält sie nur in Fehlerdatensätzen.FULLüberträgt es auf jeden Datensatz. Siehe Nutzlasten in Protokolldatensätzen.
Sie können festlegenLogConfiguration, wann Sie einen Abonnenten erstellen, oder später mitUpdateSubscriber. Ein Update wird wirksam, ohne dass der Abonnent neu erstellt wird. Weder die Create-Antwort noch die Update-Antwort geben das Feld zurück. Bestätigen Sie daher den gespeicherten Wert mitDescribeSubscriber, wodurch er zurückgegeben wird.
Schalten Sie die Protokollierung für einen Abonnenten ein
Mit den folgenden Schritten wird jeder Zustellungsversuch für einen vorhandenen Abonnenten aufgezeichnet und die Datensätze an eine CloudWatch Logs-Protokollgruppe im selben Konto übermittelt. Der erste Befehl ist ein EventBridge Anruf, der Rest sind CloudWatch Logs-Aufrufe. Erhöhen Sie zunächst das Log-Level des Abonnenten. INFOzeichnet sowohl Erfolge als auch Misserfolge auf. Dies gibt Aufschluss darüber, ob ein Ereignis überhaupt zugestellt wurde.
aws eventsv2 update-subscriber \ --subscriber-arn arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLE1234567890abcdef \ --log-configuration '{ "Level": "INFO", "IncludePayload": "FULL" }'
Erstellen Sie als Nächstes die Zielprotokollgruppe. Der Name muss mit beginnen/aws/vendedlogs/. CloudWatch Logs verwaltet die Bereitstellungsressourcenrichtlinie für Sie nur unter diesem Präfix. Für eine Protokollgruppe außerhalb dieses Präfix müssen Sie diese Richtlinie selbst verwalten.
aws logs create-log-group \ --log-group-name /aws/vendedlogs/large-orders-delivery
Erstellen Sie eine Übermittlungsquelle. Es --resource-arn ist der Abonnenten-ARN, weshalb die Quelle die Datensätze dieses Abonnenten erstellt. Stellen Sie --log-type es so ein, dass es der von Ihnen konfigurierten Ebene entspricht: INFO_LOGS für Level INFO oder ERROR_LOGS für LevelERROR.
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
Erstellen Sie ein Übermittlungsziel, das die Protokollgruppe benennt. Die Antwort enthält den Ziel-ARN, den der nächste Befehl benötigt.
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
Schließlich koppeln Sie die Quelle mit dem Ziel. Verwenden Sie den Ziel-ARN aus der vorherigen Antwort.
aws logs create-delivery \ --delivery-source-name large-orders-source \ --delivery-destination-arndestination-arn
Datensätze werden jetzt in der Protokollgruppe angezeigt. Sie kommen später als die eigentliche Übertragung an, da sie von der Log-Pipeline stapelweise verarbeitet werden. Berücksichtigen Sie also diese Verzögerung, wenn Sie eine Protokollgruppe direkt nach der Veröffentlichung lesen. Drei Eigenschaften dieser Verkabelung entscheiden darüber, wie weit sie sich erstreckt. Ein Ziel ist eine Protokollgruppe, ein Amazon S3-Bucket oder ein Amazon Data Firehose-Stream, und die obigen Befehle sind für beide gleich: nur destinationResourceArn Änderungen. Eine Lieferung verbindet genau eine Quelle mit genau einem Ziel, sodass das Senden der Datensätze eines Abonnenten an ein zweites Ziel eine zweite Lieferung erfordert. Das Ziel kann sich auf einem anderen Konto als der Abonnent befinden. In diesem Fall muss das Zielkonto das Ziel anrufen, um die Zustellung zu ermöglichen. PutDeliveryDestinationPolicy Auf diese Weise sammelt ein zentrales Konto Datensätze für Abonnenten, die ihm nicht gehören.
Einen Auslieferungsdatensatz lesen
EventBridge gibt einen Datensatz pro Zustellungsversuch und Ereignis aus. Vier Felder befinden sich auf der obersten Ebene. message_typesteht EVENT_DELIVERY_ATTEMPT für einen Zustellversuch; die anderen Typen sind am Anfang dieses Abschnitts aufgeführt. resource_arnist der ARN des Abonnenten, der den Versuch unternommen hat. Auf diese Weise trennen Sie Abonnenten, die sich eine Protokollgruppe teilen. log_levelist die Ebene des Datensatzes selbst: ein erfolgreicher Versuch istINFO, ein fehlgeschlagener Versuch schonERROR, weshalb Level ERROR immer noch Fehler aufgezeichnet werden. detailsist ein Objekt, das den Lieferstatus enthält, und es enthält die Felder, auf denen Sie Abfragen und Alarme erstellen.
outcomeundattempt_count-
SUCCESSoderFAILUREfür diesen Versuch, und um welchen Versuch es sich handelte, also sind Wiederholungen zählbar. terminal_kind-
Steht in dem einen Datensatz, der angibt, wie das Ereignis geendet hat:
EVENTS_DELIVEREDON_FAILURE_DESTINATION_DELIVERED, oderEVENTS_DROPPEDwann die Anzahl der Wiederholungsversuche abgelaufen ist und kein Ziel für den Fall eines Fehlers konfiguriert wurde. target_arnundtarget_properties-
Das Ziel, gegen das der Versuch unternommen wurde, und die Zielparameter, die der Abonnent für dieses Ereignis ermittelt hat.
target_propertieswird weggelassen, wenn der Abonnent keine Parameter konfiguriert. ingestion_to_start_latency_msundingestion_to_complete_latency_ms-
Millisekunden von der Erfassung des Ereignisses bis zum Beginn und Ende dieses Versuchs.
target_input-
Die an das Ziel gesendeten Bytes, wortwörtlich. Dies ist ein Nutzdatenfeld; siehe. Nutzlasten in Protokolldatensätzen
event_detail,event_metadataundevent_system_metadata-
Die Veranstaltung hat sie EventBridge abgehalten.
event_system_metadataenthält die Identifikatoren, mit denen Sie Datensätze korrelieren.event_detailerscheint nur, wenn es sich von dem unterscheidettarget_input, was der Fall ist, wenn der Abonnent über einen Transformator verfügt.
Um eine Lieferung zu diagnostizieren, die nie eingetroffen ist, lesen Sie die Aufzeichnungen des Abonnenten in dieser Reihenfolge. outcomesagt, ob das Ziel überhaupt EventBridge erreicht wurde. attempt_countgibt an, ob es immer noch versucht wird, weil ein Event ohne terminal_kind Datensatz noch nicht beendet wurde. terminal_kindgibt an, wie es geendet hat, und trennt ein Ereignis, das mit einem leeren Buchstaben versehen war, von einem Ereignis, das abgebrochen wurde. target_arntarget_properties, und gibt target_input an, was gesendet wurde und wo ein Transformator- oder Zielparameterproblem auftritt. Ein Fehler ist im Datensatz sichtbar, sobald der Versuch fehlschlägt, sodass Sie nicht warten müssen, bis die Wiederholungsversuche abgeschlossen sind. Das vollständige Verfahren finden Sie unter Fehlerbehebung: Sie haben veröffentlicht und nichts ist am Ziel angekommen.
Nutzlasten in Protokolldatensätzen
IncludePayloadsteuert zwei Felder und keine anderen: details.target_input unddetails.event_detail. Jedes zweite Feld wird ausgegeben, egal welchen Wert Sie wählen. Ein Abonnent, der Payloads aus seinen Aufzeichnungen heraushält, meldet trotzdem das Ergebnis, das Ziel, die Anzahl der Versuche und die Latenzen. FULLbettet die Nutzlast in jeden Datensatz ein, einschließlich der Datensätze für erfolgreiche Lieferungen. ON_ERROR_ONLY, die Standardeinstellung, bettet sie nur in Fehlerdatensätze ein und lässt bei einer erfolgreichen Lieferung beide Felder aus einem Datensatz aus.
Wichtig
Ein Protokolldatensatz, der eine Nutzlast enthält, enthält Ihre Daten. Mit enthält die Protokollgruppe eine Kopie aller EreignisseFULL, die der Abonnent übermittelt hat, und jeder, der die Protokollgruppe lesen kann, kann diese Texte lesen. Verwenden Sie es, FULL während Sie einen Abonnenten debuggen, und geben Sie es dann an ON_ERROR_ONLY zurück. Dadurch werden sowohl die Exposition als auch die Menge, die Sie speichern, begrenzt.
API-Aufrufe AWS CloudTrail
In den Abonnentenprotokollen werden die Lieferungen aufgezeichnet, nicht die Aufrufe, die Sie zu deren Konfiguration tätigen. AWS CloudTrail zeichnet die Verwaltungs-API-Aufrufe auf, sodass eine Änderung an einem Bus, einem Abonnenten oder einer Ereignisquelle von Ihrem Protokoll aus überprüft werden kann und nicht anhand einer Protokollgruppe. Informationen zur EventBridge Integration mit finden Sie CloudTrail unterProtokollieren von Amazon EventBridge API-Aufrufen mit AWS CloudTrail.