Skip to content
Snippets Groups Projects
Commit 95ce5d74 authored by ensiouel's avatar ensiouel
Browse files

refactor: теперь создание метрик возвращает ошибку вторым параметром

parent 7b56094a
Branches
Tags
No related merge requests found
package metrics
import (
"git.perx.ru/perxis/perxis-go/pkg/optional"
"go.opentelemetry.io/otel"
metricotel "go.opentelemetry.io/otel/metric"
)
......@@ -12,21 +11,33 @@ type CacheMetrics struct {
InvalidatesTotal metricotel.Int64Counter
}
func NewCacheMetrics(subsystem string) *CacheMetrics {
meter := otel.Meter(subsystem)
metrics := &CacheMetrics{
HitsTotal: optional.Must(meter.Int64Counter(
"cache_hits_total",
func NewCacheMetrics(scope string) (*CacheMetrics, error) {
meter := otel.Meter(scope)
hitsTotal, err := meter.Int64Counter("cache_hits",
metricotel.WithDescription("Количество найденных в кэше значений"),
)),
MissesTotal: optional.Must(meter.Int64Counter(
"cache_misses_total",
)
if err != nil {
return nil, err
}
missesTotal, err := meter.Int64Counter("cache_misses",
metricotel.WithDescription("Количество не найденных в кэше значений"),
)),
InvalidatesTotal: optional.Must(meter.Int64Counter(
"cache_invalidates_total",
)
if err != nil {
return nil, err
}
invalidatesTotal, err := meter.Int64Counter("cache_invalidates",
metricotel.WithDescription("Количество инвалидаций кэша"),
)),
)
if err != nil {
return nil, err
}
return metrics
return &CacheMetrics{
HitsTotal: hitsTotal,
MissesTotal: missesTotal,
InvalidatesTotal: invalidatesTotal,
}, nil
}
package metrics
import (
"git.perx.ru/perxis/perxis-go/pkg/optional"
"go.opentelemetry.io/otel"
metricotel "go.opentelemetry.io/otel/metric"
)
......@@ -13,22 +12,36 @@ type RequestMetrics struct {
}
// NewRequestMetrics возвращает метрики для подсчета количества удачных/неудачных запросов, а так же длительности ответов.
func NewRequestMetrics(subsystem string) *RequestMetrics {
meter := otel.Meter(subsystem)
metrics := &RequestMetrics{
Total: optional.Must(meter.Int64Counter(
"requests_total",
//
// Для RequestMetrics.DurationMilliseconds значения buckets по умолчанию равно []float64{0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000}
func NewRequestMetrics(scope string) (*RequestMetrics, error) {
meter := otel.Meter(scope)
total, err := meter.Int64Counter("requests",
metricotel.WithDescription("Количество запросов"),
)),
FailedTotal: optional.Must(meter.Int64Counter(
"requests_failed_total",
)
if err != nil {
return nil, err
}
failedTotal, err := meter.Int64Counter("requests_failed",
metricotel.WithDescription("Количество запросов, вернувших ошибку"),
)),
DurationMilliseconds: optional.Must(meter.Int64Histogram(
"request_duration",
)
if err != nil {
return nil, err
}
durationMilliseconds, err := meter.Int64Histogram("request_duration",
metricotel.WithDescription("Длительность обработки запроса"),
metricotel.WithUnit("ms"),
)),
)
if err != nil {
return nil, err
}
return metrics
return &RequestMetrics{
Total: total,
FailedTotal: failedTotal,
DurationMilliseconds: durationMilliseconds,
}, nil
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment