78 lines
2.2 KiB
Go
78 lines
2.2 KiB
Go
package harmonydb
|
|
|
|
import (
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
"go.opencensus.io/stats"
|
|
"go.opencensus.io/stats/view"
|
|
"go.opencensus.io/tag"
|
|
|
|
"github.com/filecoin-project/lotus/metrics"
|
|
)
|
|
|
|
var (
|
|
dbTag, _ = tag.NewKey("db_name")
|
|
pre = "harmonydb_base_"
|
|
waitsBuckets = []float64{0, 10, 20, 30, 50, 80, 130, 210, 340, 550, 890}
|
|
whichHostBuckets = []float64{0, 1, 2, 3, 4, 5}
|
|
)
|
|
|
|
// DBMeasures groups all db metrics.
|
|
var DBMeasures = struct {
|
|
Hits *stats.Int64Measure
|
|
TotalWait *stats.Int64Measure
|
|
Waits prometheus.Histogram
|
|
OpenConnections *stats.Int64Measure
|
|
Errors *stats.Int64Measure
|
|
WhichHost prometheus.Histogram
|
|
}{
|
|
Hits: stats.Int64(pre+"hits", "Total number of uses.", stats.UnitDimensionless),
|
|
TotalWait: stats.Int64(pre+"total_wait", "Total delay. A numerator over hits to get average wait.", stats.UnitMilliseconds),
|
|
Waits: prometheus.NewHistogram(prometheus.HistogramOpts{
|
|
Name: pre + "waits",
|
|
Buckets: waitsBuckets,
|
|
Help: "The histogram of waits for query completions.",
|
|
}),
|
|
OpenConnections: stats.Int64(pre+"open_connections", "Total connection count.", stats.UnitDimensionless),
|
|
Errors: stats.Int64(pre+"errors", "Total error count.", stats.UnitDimensionless),
|
|
WhichHost: prometheus.NewHistogram(prometheus.HistogramOpts{
|
|
Name: pre + "which_host",
|
|
Buckets: whichHostBuckets,
|
|
Help: "The index of the hostname being used",
|
|
}),
|
|
}
|
|
|
|
// CacheViews groups all cache-related default views.
|
|
func init() {
|
|
metrics.RegisterViews(
|
|
&view.View{
|
|
Measure: DBMeasures.Hits,
|
|
Aggregation: view.Sum(),
|
|
TagKeys: []tag.Key{dbTag},
|
|
},
|
|
&view.View{
|
|
Measure: DBMeasures.TotalWait,
|
|
Aggregation: view.Sum(),
|
|
TagKeys: []tag.Key{dbTag},
|
|
},
|
|
&view.View{
|
|
Measure: DBMeasures.OpenConnections,
|
|
Aggregation: view.LastValue(),
|
|
TagKeys: []tag.Key{dbTag},
|
|
},
|
|
&view.View{
|
|
Measure: DBMeasures.Errors,
|
|
Aggregation: view.Sum(),
|
|
TagKeys: []tag.Key{dbTag},
|
|
},
|
|
)
|
|
err := prometheus.Register(DBMeasures.Waits)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
err = prometheus.Register(DBMeasures.WhichHost)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|