From 9e02f4082468ff9853638d473f06a238cecc5ccc Mon Sep 17 00:00:00 2001 From: Joel Scheuner Date: Wed, 20 Nov 2024 17:45:48 +0100 Subject: [PATCH] Add EventBridge rule target analytics --- localstack-core/localstack/services/events/provider.py | 4 +++- localstack-core/localstack/services/events/usage.py | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 localstack-core/localstack/services/events/usage.py diff --git a/localstack-core/localstack/services/events/provider.py b/localstack-core/localstack/services/events/provider.py index 32ec4015a65c1..0083b13c8c9d8 100644 --- a/localstack-core/localstack/services/events/provider.py +++ b/localstack-core/localstack/services/events/provider.py @@ -145,6 +145,7 @@ TargetSenderDict, TargetSenderFactory, ) +from localstack.services.events.usage import rule_error, rule_invocation from localstack.services.events.utils import ( extract_event_bus_name, extract_region_and_account_id, @@ -1334,7 +1335,6 @@ def put_events( f"1 validation error detected: Value '{formatted_entries}' at 'entries' failed to satisfy constraint: Member must have length less than or equal to 10" ) entries, failed_entry_count = self._process_entries(context, entries) - response = PutEventsResponse( Entries=entries, FailedEntryCount=failed_entry_count, @@ -2035,7 +2035,9 @@ def _process_rules( try: target_sender.process_event(event_formatted.copy()) processed_entries.append({"EventId": event_formatted["id"]}) + rule_invocation.record(target_sender.service) except Exception as error: + rule_error.record(target_sender.service) processed_entries.append( { "ErrorCode": "InternalException", diff --git a/localstack-core/localstack/services/events/usage.py b/localstack-core/localstack/services/events/usage.py new file mode 100644 index 0000000000000..c63f1b4a689ca --- /dev/null +++ b/localstack-core/localstack/services/events/usage.py @@ -0,0 +1,7 @@ +from localstack.utils.analytics.usage import UsageSetCounter + +# number of pipe invocations per source (e.g. aws:sqs, aws:kafka, SelfManagedKafka) and target (e.g., aws:lambda) +rule_invocation = UsageSetCounter("events:rule:invocation") + +# number of pipe errors per source (e.g. aws:sqs, aws:kafka, SelfManagedKafka) and target (e.g., aws:lambda) +rule_error = UsageSetCounter("events:rule:error")