Init commit repo setup
This commit is contained in:
44
pkg/metrics/metric_publisher.go
Normal file
44
pkg/metrics/metric_publisher.go
Normal file
@@ -0,0 +1,44 @@
|
||||
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)
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user