Add process start time metric
This commit is contained in:
@@ -111,6 +111,9 @@ type MetricsManager interface {
|
|||||||
// status - the operation status, if not specified, i.e., status == nil, an
|
// status - the operation status, if not specified, i.e., status == nil, an
|
||||||
// "Unknown" status of the passed-in operation is assumed.
|
// "Unknown" status of the passed-in operation is assumed.
|
||||||
RecordMetrics(op OperationKey, status OperationStatus, driverName string)
|
RecordMetrics(op OperationKey, status OperationStatus, driverName string)
|
||||||
|
|
||||||
|
// GetRegistry() returns the metrics.KubeRegistry used by this metrics manager.
|
||||||
|
GetRegistry() k8smetrics.KubeRegistry
|
||||||
}
|
}
|
||||||
|
|
||||||
// OperationKey is a structure which holds information to
|
// OperationKey is a structure which holds information to
|
||||||
@@ -265,6 +268,7 @@ func (opMgr *operationMetricsManager) recordCancelMetric(val OperationValue, key
|
|||||||
|
|
||||||
func (opMgr *operationMetricsManager) init() {
|
func (opMgr *operationMetricsManager) init() {
|
||||||
opMgr.registry = k8smetrics.NewKubeRegistry()
|
opMgr.registry = k8smetrics.NewKubeRegistry()
|
||||||
|
k8smetrics.RegisterProcessStartTime(opMgr.registry.Register)
|
||||||
opMgr.opLatencyMetrics = k8smetrics.NewHistogramVec(
|
opMgr.opLatencyMetrics = k8smetrics.NewHistogramVec(
|
||||||
&k8smetrics.HistogramOpts{
|
&k8smetrics.HistogramOpts{
|
||||||
Subsystem: subSystem,
|
Subsystem: subSystem,
|
||||||
@@ -327,6 +331,10 @@ func (opMgr *operationMetricsManager) StartMetricsEndpoint(pattern, addr string,
|
|||||||
return srv, nil
|
return srv, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (opMgr *operationMetricsManager) GetRegistry() k8smetrics.KubeRegistry {
|
||||||
|
return opMgr.registry
|
||||||
|
}
|
||||||
|
|
||||||
// snapshotProvisionType represents which kind of snapshot a metric is
|
// snapshotProvisionType represents which kind of snapshot a metric is
|
||||||
type snapshotProvisionType string
|
type snapshotProvisionType string
|
||||||
|
|
||||||
|
@@ -44,8 +44,9 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
httpPattern = "/metrics"
|
httpPattern = "/metrics"
|
||||||
addr = "localhost:0"
|
addr = "localhost:0"
|
||||||
|
processStartTimeMetric = "process_start_time_seconds"
|
||||||
)
|
)
|
||||||
|
|
||||||
type fakeOpStatus struct {
|
type fakeOpStatus struct {
|
||||||
@@ -707,3 +708,24 @@ func containsMetrics(expectedMfs, gotMfs []*cmg.MetricFamily) bool {
|
|||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestProcessStartTimeMetricExist(t *testing.T) {
|
||||||
|
mgr, wg, srv := initMgr()
|
||||||
|
defer shutdown(srv, wg)
|
||||||
|
metricsFamilies, err := mgr.GetRegistry().Gather()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Error fetching metrics: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, metricsFamily := range metricsFamilies {
|
||||||
|
if metricsFamily.GetName() == processStartTimeMetric {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
m := metricsFamily.GetMetric()
|
||||||
|
if m[0].GetGauge().GetValue() <= 0 {
|
||||||
|
t.Fatalf("Expected non zero timestamp for process start time")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Fatalf("Metrics does not contain %v. Scraped content: %v", processStartTimeMetric, metricsFamilies)
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user