in pkg/metrics/queue.go [69:134]
func InitQueueMetrics(name string) *QueueMetrics {
q := &QueueMetrics{}
replaceStr := formatMetricName(name)
q.appMetricsLabel = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: Namespace,
Name: "queue_app",
ConstLabels: prometheus.Labels{"queue": name},
Help: "Queue application metrics. State of the application includes `new`, `accepted`, `rejected`, `running`, `failing`, `failed`, `resuming`, `completing`, `completed`.",
}, []string{"state"})
q.appMetricsSubsystem = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: Namespace,
Subsystem: replaceStr,
Name: "queue_app",
Help: "Queue application metrics. State of the application includes `new`, `accepted`, `rejected`, `running`, `failing`, `failed`, `resuming`, `completing`, `completed`.",
}, []string{"state"})
q.containerMetrics = prometheus.NewCounterVec(
prometheus.CounterOpts{
Namespace: Namespace,
Subsystem: replaceStr,
Name: "queue_container",
Help: "Queue container metrics. State of the attempt includes `allocated`, `released`.",
}, []string{"state"})
q.resourceMetricsLabel = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: Namespace,
Name: "queue_resource",
ConstLabels: prometheus.Labels{"queue": name},
Help: "Queue resource metrics. State of the resource includes `guaranteed`, `max`, `allocated`, `pending`, `preempting`, `maxRunningApps`.",
}, []string{"state", "resource"})
q.resourceMetricsSubsystem = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: Namespace,
Subsystem: replaceStr,
Name: "queue_resource",
Help: "Queue resource metrics. State of the resource includes `guaranteed`, `max`, `allocated`, `pending`, `preempting`, `maxRunningApps`.",
}, []string{"state", "resource"})
var queueMetricsList = []prometheus.Collector{
q.appMetricsLabel,
q.appMetricsSubsystem,
q.containerMetrics,
q.resourceMetricsLabel,
q.resourceMetricsSubsystem,
}
// Register the metrics
for _, metric := range queueMetricsList {
// registration might be failed if queue name is not valid
// metrics name must be complied with regex: [a-zA-Z_:][a-zA-Z0-9_:]*,
// queue name regex: ^[a-zA-Z0-9_-]{1,64}$
if err := prometheus.Register(metric); err != nil {
log.Log(log.Metrics).Warn("failed to register metrics collector", zap.Error(err))
}
}
q.knownResourceTypes = make(map[string]struct{})
return q
}