awslabs / awslabs/aws-embedded-metrics-python

Using create_metrics_logger() directly?

Open
#71 1 comment 0 reactions 0 assignees View on GitHub
question
Dominant language
Python
Stars
231
Forks
44
PR merge metrics
No merged PRs in 30d

Description

Hello!

I'm wondering what happens if I use `create_metrics_logger()` directly to create a `MetricsLogger` and put a metric.

The problem I am trying to solve is below.

Within my lambda, I have a function below that I call thousands of times to validate thousands of data points, and log violation if validation fails.

```
@metric_scope
def apply_validation_and_log_violation(
self,
value: Any,
default_value: Any,
validation_func: Callable,
metrics: MetricsLogger
):
if validation_func(value):
return value

metrics.put_metric("ValidationFailed", 1, "Count")

```

But calling a function, wrapped with `@metric_scope` decorator, thousands of times is flooding my cloudwatch log. It seems like for each function call, below is getting logged:

```
{"LogGroup": "test", "ServiceName": "test", "ServiceType": "AWS::Lambda::Function", "executionEnvironment": "AWS_Lambda_python3.8", "memorySize": "512", "functionVersion": "$LATEST", "logStreamId": "2021/09/09/[$LATEST]83e2421e4e5dbf0e84c58c4d0876b3fd", "traceId": "Root=1-dc99d00f-c079a84d433534434534ef0d;Parent=91ed514f1e5c03b2;Sampled=1", "_aws": {"Timestamp": 1631212956097, "CloudWatchMetrics": [{"Dimensions": [["LogGroup", "ServiceName", "ServiceType"]], "Metrics": [], "Namespace": "aws-embedded-metrics"}]}}
```

So I am wondering if I can create a `MetricsLogger` object with `create_metrics_logger` function and pass that object around.

Thanks!

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.