telemetry

package
v0.28.1 Latest Latest
Warning

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

Go to latest
Published: Mar 15, 2026 License: MIT Imports: 13 Imported by: 0

README

Telemetry Package (internal/telemetry)

Observability and metrics collection for HotPlex.

Overview

This package manages Prometheus metrics and internal tracing. It tracks session duration, token usage, and security blocks globally.

Metrics Tracked

Metric Description
sessions_active Currently active sessions
sessions_total Total sessions created
sessions_errors Failed sessions
tools_invoked Tool invocations count
dangers_blocked Security blocks count
slack_permission_* Slack permission decisions

Usage

import "github.com/hrygo/hotplex/internal/telemetry"

// Initialize global metrics
telemetry.InitMetrics(logger)

// Get metrics instance
m := telemetry.GetMetrics()

// Record events
m.IncSessionsActive()
m.IncToolsInvoked()
m.IncDangersBlocked()

// Get snapshot
snapshot := m.Snapshot()
fmt.Printf("Active sessions: %d\n", snapshot.SessionsActive)

Health Check

// Health endpoint handler
handler := telemetry.NewHealthHandler(engine)
// GET /health returns {"status": "ok"}

Files

File Purpose
metrics.go Metrics collection and snapshots
tracer.go Distributed tracing support
health.go Health check handler

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Init

func Init(cfg Config, logger *slog.Logger) error

func InitMetrics

func InitMetrics(logger *slog.Logger)

Types

type Config

type Config struct {
	ServiceName    string
	ServiceVersion string
	Environment    string
	OTLPEndpoint   string
	Sampled        float64
}

type HealthChecker

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

func GetHealthChecker

func GetHealthChecker() *HealthChecker

func NewHealthChecker

func NewHealthChecker(logger *slog.Logger) *HealthChecker

func (*HealthChecker) Check

func (h *HealthChecker) Check() (HealthStatus, map[string]bool)

func (*HealthChecker) RegisterCheck

func (h *HealthChecker) RegisterCheck(name string, check func() bool)

type HealthStatus

type HealthStatus string
const (
	StatusHealthy   HealthStatus = "healthy"
	StatusDegraded  HealthStatus = "degraded"
	StatusUnhealthy HealthStatus = "unhealthy"
)

type Metrics

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

func GetMetrics

func GetMetrics() *Metrics

func NewMetrics

func NewMetrics(logger *slog.Logger) *Metrics

func (*Metrics) DecSessionsActive

func (m *Metrics) DecSessionsActive()

func (*Metrics) IncDangersBlocked

func (m *Metrics) IncDangersBlocked()

func (*Metrics) IncSessionsActive

func (m *Metrics) IncSessionsActive()

func (*Metrics) IncSessionsErrors

func (m *Metrics) IncSessionsErrors()

func (*Metrics) IncSlackPermissionAllowed

func (m *Metrics) IncSlackPermissionAllowed()

func (*Metrics) IncSlackPermissionBlockedDM

func (m *Metrics) IncSlackPermissionBlockedDM()

func (*Metrics) IncSlackPermissionBlockedMention

func (m *Metrics) IncSlackPermissionBlockedMention()

func (*Metrics) IncSlackPermissionBlockedUser

func (m *Metrics) IncSlackPermissionBlockedUser()

func (*Metrics) IncToolsInvoked

func (m *Metrics) IncToolsInvoked()

func (*Metrics) RecordDuration

func (m *Metrics) RecordDuration(d time.Duration)

func (*Metrics) Snapshot

func (m *Metrics) Snapshot() MetricsSnapshot

type MetricsSnapshot

type MetricsSnapshot struct {
	SessionsActive  int64
	SessionsTotal   int64
	SessionsErrors  int64
	ToolsInvoked    int64
	DangersBlocked  int64
	RequestDuration time.Duration

	// Slack permission metrics
	SlackPermissionAllowed        int64
	SlackPermissionBlockedUser    int64
	SlackPermissionBlockedDM      int64
	SlackPermissionBlockedMention int64
}

type Tracer

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

func Get

func Get() *Tracer

func NewTracer

func NewTracer(cfg Config, logger *slog.Logger) (*Tracer, error)

func (*Tracer) Close

func (t *Tracer) Close(ctx context.Context) error

func (*Tracer) Enabled

func (t *Tracer) Enabled() bool

func (*Tracer) EndSession

func (t *Tracer) EndSession(span trace.Span, err error)

func (*Tracer) RecordDangerBlock

func (t *Tracer) RecordDangerBlock(ctx context.Context, operation, reason string)

func (*Tracer) StartSession

func (t *Tracer) StartSession(ctx context.Context, sessionID, namespace string) (context.Context, trace.Span)

func (*Tracer) StartToolUse

func (t *Tracer) StartToolUse(ctx context.Context, toolName, toolID string) (context.Context, trace.Span)

Jump to

Keyboard shortcuts

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