health

package
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: Aug 20, 2025 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AdvancedCheckFunc added in v1.0.2

type AdvancedCheckFunc func(ctx context.Context, metadata map[string]interface{}) *AdvancedCheckResult

AdvancedCheckFunc representa una función de health check mejorada

type AdvancedCheckResult added in v1.0.2

type AdvancedCheckResult struct {
	Name        string                 `json:"name"`
	Status      AdvancedStatus         `json:"status"`
	Message     string                 `json:"message,omitempty"`
	Error       string                 `json:"error,omitempty"`
	Duration    time.Duration          `json:"duration"`
	Timestamp   time.Time              `json:"timestamp"`
	Metadata    map[string]interface{} `json:"metadata,omitempty"`
	Critical    bool                   `json:"critical"`
	Timeout     time.Duration          `json:"timeout"`
	LastSuccess time.Time              `json:"last_success,omitempty"`

	// Campos extendidos para gopherkit
	Severity        Severity           `json:"severity"`
	Component       string             `json:"component"`
	Category        string             `json:"category"`
	Recommendations []string           `json:"recommendations,omitempty"`
	Dependencies    []string           `json:"dependencies,omitempty"`
	Metrics         map[string]float64 `json:"metrics,omitempty"`
	Trend           HealthTrend        `json:"trend,omitempty"`
	RetryCount      int                `json:"retry_count,omitempty"`
	MaxRetries      int                `json:"max_retries,omitempty"`
}

AdvancedCheckResult representa el resultado de un health check con información extendida

type AdvancedCheckerConfig added in v1.0.2

type AdvancedCheckerConfig struct {
	ServiceName    string
	DatabaseMode   string
	DatabaseSchema string
	DatabaseURL    string
	RedisURL       string
	RedisNamespace string
	DefaultTimeout time.Duration
	CriticalChecks []string
	Metadata       map[string]interface{}

	// Configuración extendida
	Environment             string
	EnableTrendAnalysis     bool
	EnableSystemInfo        bool
	EnableRecommendations   bool
	EnablePrometheusMetrics bool
	MaxHistoryEntries       int
	CheckInterval           time.Duration
	ParallelCheckLimit      int

	// Integración con gopherkit
	BaseConfig   *config.BaseConfig
	AlertManager *monitoring.AlertManager
}

AdvancedCheckerConfig mantiene la configuración del health checker avanzado

func LoadAdvancedConfigFromBase added in v1.0.2

func LoadAdvancedConfigFromBase(baseConfig *config.BaseConfig, serviceName string) *AdvancedCheckerConfig

LoadAdvancedConfigFromBase carga configuración avanzada desde BaseConfig de gopherkit

func LoadAdvancedDefaultConfig added in v1.0.2

func LoadAdvancedDefaultConfig() *AdvancedCheckerConfig

LoadAdvancedDefaultConfig carga configuración por defecto avanzada

type AdvancedHealthChecker added in v1.0.2

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

AdvancedHealthChecker realiza health checks con funcionalidades avanzadas

func NewAdvancedHealthChecker added in v1.0.2

func NewAdvancedHealthChecker(config *AdvancedCheckerConfig, db *sql.DB, redisClient *redis.Client) *AdvancedHealthChecker

NewAdvancedHealthChecker crea un nuevo health checker con funcionalidades avanzadas

func (*AdvancedHealthChecker) CheckAdvancedHealth added in v1.0.2

func (hc *AdvancedHealthChecker) CheckAdvancedHealth(ctx context.Context) *AdvancedHealthResult

CheckAdvancedHealth realiza todos los health checks avanzados

func (*AdvancedHealthChecker) CloseAdvanced added in v1.0.2

func (hc *AdvancedHealthChecker) CloseAdvanced() error

CloseAdvanced cierra el health checker avanzado de forma graciosa

func (*AdvancedHealthChecker) GetAdvancedLastResult added in v1.0.2

func (hc *AdvancedHealthChecker) GetAdvancedLastResult() *AdvancedHealthResult

GetAdvancedLastResult retorna el último resultado de health check avanzado

func (*AdvancedHealthChecker) HTTPAdvancedHandler added in v1.0.2

func (hc *AdvancedHealthChecker) HTTPAdvancedHandler() http.HandlerFunc

HTTPAdvancedHandler retorna un handler HTTP para health checks avanzados

func (*AdvancedHealthChecker) RegisterAdvancedCheck added in v1.0.2

