Files
cybertron/pkg/metrics/metric_publisher.go

49 lines
1.5 KiB
Go
Raw Normal View History

2024-07-23 14:16:26 +05:30
package metrics
import (
"cybertron/models/instrumentation"
"strconv"
)
type Publisher interface {
PublishMetrics(metricAttributes map[string]interface{}, metricType instrumentation.MetricType)
}
type PublisherImpl struct {
}
func NewMetricPublisher() *PublisherImpl {
return &PublisherImpl{}
}
func (amp *PublisherImpl) PublishMetrics(metricAttributes instrumentation.MetricAttributes, metricType instrumentation.MetricType) {
switch metricType {
case instrumentation.API_METRICS:
publishApiMetric(metricAttributes.ApiMetric)
return
case instrumentation.CLIENT_HTTP_CALL_METRICS:
publishClientHttpCallMetric(metricAttributes.ClientHttpCallMetric)
return
default:
return
}
}
func publishApiMetric(apiMetrics instrumentation.ApiMetric) {
status := strconv.Itoa(apiMetrics.ResponseCode)
duration := float64(apiMetrics.DurationInMs)
ApiRequestCounter.WithLabelValues(apiMetrics.Url, status).Inc()
ApiRequestLatencyHistogram.WithLabelValues(apiMetrics.Url, status).Observe(duration)
}
2024-09-18 16:42:54 +05:30
func PublishErrorConsumptionMetric(errorConsumptionMetrics instrumentation.ErrorConsumptionMetric) {
ErrorConsumerCounter.WithLabelValues(errorConsumptionMetrics.ProjectId).Inc()
}
2024-07-23 14:16:26 +05:30
func publishClientHttpCallMetric(clientHttpCallMetric instrumentation.ClientHttpCallMetric) {
status := strconv.Itoa(clientHttpCallMetric.ResponseCode)
duration := float64(clientHttpCallMetric.DurationInMs)
HttpCallRequestCounter.WithLabelValues(clientHttpCallMetric.Url, status).Inc()
HttpCallRequestLatencyHistogram.WithLabelValues(clientHttpCallMetric.Url, status).Observe(duration)
}