74 lines
2.1 KiB
Go
74 lines
2.1 KiB
Go
package observability
|
|
|
|
import (
|
|
"sync/atomic"
|
|
"time"
|
|
)
|
|
|
|
// Metrics collects system metrics
|
|
type Metrics struct {
|
|
SessionCreations int64
|
|
ActiveSessions int64
|
|
MessagesProcessed int64
|
|
ASRLatency int64 // microseconds
|
|
TTSLatency int64 // microseconds
|
|
LLMLatency int64 // microseconds
|
|
Errors int64
|
|
}
|
|
|
|
var globalMetrics = &Metrics{}
|
|
|
|
// GetMetrics returns current metrics
|
|
func GetMetrics() *Metrics {
|
|
return &Metrics{
|
|
SessionCreations: atomic.LoadInt64(&globalMetrics.SessionCreations),
|
|
ActiveSessions: atomic.LoadInt64(&globalMetrics.ActiveSessions),
|
|
MessagesProcessed: atomic.LoadInt64(&globalMetrics.MessagesProcessed),
|
|
ASRLatency: atomic.LoadInt64(&globalMetrics.ASRLatency),
|
|
TTSLatency: atomic.LoadInt64(&globalMetrics.TTSLatency),
|
|
LLMLatency: atomic.LoadInt64(&globalMetrics.LLMLatency),
|
|
Errors: atomic.LoadInt64(&globalMetrics.Errors),
|
|
}
|
|
}
|
|
|
|
// IncrementSessionCreations increments session creation count
|
|
func IncrementSessionCreations() {
|
|
atomic.AddInt64(&globalMetrics.SessionCreations, 1)
|
|
}
|
|
|
|
// IncrementActiveSessions increments active session count
|
|
func IncrementActiveSessions() {
|
|
atomic.AddInt64(&globalMetrics.ActiveSessions, 1)
|
|
}
|
|
|
|
// DecrementActiveSessions decrements active session count
|
|
func DecrementActiveSessions() {
|
|
atomic.AddInt64(&globalMetrics.ActiveSessions, -1)
|
|
}
|
|
|
|
// IncrementMessagesProcessed increments message count
|
|
func IncrementMessagesProcessed() {
|
|
atomic.AddInt64(&globalMetrics.MessagesProcessed, 1)
|
|
}
|
|
|
|
// RecordASRLatency records ASR latency
|
|
func RecordASRLatency(duration time.Duration) {
|
|
atomic.StoreInt64(&globalMetrics.ASRLatency, duration.Microseconds())
|
|
}
|
|
|
|
// RecordTTSLatency records TTS latency
|
|
func RecordTTSLatency(duration time.Duration) {
|
|
atomic.StoreInt64(&globalMetrics.TTSLatency, duration.Microseconds())
|
|
}
|
|
|
|
// RecordLLMLatency records LLM latency
|
|
func RecordLLMLatency(duration time.Duration) {
|
|
atomic.StoreInt64(&globalMetrics.LLMLatency, duration.Microseconds())
|
|
}
|
|
|
|
// IncrementErrors increments error count
|
|
func IncrementErrors() {
|
|
atomic.AddInt64(&globalMetrics.Errors, 1)
|
|
}
|
|
|