mirror of
https://github.com/luxfi/database.git
synced 2026-10-30 15:01:18 +00:00
- Use luxfi/codec instead of node/codec - Use luxfi/metric instead of node/utils/metric - Use luxfi/utils instead of node/utils
92 lines
3.1 KiB
Go
92 lines
3.1 KiB
Go
// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package meterdb
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/luxfi/metric"
|
|
)
|
|
|
|
func newSizeMetric(namespace, name string, reg metric.Metrics, errs *metric.Errs) metric.Averager {
|
|
return metric.NewAveragerWithErrs(
|
|
fmt.Sprintf("%s_%s_size", namespace, name),
|
|
fmt.Sprintf("bytes passed in a %s call", name),
|
|
reg.Registry(),
|
|
errs,
|
|
)
|
|
}
|
|
|
|
func newTimeMetric(namespace, name string, reg metric.Metrics, errs *metric.Errs) metric.Averager {
|
|
return metric.NewAveragerWithErrs(
|
|
fmt.Sprintf("%s_%s", namespace, name),
|
|
fmt.Sprintf("time (in ns) of a %s", name),
|
|
reg.Registry(),
|
|
errs,
|
|
)
|
|
}
|
|
|
|
type dbMetrics struct {
|
|
readSize,
|
|
writeSize,
|
|
has, hasSize,
|
|
get, getSize,
|
|
put, putSize,
|
|
delete, deleteSize,
|
|
newBatch,
|
|
newIterator,
|
|
compact,
|
|
close,
|
|
healthCheck,
|
|
bPut, bPutSize,
|
|
bDelete, bDeleteSize,
|
|
bSize,
|
|
bWrite, bWriteSize,
|
|
bReset,
|
|
bReplay,
|
|
bInner,
|
|
iNext, iNextSize,
|
|
iError,
|
|
iKey,
|
|
iValue,
|
|
iRelease metric.Averager
|
|
}
|
|
|
|
func newMetrics(namespace string, reg metric.Metrics) (dbMetrics, error) {
|
|
errs := metric.Errs{}
|
|
return dbMetrics{
|
|
readSize: newSizeMetric(namespace, "read", reg, &errs),
|
|
writeSize: newSizeMetric(namespace, "write", reg, &errs),
|
|
has: newTimeMetric(namespace, "has", reg, &errs),
|
|
hasSize: newSizeMetric(namespace, "has", reg, &errs),
|
|
get: newTimeMetric(namespace, "get", reg, &errs),
|
|
getSize: newSizeMetric(namespace, "get", reg, &errs),
|
|
put: newTimeMetric(namespace, "put", reg, &errs),
|
|
putSize: newSizeMetric(namespace, "put", reg, &errs),
|
|
delete: newTimeMetric(namespace, "delete", reg, &errs),
|
|
deleteSize: newSizeMetric(namespace, "delete", reg, &errs),
|
|
newBatch: newTimeMetric(namespace, "new_batch", reg, &errs),
|
|
newIterator: newTimeMetric(namespace, "new_iterator", reg, &errs),
|
|
compact: newTimeMetric(namespace, "compact", reg, &errs),
|
|
close: newTimeMetric(namespace, "close", reg, &errs),
|
|
healthCheck: newTimeMetric(namespace, "health_check", reg, &errs),
|
|
bPut: newTimeMetric(namespace, "batch_put", reg, &errs),
|
|
bPutSize: newSizeMetric(namespace, "batch_put", reg, &errs),
|
|
bDelete: newTimeMetric(namespace, "batch_delete", reg, &errs),
|
|
bDeleteSize: newSizeMetric(namespace, "batch_delete", reg, &errs),
|
|
bSize: newTimeMetric(namespace, "batch_size", reg, &errs),
|
|
bWrite: newTimeMetric(namespace, "batch_write", reg, &errs),
|
|
bWriteSize: newSizeMetric(namespace, "batch_write", reg, &errs),
|
|
bReset: newTimeMetric(namespace, "batch_reset", reg, &errs),
|
|
bReplay: newTimeMetric(namespace, "batch_replay", reg, &errs),
|
|
bInner: newTimeMetric(namespace, "batch_inner", reg, &errs),
|
|
iNext: newTimeMetric(namespace, "iterator_next", reg, &errs),
|
|
iNextSize: newSizeMetric(namespace, "iterator_next", reg, &errs),
|
|
iError: newTimeMetric(namespace, "iterator_error", reg, &errs),
|
|
iKey: newTimeMetric(namespace, "iterator_key", reg, &errs),
|
|
iValue: newTimeMetric(namespace, "iterator_value", reg, &errs),
|
|
iRelease: newTimeMetric(namespace, "iterator_release", reg, &errs),
|
|
}, errs.Err
|
|
}
|