185 lines
4.2 KiB
Go
185 lines
4.2 KiB
Go
package sink
|
|
|
|
import (
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
"openreplay/backend/pkg/metrics/common"
|
|
)
|
|
|
|
var sinkMessageSize = prometheus.NewHistogram(
|
|
prometheus.HistogramOpts{
|
|
Namespace: "sink",
|
|
Name: "message_size_bytes",
|
|
Help: "A histogram displaying the size of each message in bytes.",
|
|
Buckets: common.DefaultSizeBuckets,
|
|
},
|
|
)
|
|
|
|
func RecordMessageSize(size float64) {
|
|
sinkMessageSize.Observe(size)
|
|
}
|
|
|
|
var sinkWrittenMessages = prometheus.NewCounter(
|
|
prometheus.CounterOpts{
|
|
Namespace: "sink",
|
|
Name: "messages_written",
|
|
Help: "A counter displaying the total number of all written messages.",
|
|
},
|
|
)
|
|
|
|
func IncreaseWrittenMessages() {
|
|
sinkWrittenMessages.Inc()
|
|
}
|
|
|
|
var sinkTotalMessages = prometheus.NewCounter(
|
|
prometheus.CounterOpts{
|
|
Namespace: "sink",
|
|
Name: "messages_total",
|
|
Help: "A counter displaying the total number of all processed messages.",
|
|
},
|
|
)
|
|
|
|
func IncreaseTotalMessages() {
|
|
sinkTotalMessages.Inc()
|
|
}
|
|
|
|
var sinkBatchSize = prometheus.NewHistogram(
|
|
prometheus.HistogramOpts{
|
|
Namespace: "sink",
|
|
Name: "batch_size_bytes",
|
|
Help: "A histogram displaying the size of each batch in bytes.",
|
|
Buckets: common.DefaultSizeBuckets,
|
|
},
|
|
)
|
|
|
|
func RecordBatchSize(size float64) {
|
|
sinkBatchSize.Observe(size)
|
|
}
|
|
|
|
var sinkTotalBatches = prometheus.NewCounter(
|
|
prometheus.CounterOpts{
|
|
Namespace: "sink",
|
|
Name: "batches_total",
|
|
Help: "A counter displaying the total number of all written batches.",
|
|
},
|
|
)
|
|
|
|
func IncreaseTotalBatches() {
|
|
sinkTotalBatches.Inc()
|
|
}
|
|
|
|
var sinkWrittenBytes = prometheus.NewHistogramVec(
|
|
prometheus.HistogramOpts{
|
|
Namespace: "sink",
|
|
Name: "written_bytes",
|
|
Help: "A histogram displaying the size of buffer in bytes written to session file.",
|
|
Buckets: common.DefaultSizeBuckets,
|
|
},
|
|
[]string{"file_type"},
|
|
)
|
|
|
|
func RecordWrittenBytes(size float64, fileType string) {
|
|
if size == 0 {
|
|
return
|
|
}
|
|
sinkWrittenBytes.WithLabelValues(fileType).Observe(size)
|
|
IncreaseTotalWrittenBytes(size, fileType)
|
|
}
|
|
|
|
var sinkTotalWrittenBytes = prometheus.NewCounterVec(
|
|
prometheus.CounterOpts{
|
|
Namespace: "sink",
|
|
Name: "written_bytes_total",
|
|
Help: "A counter displaying the total number of bytes written to all session files.",
|
|
},
|
|
[]string{"file_type"},
|
|
)
|
|
|
|
func IncreaseTotalWrittenBytes(size float64, fileType string) {
|
|
if size == 0 {
|
|
return
|
|
}
|
|
sinkTotalWrittenBytes.WithLabelValues(fileType).Add(size)
|
|
}
|
|
|
|
var sinkCachedAssets = prometheus.NewGauge(
|
|
prometheus.GaugeOpts{
|
|
Namespace: "sink",
|
|
Name: "assets_cached",
|
|
Help: "A gauge displaying the current number of cached assets.",
|
|
},
|
|
)
|
|
|
|
func IncreaseCachedAssets() {
|
|
sinkCachedAssets.Inc()
|
|
}
|
|
|
|
func DecreaseCachedAssets() {
|
|
sinkCachedAssets.Dec()
|
|
}
|
|
|
|
var sinkSkippedAssets = prometheus.NewCounter(
|
|
prometheus.CounterOpts{
|
|
Namespace: "sink",
|
|
Name: "assets_skipped",
|
|
Help: "A counter displaying the total number of all skipped assets.",
|
|
},
|
|
)
|
|
|
|
func IncreaseSkippedAssets() {
|
|
sinkSkippedAssets.Inc()
|
|
}
|
|
|
|
var sinkTotalAssets = prometheus.NewCounter(
|
|
prometheus.CounterOpts{
|
|
Namespace: "sink",
|
|
Name: "assets_total",
|
|
Help: "A counter displaying the total number of all processed assets.",
|
|
},
|
|
)
|
|
|
|
func IncreaseTotalAssets() {
|
|
sinkTotalAssets.Inc()
|
|
}
|
|
|
|
var sinkAssetSize = prometheus.NewHistogram(
|
|
prometheus.HistogramOpts{
|
|
Namespace: "sink",
|
|
Name: "asset_size_bytes",
|
|
Help: "A histogram displaying the size of each asset in bytes.",
|
|
Buckets: common.DefaultSizeBuckets,
|
|
},
|
|
)
|
|
|
|
func RecordAssetSize(size float64) {
|
|
sinkAssetSize.Observe(size)
|
|
}
|
|
|
|
var sinkProcessAssetDuration = prometheus.NewHistogram(
|
|
prometheus.HistogramOpts{
|
|
Namespace: "sink",
|
|
Name: "asset_process_duration_seconds",
|
|
Help: "A histogram displaying the duration of processing for each asset in seconds.",
|
|
Buckets: common.DefaultDurationBuckets,
|
|
},
|
|
)
|
|
|
|
func RecordProcessAssetDuration(durMillis float64) {
|
|
sinkProcessAssetDuration.Observe(durMillis / 1000.0)
|
|
}
|
|
|
|
func List() []prometheus.Collector {
|
|
return []prometheus.Collector{
|
|
sinkMessageSize,
|
|
sinkWrittenMessages,
|
|
sinkTotalMessages,
|
|
sinkBatchSize,
|
|
sinkTotalBatches,
|
|
sinkWrittenBytes,
|
|
sinkTotalWrittenBytes,
|
|
sinkCachedAssets,
|
|
sinkSkippedAssets,
|
|
sinkTotalAssets,
|
|
sinkAssetSize,
|
|
sinkProcessAssetDuration,
|
|
}
|
|
}
|