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 name | Hook | Description |
|---|---|---|
sentinel.eval.run.started | OnEvalRunStarted | Evaluation runs initiated |
sentinel.eval.run.completed | OnEvalRunCompleted | Runs completed successfully |
sentinel.eval.run.failed | OnEvalRunFailed | Runs that failed |
sentinel.case.started | OnCaseStarted | Case evaluations initiated |
sentinel.case.completed | OnCaseCompleted | Case evaluations completed |
sentinel.case.failed | OnCaseFailed | Case evaluations failed |
sentinel.regression.detected | OnRegressionDetected | Regressions detected |
sentinel.baseline.saved | OnBaselineSaved | Baselines saved |
sentinel.redteam.started | OnRedTeamStarted | Red team evaluations started |
sentinel.redteam.completed | OnRedTeamCompleted | Red 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)