observability

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 18, 2025 License: GPL-3.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewLogger

func NewLogger(level string) *slog.Logger

NewLogger creates a new slog.Logger with JSON output and UTC timestamps

Types

type ComponentHealth

type ComponentHealth struct {
	Status    ComponentStatus `json:"status"`
	Message   string          `json:"message,omitempty"`
	LastCheck time.Time       `json:"last_check"`
}

ComponentHealth represents the health of a single component

type ComponentStatus

type ComponentStatus string

ComponentStatus represents the health status of a component

const (
	StatusHealthy   ComponentStatus = "healthy"
	StatusUnhealthy ComponentStatus = "unhealthy"
	StatusUnknown   ComponentStatus = "unknown"
)

type HealthCheckFunc

type HealthCheckFunc func(ctx context.Context) error

HealthCheckFunc is a function that checks the health of a component

type HealthChecker

type HealthChecker struct {
	// contains filtered or unexported fields
}

HealthChecker provides health check functionality

func NewHealthChecker

func NewHealthChecker(logger *slog.Logger) *HealthChecker

NewHealthChecker creates a new health checker

func (*HealthChecker) CheckComponent

func (h *HealthChecker) CheckComponent(ctx context.Context, name string, checkFunc HealthCheckFunc)

CheckComponent runs a health check function and updates the component status

func (*HealthChecker) GetHealth

func (h *HealthChecker) GetHealth() HealthStatus

GetHealth returns the current health status

func (*HealthChecker) HealthHandler

func (h *HealthChecker) HealthHandler() http.HandlerFunc

HealthHandler returns an HTTP handler for the health endpoint

func (*HealthChecker) ReadyHandler

func (h *HealthChecker) ReadyHandler() http.HandlerFunc

ReadyHandler returns an HTTP handler for the readiness endpoint

func (*HealthChecker) RegisterComponent

func (h *HealthChecker) RegisterComponent(name string)

RegisterComponent registers a component for health checking

func (*HealthChecker) StartPeriodicChecks

func (h *HealthChecker) StartPeriodicChecks(ctx context.Context, interval time.Duration, checks map[string]HealthCheckFunc)

StartPeriodicChecks starts periodic health checks for registered components

func (*HealthChecker) UpdateComponentHealth

func (h *HealthChecker) UpdateComponentHealth(name string, status ComponentStatus, message string)

UpdateComponentHealth updates the health status of a component

type HealthStatus

type HealthStatus struct {
	Status     ComponentStatus            `json:"status"`
	Components map[string]ComponentHealth `json:"components"`
	Timestamp  time.Time                  `json:"timestamp"`
}

HealthStatus represents the overall health status

type Metrics

type Metrics struct {
	// Queue metrics
	QueueDepth     prometheus.Gauge
	QueueEnqueued  prometheus.Counter
	QueueDequeued  prometheus.Counter
	QueueCompleted prometheus.Counter
	QueueFailed    prometheus.Counter

	// Scan metrics
	ScansTotal   prometheus.Counter
	ScansFailed  prometheus.Counter
	ScanDuration prometheus.Histogram

	// Policy metrics
	PolicyPassed prometheus.Counter
	PolicyFailed prometheus.Counter

	// Vulnerability metrics
	VulnerabilitiesFound *prometheus.CounterVec
	ToleratedCVEs        prometheus.Counter

	// Attestation metrics
	AttestationsCreated *prometheus.CounterVec
	AttestationsFailed  *prometheus.CounterVec

	// Signing metrics
	ImagesSigned  prometheus.Counter
	SigningFailed prometheus.Counter

	// Discovery metrics
	ImagesDiscovered prometheus.Counter
	DiscoveryErrors  prometheus.Counter

	// Worker metrics
	WorkerTasksProcessed prometheus.Counter
	WorkerErrors         prometheus.Counter

	// Conditional scanning metrics
	ConditionalScanDecisionsTotal *prometheus.CounterVec
	ConditionalScanSkippedTotal   *prometheus.CounterVec
	ConditionalScanEnqueuedTotal  *prometheus.CounterVec
	ConditionalScanSkipAgeSeconds *prometheus.HistogramVec
}

Metrics holds all Prometheus metrics for the application

func GetMetrics

func GetMetrics() *Metrics

GetMetrics returns the singleton metrics instance

type Server

type Server struct {
	// contains filtered or unexported fields
}

Server provides HTTP endpoints for metrics and health checks

func NewServer

func NewServer(metricsPort, healthPort int, logger *slog.Logger, healthChecker *HealthChecker) *Server

NewServer creates a new observability server

func (*Server) Shutdown

func (s *Server) Shutdown(ctx context.Context) error

Shutdown gracefully shuts down the observability servers

func (*Server) Start

func (s *Server) Start(ctx context.Context) error

Start starts the observability servers

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL