Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var CreateOnCallProvider func(cfg *config.Config, awsClient *ssmincidents.Client) (OnCallProvider, error)
Function that will be implemented in the common package to avoid circular imports
Functions ¶
func InitOnCallWorkflow ¶
func InitOnCallWorkflow(awsClient *ssmincidents.Client, redisClient *redis.Client)
InitOnCallWorkflow initializes the global singleton instance This is called once from main.go with the Redis client and AWS client
Types ¶
type AIAnalyzer ¶ added in v1.3.9
type AIAnalyzer interface {
Name() string
Analyze(ctx context.Context, result AgentResult) (*AIFinding, error)
}
AIAnalyzer turns an AgentResult into an AIFinding. Concrete analyzers (OpenAI-compatible chat/completions, etc.) implement this interface.
type AIFinding ¶ added in v1.3.9
type AIFinding struct {
Title string
Summary string
Severity string // critical|high|medium|low
Category string // e.g. "database", "auth", "deploy"
Confidence float64 // 0..1
Suggestions []string
SampleIDs []string // signal IDs / pattern IDs for traceability
}
AIFinding is the structured response returned by an AIAnalyzer for an unknown / spiking pattern. Used by detect mode.
type AgentResult ¶ added in v1.3.9
type AgentResult struct {
Verdict AgentVerdict
PatternID string // empty when VerdictUnknown and pattern not yet stored
Template string // human-readable pattern template ("Failed to ... at <*>:<*>")
SampleSignals []Signal // representative signals (capped, post-redaction)
Frequency int // matches in the current tick / window
Baseline float64 // EWMA baseline for the pattern (0 when unknown)
}
AgentResult is the output of a Detector for one batch of signals that share the same fingerprint.
type AgentVerdict ¶ added in v1.3.9
type AgentVerdict int
AgentVerdict is the classification a Detector pipeline assigns to a batch of signals that share a fingerprint.
const ( // VerdictKnownPattern means the pattern is in the catalog and current // frequency is within baseline — suppress (no AI, no incident). VerdictKnownPattern AgentVerdict = iota // VerdictUnknown means the pattern was never seen during training — // forward to AI for analysis. VerdictUnknown // VerdictSpike means the pattern is known but frequency exceeds the // baseline by more than the configured threshold — forward to AI. VerdictSpike )
func (AgentVerdict) String ¶ added in v1.3.9
func (v AgentVerdict) String() string
String renders an AgentVerdict for logging.
type Alert ¶
type Alert struct {
// contains filtered or unexported fields
}
func NewAlert ¶
func NewAlert(providers ...AlertProvider) *Alert
type AlertProvider ¶
AlertProvider interface remains the same
type Detector ¶ added in v1.3.9
type Detector interface {
Name() string
Process(ctx context.Context, batch []Signal) ([]AgentResult, error)
}
Detector consumes signals and emits AgentResults.
type OnCallProvider ¶ added in v1.3.0
type OnCallProvider interface {
TriggerOnCall(ctx context.Context, incidentID string, cfg *config.OnCallConfig) error
}
OnCallProvider defines the interface for on-call notification providers
type OnCallWorkflow ¶
type OnCallWorkflow struct {
// contains filtered or unexported fields
}
OnCallWorkflow coordinates on-call escalation with a single provider
func GetOnCallWorkflow ¶
func GetOnCallWorkflow() *OnCallWorkflow
GetOnCallWorkflow returns the global singleton instance This maintains compatibility with existing code
func NewOnCallWorkflow ¶ added in v1.3.0
func NewOnCallWorkflow(redisClient *redis.Client, provider OnCallProvider) *OnCallWorkflow
NewOnCallWorkflow creates a new on-call workflow with the given provider
func (*OnCallWorkflow) Ack ¶
func (w *OnCallWorkflow) Ack(incidentID string) error
Ack acknowledges an incident to prevent escalation
func (*OnCallWorkflow) Start ¶
func (w *OnCallWorkflow) Start(incidentID string, oc config.OnCallConfig) error
Start initiates the on-call workflow for an incident
type QueueListener ¶
type Signal ¶ added in v1.3.9
type Signal struct {
Source string // e.g. "elasticsearch:prod-app"
Timestamp time.Time
Severity string // raw severity from source, best-effort
Message string // primary text payload
Fields map[string]interface{} // structured fields
Raw map[string]interface{} // original document (capped size)
}
Signal is one normalized observation pulled from a SignalSource.
Fields holds best-effort structured fields; Raw is the original source document (capped to AgentConfig.SignalMaxBytes by the SignalSource so the pipeline cannot OOM on large documents).
type SignalSource ¶ added in v1.3.9
type SignalSource interface {
// Name uniquely identifies the configured source instance. It is used as
// part of Redis cursor keys, so it must be stable across restarts.
Name() string
// Pull returns all signals strictly newer than `since`, plus the new
// cursor (== max timestamp seen, or `since` if no signals were returned).
Pull(ctx context.Context, since time.Time) ([]Signal, time.Time, error)
}
SignalSource is a puller for one external observability backend (Elasticsearch, Loki, CloudWatch, ...).