MCPcopy Index your code
hub / github.com/coder/coder / NewQueryMetrics

Function NewQueryMetrics

coderd/database/dbmetrics/querymetrics.go:37–63  ·  view source on GitHub ↗

NewQueryMetrics returns a database.Store that registers metrics for all queries to reg.

(s database.Store, logger slog.Logger, reg prometheus.Registerer)

Source from the content-addressed store, hash-verified

35
36// NewQueryMetrics returns a database.Store that registers metrics for all queries to reg.
37func NewQueryMetrics(s database.Store, logger slog.Logger, reg prometheus.Registerer) database.Store {
38 // Don't double-wrap.
39 if slices.Contains(s.Wrappers(), wrapname) {
40 return s
41 }
42 queryLatencies := prometheus.NewHistogramVec(prometheus.HistogramOpts{
43 Namespace: "coderd",
44 Subsystem: "db",
45 Name: "query_latencies_seconds",
46 Help: "Latency distribution of queries in seconds.",
47 Buckets: prometheus.DefBuckets,
48 }, []string{"query"})
49 reg.MustRegister(queryLatencies)
50 queryCounts := prometheus.NewCounterVec(prometheus.CounterOpts{
51 Namespace: "coderd",
52 Subsystem: "db",
53 Name: "query_counts_total",
54 Help: "Total number of queries labelled by HTTP route, method, and query name.",
55 }, []string{"route", "method", "query"})
56 reg.MustRegister(queryCounts)
57 return &queryMetricsStore{
58 s: s,
59 queryLatencies: queryLatencies,
60 queryCounts: queryCounts,
61 dbMetrics: NewDBMetrics(s, logger, reg).(*metricsStore),
62 }
63}
64
65var _ database.Store = (*queryMetricsStore)(nil)
66

Callers 2

TestInTxMetricsFunction · 0.92
ServerMethod · 0.92

Calls 3

NewDBMetricsFunction · 0.85
WrappersMethod · 0.65
ContainsMethod · 0.45

Tested by 1

TestInTxMetricsFunction · 0.74