influxdb/label/middleware_metrics.go

76 lines
2.4 KiB
Go

package label
import (
"context"
"github.com/influxdata/influxdb/v2"
"github.com/influxdata/influxdb/v2/kit/metric"
"github.com/influxdata/influxdb/v2/kit/platform"
"github.com/prometheus/client_golang/prometheus"
)
type LabelMetrics struct {
// RED metrics
rec *metric.REDClient
labelService influxdb.LabelService
}
func NewLabelMetrics(reg prometheus.Registerer, s influxdb.LabelService, opts ...metric.ClientOptFn) *LabelMetrics {
o := metric.ApplyMetricOpts(opts...)
return &LabelMetrics{
rec: metric.New(reg, o.ApplySuffix("org")),
labelService: s,
}
}
var _ influxdb.LabelService = (*LabelMetrics)(nil)
func (m *LabelMetrics) CreateLabel(ctx context.Context, l *influxdb.Label) (err error) {
rec := m.rec.Record("create_label")
err = m.labelService.CreateLabel(ctx, l)
return rec(err)
}
func (m *LabelMetrics) FindLabelByID(ctx context.Context, id platform.ID) (label *influxdb.Label, err error) {
rec := m.rec.Record("find_label_by_id")
l, err := m.labelService.FindLabelByID(ctx, id)
return l, rec(err)
}
func (m *LabelMetrics) FindLabels(ctx context.Context, filter influxdb.LabelFilter, opt ...influxdb.FindOptions) (ls []*influxdb.Label, err error) {
rec := m.rec.Record("find_labels")
l, err := m.labelService.FindLabels(ctx, filter, opt...)
return l, rec(err)
}
func (m *LabelMetrics) FindResourceLabels(ctx context.Context, filter influxdb.LabelMappingFilter) (ls []*influxdb.Label, err error) {
rec := m.rec.Record("find_labels_for_resource")
l, err := m.labelService.FindResourceLabels(ctx, filter)
return l, rec(err)
}
func (m *LabelMetrics) UpdateLabel(ctx context.Context, id platform.ID, upd influxdb.LabelUpdate) (lbl *influxdb.Label, err error) {
rec := m.rec.Record("update_label")
l, err := m.labelService.UpdateLabel(ctx, id, upd)
return l, rec(err)
}
func (m *LabelMetrics) DeleteLabel(ctx context.Context, id platform.ID) (err error) {
rec := m.rec.Record("delete_label")
err = m.labelService.DeleteLabel(ctx, id)
return rec(err)
}
func (m *LabelMetrics) CreateLabelMapping(ctx context.Context, lm *influxdb.LabelMapping) (err error) {
rec := m.rec.Record("create_label_mapping")
err = m.labelService.CreateLabelMapping(ctx, lm)
return rec(err)
}
func (m *LabelMetrics) DeleteLabelMapping(ctx context.Context, lm *influxdb.LabelMapping) (err error) {
rec := m.rec.Record("delete_label_mapping")
err = m.labelService.DeleteLabelMapping(ctx, lm)
return rec(err)
}