func registerMetricsWith()

in pkg/observability/opentelemetry.go [170:219]


func registerMetricsWith(provider *metric.MeterProvider) (Metrics, error) {
	meter := provider.Meter("aws.node.termination.handler")

	// Deprecated: actionsCounter metric has a high label cardinality, resulting in numerous time-series which utilize
	// a large amount of memory. Use actionsCounterV2 metric instead.
	name := "actions.node"
	actionsCounter, err := meter.Int64Counter(name, api.WithDescription("Number of actions per node"))
	if err != nil {
		return Metrics{}, fmt.Errorf("failed to create Prometheus counter %q: %w", name, err)
	}
	actionsCounter.Add(context.Background(), 0)

	// Recommended replacement for actionsCounter metric
	name = "actions"
	actionsCounterV2, err := meter.Int64Counter(name, api.WithDescription("Number of actions"))
	if err != nil {
		return Metrics{}, fmt.Errorf("failed to create Prometheus counter %q: %w", name, err)
	}
	actionsCounterV2.Add(context.Background(), 0)

	name = "events.error"
	errorEventsCounter, err := meter.Int64Counter(name, api.WithDescription("Number of errors in events processing"))
	if err != nil {
		return Metrics{}, fmt.Errorf("failed to create Prometheus counter %q: %w", name, err)
	}
	errorEventsCounter.Add(context.Background(), 0)

	name = "nth_tagged_nodes"
	nthTaggedNodesGauge, err := meter.Int64Gauge(name, api.WithDescription("Number of nodes processing"))
	if err != nil {
		return Metrics{}, fmt.Errorf("failed to create Prometheus gauge %q: %w", name, err)
	}
	nthTaggedNodesGauge.Record(context.Background(), 0)

	name = "nth_tagged_instances"
	nthTaggedInstancesGauge, err := meter.Int64Gauge(name, api.WithDescription("Number of instances processing"))
	if err != nil {
		return Metrics{}, fmt.Errorf("failed to create Prometheus gauge %q: %w", name, err)
	}
	nthTaggedInstancesGauge.Record(context.Background(), 0)

	return Metrics{
		meter:                   meter,
		errorEventsCounter:      errorEventsCounter,
		actionsCounter:          actionsCounter,
		actionsCounterV2:        actionsCounterV2,
		nthTaggedNodesGauge:     nthTaggedNodesGauge,
		nthTaggedInstancesGauge: nthTaggedInstancesGauge,
	}, nil
}