Skip to main content
Glama
metrics_data_providers.go2.08 kB
package metrics import ( publictypes "lunar/engine/streams/public-types" "sync" ) type APICallMetricsProviderI interface { GetID() string GetType() publictypes.StreamType GetURL() string GetHost() string GetBody() string GetStrStatus() string GetMethod() string GetHeaders() map[string]string GetSize() int } type LabelSet struct { Host string Method string Consumer string } type FlowInvocationsData struct { FlowID string Labels *LabelSet } type RequestsThroughFlowData struct { StreamID string Labels *LabelSet } type ProcData struct { AvgExecutionTime float64 } type MetricData struct { ActiveFlows []string FlowInvocations *FlowInvocationsData AvgFlowExecutionTime map[string]float64 // key - flow ID ProcExecutionData map[string]*ProcData // key - processor key RequestsThroughFlows *RequestsThroughFlowData } type FlowMetricsProviderI interface { GetAvgFlowExecutionTime() *MetricData GetProcessorExecutionData() *MetricData GetActiveFlows() *MetricData RegisterRequestsThroughFlowsObserver(func(*MetricData)) RegisterFlowInvocationsObserver(func(*MetricData)) } type metricsProviderData struct { callCount int64 avgAPICallSize float64 latestFlowData FlowMetricsProviderI mu sync.RWMutex } func newMetricsProviderData() *metricsProviderData { return &metricsProviderData{} } func (m *metricsProviderData) UpdateAPICallData(provider APICallMetricsProviderI) { m.mu.Lock() defer m.mu.Unlock() size := float64(provider.GetSize()) m.callCount++ // Update the average incrementally m.avgAPICallSize = ((m.avgAPICallSize * float64(m.callCount-1)) + size) / float64(m.callCount) } func (m *metricsProviderData) UpdateFlowDataProvider(provider FlowMetricsProviderI) { m.mu.Lock() defer m.mu.Unlock() m.latestFlowData = provider } func (m *metricsProviderData) GetFlowData() FlowMetricsProviderI { m.mu.RLock() defer m.mu.RUnlock() return m.latestFlowData } func (m *metricsProviderData) GetAvgAPICallSize() float64 { m.mu.RLock() defer m.mu.RUnlock() return m.avgAPICallSize }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TheLunarCompany/lunar'

If you have feedback or need assistance with the MCP directory API, please join our Discord server