func (hc *AdvancedHealthChecker) RegisterAdvancedCheck(name string, checkFunc AdvancedCheckFunc)

RegisterAdvancedCheck registra un nuevo health check avanzado

type AdvancedHealthResult added in v1.0.2

type AdvancedHealthResult struct {
	Status    AdvancedStatus                  `json:"status"`
	Timestamp time.Time                       `json:"timestamp"`
	Duration  time.Duration                   `json:"duration"`
	Checks    map[string]*AdvancedCheckResult `json:"checks"`
	Metadata  map[string]interface{}          `json:"metadata,omitempty"`
	Version   string                          `json:"version,omitempty"`
	Service   string                          `json:"service"`
	Mode      string                          `json:"mode"`

	// Campos extendidos
	Environment     string                 `json:"environment"`
	OverallSeverity Severity               `json:"overall_severity"`
	Summary         AdvancedHealthSummary  `json:"summary"`
	SystemInfo      AdvancedSystemInfo     `json:"system_info"`
	Alerts          []HealthAlert          `json:"alerts,omitempty"`
	Recommendations []string               `json:"recommendations,omitempty"`
	TrendAnalysis   map[string]HealthTrend `json:"trend_analysis,omitempty"`
}

AdvancedHealthResult representa el resultado general de health checks con funcionalidades avanzadas

type AdvancedHealthSummary added in v1.0.2

type AdvancedHealthSummary struct {
	TotalChecks    int              `json:"total_checks"`
	HealthyChecks  int              `json:"healthy_checks"`
	CriticalIssues int              `json:"critical_issues"`
	Warnings       int              `json:"warnings"`
	ByCategory     map[string]int   `json:"by_category"`
	BySeverity     map[Severity]int `json:"by_severity"`
	UpTime         time.Duration    `json:"uptime"`
	LastRestart    time.Time        `json:"last_restart,omitempty"`
}

AdvancedHealthSummary proporciona un resumen ejecutivo del estado de salud

type AdvancedStatus added in v1.0.2

type AdvancedStatus string

Status representa el estado de salud de un componente con estados extendidos

const (
	AdvancedStatusHealthy     AdvancedStatus = "healthy"
	AdvancedStatusUnhealthy   AdvancedStatus = "unhealthy"
	AdvancedStatusDegraded    AdvancedStatus = "degraded"
	AdvancedStatusUnknown     AdvancedStatus = "unknown"
	AdvancedStatusMaintenance AdvancedStatus = "maintenance"
	AdvancedStatusWarning     AdvancedStatus = "warning"
	AdvancedStatusCritical    AdvancedStatus = "critical"
	AdvancedStatusRecovering  AdvancedStatus = "recovering"
)

type AdvancedSystemInfo added in v1.0.2

type AdvancedSystemInfo struct {
	GoVersion     string            `json:"go_version"`
	Runtime       RuntimeInfo       `json:"runtime"`
	Dependencies  map[string]string `json:"dependencies"`
	Configuration map[string]string `json:"configuration"`
	Resources     ResourceUsage     `json:"resources"`
	Capabilities  []string          `json:"capabilities"`
}

AdvancedSystemInfo proporciona información extendida del sistema

type CheckResult

type CheckResult struct {
	Name   string
	Health ComponentHealth
	Error  error
}

CheckResult representa el resultado de un health check individual

type Checker

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

Checker agregado que combina múltiples health checkers

func NewChecker

func NewChecker(service, version string, opts ...CheckerOption) *Checker

NewChecker crea un nuevo health checker agregado

func (*Checker) AddChecker

func (c *Checker) AddChecker(checker HealthChecker)

AddChecker añade un health checker

func (*Checker) Check

func (c *Checker) Check(ctx context.Context) HealthResponse

Check ejecuta todos los health checks

func (*Checker) GetComponentStatus

func (c *Checker) GetComponentStatus(ctx context.Context, componentName string) (ComponentHealth, bool)

GetComponentStatus obtiene el estado de un componente específico

func (*Checker) GetServiceInfo

func (c *Checker) GetServiceInfo() map[string]interface{}

GetServiceInfo retorna información básica del servicio

func (*Checker) IsHealthy

func (c *Checker) IsHealthy(ctx context.Context) bool

IsHealthy verifica si el servicio está saludable

func (*Checker) IsLive

func (c *Checker) IsLive(ctx context.Context) bool

