CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-aws-lambda-powertools--metrics

CloudWatch metrics utility for AWS Lambda functions using Embedded Metric Format with asynchronous metric emission

Overview
Eval results
Files

AWS Lambda Powertools Metrics

CloudWatch metrics utility for AWS Lambda using Embedded Metric Format (EMF). Emits custom metrics asynchronously without impacting function latency.

Installation

npm install @aws-lambda-powertools/metrics

Core Imports

import { Metrics, MetricUnit, MetricResolution } from '@aws-lambda-powertools/metrics';
import { logMetrics } from '@aws-lambda-powertools/metrics/middleware';
import type { MetricsOptions, Dimensions, ExtraOptions } from '@aws-lambda-powertools/metrics/types';

Basic Usage

import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics';

const metrics = new Metrics({
  namespace: 'serverlessAirline',
  serviceName: 'orders',
  defaultDimensions: { environment: 'prod' }
});

export const handler = async (event: { requestId: string }) => {
  metrics.addMetadata('request_id', event.requestId);
  metrics.addDimension('region', 'us-west-2');
  metrics.addMetric('successfulBooking', MetricUnit.Count, 1);
  metrics.publishStoredMetrics();
};

Key Components

Metrics Class: Main interface for metric operations. Buffers up to 100 metrics per EMF blob, supports dimensions (max 29), metadata, and automatic/manual flushing.

Metric Buffering: Automatically buffers metrics and flushes when buffer reaches 100 metrics or 100 values per metric.

Dimensions: Low-cardinality key-value pairs for filtering/grouping metrics in CloudWatch (max 29). Cleared after publishing except default dimensions.

Metadata: High-cardinality contextual data searchable in CloudWatch Logs but not in Metrics UI. No limit on entries.

EMF Serialization: Converts metrics to CloudWatch Embedded Metric Format for asynchronous processing via stdout.

Documentation Structure

  • API Reference - Complete API surface with signatures
  • Usage Patterns - Common implementation patterns
  • Constraints - Limits, requirements, and environment variables

MetricUnit Constants

const MetricUnit = {
  // Time
  Seconds: 'Seconds', Microseconds: 'Microseconds', Milliseconds: 'Milliseconds',
  // Size
  Bytes: 'Bytes', Kilobytes: 'Kilobytes', Megabytes: 'Megabytes', Gigabytes: 'Gigabytes', Terabytes: 'Terabytes',
  // Bits
  Bits: 'Bits', Kilobits: 'Kilobits', Megabits: 'Megabits', Gigabits: 'Gigabits', Terabits: 'Terabits',
  // Other
  Percent: 'Percent', Count: 'Count',
  // Rate (per second)
  BytesPerSecond: 'Bytes/Second', KilobytesPerSecond: 'Kilobytes/Second', MegabytesPerSecond: 'Megabytes/Second',
  GigabytesPerSecond: 'Gigabytes/Second', TerabytesPerSecond: 'Terabytes/Second', BitsPerSecond: 'Bits/Second',
  KilobitsPerSecond: 'Kilobits/Second', MegabitsPerSecond: 'Megabits/Second', GigabitsPerSecond: 'Gigabits/Second',
  TerabitsPerSecond: 'Terabits/Second', CountPerSecond: 'Count/Second',
  // None
  NoUnit: 'None'
} as const;

MetricResolution Constants

const MetricResolution = {
  Standard: 60,  // 60 seconds - lower cost
  High: 1        // 1 second - higher cost, better granularity
} as const;

Install with Tessl CLI

npx tessl i tessl/npm-aws-lambda-powertools--metrics
Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/@aws-lambda-powertools/metrics@2.29.x