Sentinel

Observability

Built-in metrics extension with lifecycle counters.

The observability package provides a MetricsExtension that records counters for all evaluation lifecycle events using the go-utils MetricFactory.

Setup

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

// Using default metrics collector
metricsExt := observability.NewMetricsExtension()

// Or with a custom factory
factory := metrics.NewMetricsCollector("my-app")
metricsExt := observability.NewMetricsExtensionWithFactory(factory)

// Register with engine
eng, err := engine.New(
    engine.WithExtension(metricsExt),
)

Counters

The extension records counters for evaluation lifecycle events:

Counter nameHookDescription
sentinel.eval.run.startedOnEvalRunStartedEvaluation runs initiated
sentinel.eval.run.completedOnEvalRunCompletedRuns completed successfully
sentinel.eval.run.failedOnEvalRunFailedRuns that failed
sentinel.case.startedOnCaseStartedCase evaluations initiated
sentinel.case.completedOnCaseCompletedCase evaluations completed
sentinel.case.failedOnCaseFailedCase evaluations failed
sentinel.regression.detectedOnRegressionDetectedRegressions detected
sentinel.baseline.savedOnBaselineSavedBaselines saved
sentinel.redteam.startedOnRedTeamStartedRed team evaluations started
sentinel.redteam.completedOnRedTeamCompletedRed team evaluations completed

Interface compliance

The MetricsExtension implements the relevant hook interfaces plus the base plugin.Extension:

var _ plugin.Extension        = (*MetricsExtension)(nil)
var _ plugin.EvalRunStarted   = (*MetricsExtension)(nil)
var _ plugin.EvalRunCompleted = (*MetricsExtension)(nil)
var _ plugin.EvalRunFailed    = (*MetricsExtension)(nil)
var _ plugin.CaseStarted      = (*MetricsExtension)(nil)
var _ plugin.CaseCompleted     = (*MetricsExtension)(nil)
var _ plugin.CaseFailed        = (*MetricsExtension)(nil)
var _ plugin.RegressionDetected = (*MetricsExtension)(nil)
var _ plugin.BaselineSaved      = (*MetricsExtension)(nil)
var _ plugin.RedTeamStarted     = (*MetricsExtension)(nil)
var _ plugin.RedTeamCompleted   = (*MetricsExtension)(nil)

On this page