IsLive verifica si el servicio está vivo (liveness probe)

func (*Checker) IsReady

func (c *Checker) IsReady(ctx context.Context) bool

IsReady verifica si el servicio está listo (readiness probe)

func (*Checker) ListComponents

func (c *Checker) ListComponents() []string

ListComponents retorna la lista de nombres de componentes

type CheckerOption

type CheckerOption func(*Checker)

CheckerOption define opciones para configurar el Checker

func WithBuildInfo

func WithBuildInfo(buildTime, gitCommit string) CheckerOption

WithBuildInfo configura información de build

func WithEnvironment

func WithEnvironment(env string) CheckerOption

WithEnvironment configura el environment

type ComponentHealth

type ComponentHealth struct {
	Status      Status                 `json:"status"`
	Message     string                 `json:"message,omitempty"`
	Timestamp   time.Time              `json:"timestamp"`
	Duration    time.Duration          `json:"duration"`
	Metadata    map[string]interface{} `json:"metadata,omitempty"`
	Error       string                 `json:"error,omitempty"`
	LastChecked time.Time              `json:"last_checked"`
}

ComponentHealth representa la salud de un componente individual

func NewComponentHealth

func NewComponentHealth(status Status, message string) ComponentHealth

NewComponentHealth crea un nuevo ComponentHealth

func (ComponentHealth) WithDuration

func (c ComponentHealth) WithDuration(duration time.Duration) ComponentHealth

WithDuration añade duración al ComponentHealth

func (ComponentHealth) WithError

func (c ComponentHealth) WithError(err error) ComponentHealth

WithError añade un error al ComponentHealth

func (ComponentHealth) WithMetadata

func (c ComponentHealth) WithMetadata(key string, value interface{}) ComponentHealth

WithMetadata añade metadata al ComponentHealth

type GCStats added in v1.0.2

type GCStats struct {
	NextGC       uint64    `json:"next_gc"`
	LastGC       time.Time `json:"last_gc"`
	PauseTotalNs uint64    `json:"pause_total_ns"`
	NumGC        uint32    `json:"num_gc"`
	GCPercent    int       `json:"gc_percent"`
}

GCStats estadísticas del garbage collector

type Handler

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

Handler maneja las rutas de health check

func NewHandler

func NewHandler(checker *Checker, timeout time.Duration) *Handler

NewHandler crea un nuevo handler de health checks

func (*Handler) Component

func (h *Handler) Component(c *gin.Context)

Component maneja GET /health/component/{name} - health check de componente específico

func (*Handler) Components

func (h *Handler) Components(c *gin.Context)

Components maneja GET /health/components - lista todos los componentes

func (*Handler) Health

func (h *Handler) Health(c *gin.Context)

Health maneja GET /health - health check completo

func (*Handler) Info

func (h *Handler) Info(c *gin.Context)

Info maneja GET /health/info - información del servicio

func (*Handler) Liveness

func (h *Handler) Liveness(c *gin.Context)

Liveness maneja GET /health/live - liveness probe

func (*Handler) Middleware

func (h *Handler) Middleware() gin.HandlerFunc

Middleware crea un middleware que registra health check requests

func (*Handler) Readiness

func (h *Handler) Readiness(c *gin.Context)

Readiness maneja GET /health/ready - readiness probe

func (*Handler) RegisterRoutes

func (h *Handler) RegisterRoutes(router gin.IRouter)

RegisterRoutes registra todas las rutas de health check en un router Gin

type HealthAlert added in v1.0.2

type HealthAlert struct {
	ID         string                 `json:"id"`
	Level      string                 `json:"level"`
	Message    string                 `json:"message"`
	Component  string                 `json:"component"`
	Timestamp  time.Time              `json:"timestamp"`
	Resolved   bool                   `json:"resolved"`
	ResolvedAt *time.Time             `json:"resolved_at,omitempty"`
	Metadata   map[string]interface{} `json:"metadata,omitempty"`
}

HealthAlert representa una alerta de salud

type HealthChecker

type HealthChecker interface {
	// Name retorna el nombre del componente
	Name() string

	// Check ejecuta el health check
	Check(ctx context.Context) ComponentHealth

	// IsRequired indica si este componente es requerido para la salud general
	IsRequired() bool

	// Timeout retorna el timeout para este health check
	Timeout() time.Duration
}

HealthChecker define la interfaz para health checkers

