Skip to content

Bug: Unable to push metrics with multiple dimensions #662

Closed
@Euclidite

Description

@Euclidite

Expected Behaviour

I expect to be able to push metrics with multiple dimensions either via PushSingleMetric or multiple calls to AddDimension.

Current Behaviour

When using any of the following:

Metrics.SetDefaultDimensions(new Dictionary<string, string> {
    { "SessionId", input.SessionId ?? "Unset" }
});

Metrics.PushSingleMetric("Lambda Execute", 1, MetricUnit.Count, metricResolution: MetricResolution.High,
    defaultDimensions: new Dictionary<string, string> {
        { "Type", "Start" }
});
Metrics.PushSingleMetric("Lambda Execute", 1, MetricUnit.Count, metricResolution: MetricResolution.High,
    defaultDimensions: new Dictionary<string, string> {
        { "Type", "Start" },
        { "SessionId", input.SessionId ?? "Unset" }
});
Metrics.AddMetric("Lambda Execute", 1, MetricUnit.Count, MetricResolution.High);
Metrics.AddDimension("SessionId", input.SessionId ?? "Unset");
Metrics.AddDimension("Type", "Start");

The following EMF is logged:

{
    "_aws": {
        "Timestamp": 1728338129260,
        "CloudWatchMetrics": [
            {
                "Namespace": "Services",
                "Metrics": [
                    {
                        "Name": "Lambda Execute",
                        "Unit": "Count",
                        "StorageResolution": 1
                    }
                ],
                "Dimensions": [
                    [
                        "SessionId"
                    ],
                    [
                        "Type"
                    ],
                    [
                        "Service"
                    ]
                ]
            }
        ]
    },
    "SessionId": "3da49fdb-aa91-4523-a6ea-a030817d2410",
    "Type": "Start",
    "Service": "coordinator",
    "Lambda Execute": 1
}

And the following appears in the CloudWatch console:
Image

Essentially, it creates 3 different metrics for each dimension.

Code snippet

Metrics.AddMetric("Lambda Execute", 1, MetricUnit.Count, MetricResolution.High);
Metrics.AddDimension("SessionId", input.SessionId ?? "Unset");
Metrics.AddDimension("Type", "Start");

Possible Solution

No response

Steps to Reproduce

See code snippet

Powertools for AWS Lambda (.NET) version

latest

AWS Lambda function runtime

dotnet8

Debugging logs

No response

Metadata

Metadata

Assignees

Labels

area/metricsCore metrics utilitybugUnexpected, reproducible and unintended software behaviourpending-releaseFix or implementation already in dev waiting to be releasedv2v2 release

Type

No type

Projects

Status

✅ Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions