Keysmith

Observability

Metrics counters for monitoring Keysmith operations.

The observability plugin tracks Keysmith lifecycle events as go-utils metric counters. It implements all 13 lifecycle hook interfaces, incrementing a dedicated counter for each event.

Setup

import "github.com/xraph/keysmith/observability"

// Default collector
eng, _ := keysmith.NewEngine(
    keysmith.WithStore(store),
    keysmith.WithExtension(observability.NewMetricsExtension()),
)

// Custom metric factory
factory := gu.NewMetricsCollector("myapp/keysmith")
eng, _ := keysmith.NewEngine(
    keysmith.WithStore(store),
    keysmith.WithExtension(observability.NewMetricsExtensionWithFactory(factory)),
)

Counters

CounterIncremented when
keysmith.key.createdKey successfully created
keysmith.key.create_failedKey creation fails
keysmith.key.validatedKey passes validation
keysmith.key.validation_failedKey validation fails
keysmith.key.rotatedKey is rotated
keysmith.key.revokedKey is permanently revoked
keysmith.key.suspendedKey is temporarily suspended
keysmith.key.reactivatedSuspended key is reactivated
keysmith.key.expiredKey found expired during validation
keysmith.key.rate_limitedKey exceeds rate limit
keysmith.policy.createdPolicy created
keysmith.policy.updatedPolicy updated
keysmith.policy.deletedPolicy deleted

go-utils integration

The MetricsExtension uses the gu.MetricFactory and gu.Counter interfaces from github.com/xraph/go-utils/metrics. These integrate with your existing monitoring stack (Prometheus, Datadog, etc.) via the go-utils adapter pattern.

import gu "github.com/xraph/go-utils/metrics"

// Provide your own factory for custom metric backends
factory := myCustomFactory{} // implements gu.MetricFactory
ext := observability.NewMetricsExtensionWithFactory(factory)

On this page