type HealthMetricsCollector added in v1.0.2

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

HealthMetricsCollector recopila métricas de salud para Prometheus

func NewHealthMetricsCollector added in v1.0.2

func NewHealthMetricsCollector(serviceName string) *HealthMetricsCollector

func (*HealthMetricsCollector) RecordAdvancedHealthCheck added in v1.0.2

func (hmc *HealthMetricsCollector) RecordAdvancedHealthCheck(result *AdvancedHealthResult)

type HealthResponse

type HealthResponse struct {
	Status      Status                     `json:"status"`
	Service     string                     `json:"service"`
	Version     string                     `json:"version"`
	Timestamp   time.Time                  `json:"timestamp"`
	Uptime      time.Duration              `json:"uptime"`
	Components  map[string]ComponentHealth `json:"components"`
	SystemInfo  SystemInfo                 `json:"system_info"`
	RequestID   string                     `json:"request_id,omitempty"`
	Environment string                     `json:"environment,omitempty"`
}

HealthResponse representa la respuesta completa de health check

type HealthTrend added in v1.0.2

type HealthTrend struct {
	Direction    string             `json:"direction"` // "improving", "declining", "stable"
	Confidence   float64            `json:"confidence"`
	DataPoints   int                `json:"data_points"`
	LastUpdated  time.Time          `json:"last_updated"`
	TrendMetrics map[string]float64 `json:"trend_metrics,omitempty"`
}

HealthTrend representa la tendencia de salud de un componente

type ResourceUsage added in v1.0.2

type ResourceUsage struct {
	MemoryUsageMB   float64   `json:"memory_usage_mb"`
	CPUUsagePercent float64   `json:"cpu_usage_percent"`
	DiskUsageMB     float64   `json:"disk_usage_mb"`
	NetworkBytesIn  uint64    `json:"network_bytes_in"`
	NetworkBytesOut uint64    `json:"network_bytes_out"`
	LastUpdated     time.Time `json:"last_updated"`
}

ResourceUsage información de uso de recursos

type RuntimeInfo added in v1.0.2

type RuntimeInfo struct {
	NumGoroutines int              `json:"num_goroutines"`
	NumCPU        int              `json:"num_cpu"`
	MemStats      runtime.MemStats `json:"mem_stats"`
	GCStats       GCStats          `json:"gc_stats"`
}

RuntimeInfo información del runtime de Go

type Severity added in v1.0.2

type Severity int

Severity define la severidad de un problema de salud

const (
	SeverityInfo Severity = iota
	SeverityWarning
	SeverityError
	SeverityCritical
)

type Status

type Status string

Status representa el estado de salud de un componente

const (
	StatusHealthy   Status = "healthy"
	StatusUnhealthy Status = "unhealthy"
	StatusDegraded  Status = "degraded"
	StatusUnknown   Status = "unknown"
)

func OverallStatus

func OverallStatus(components map[string]ComponentHealth) Status

OverallStatus calcula el estado general basado en los componentes

type SystemInfo

type SystemInfo struct {
	Version     string    `json:"version"`
	BuildTime   string    `json:"build_time,omitempty"`
	GitCommit   string    `json:"git_commit,omitempty"`
	GoVersion   string    `json:"go_version"`
	Platform    string    `json:"platform"`
	StartTime   time.Time `json:"start_time"`
	Uptime      string    `json:"uptime"`
	Environment string    `json:"environment,omitempty"`
}

SystemInfo representa información del sistema

type TrendAnalyzer added in v1.0.2

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

TrendAnalyzer analiza tendencias de salud a lo largo del tiempo

func NewTrendAnalyzer added in v1.0.2

func NewTrendAnalyzer(maxDataPoints int, analysisWindow time.Duration) *TrendAnalyzer

func (*TrendAnalyzer) AddAdvancedDataPoint added in v1.0.2

func (ta *TrendAnalyzer) AddAdvancedDataPoint(result *AdvancedHealthResult)

func (*TrendAnalyzer) AnalyzeAdvancedTrends added in v1.0.2

func (ta *TrendAnalyzer) AnalyzeAdvancedTrends() map[string]HealthTrend

type TrendDataPoint added in v1.0.2

type TrendDataPoint struct {
	Timestamp time.Time
	Status    AdvancedStatus
	Duration  time.Duration
	Metrics   map[string]float64
}

TrendDataPoint representa un punto de datos para análisis de tendencias

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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