in vermeer/apps/common/metrics.go [78:168]
func InitMetrics(engine *gin.Engine, serviceName string) {
reqCnt := prometheus.NewCounterVec(
prometheus.CounterOpts{
Subsystem: serviceName,
Name: "requests_total",
Help: "How many HTTP requests processed, partitioned by status code and HTTP method.",
},
[]string{"code", "method", "host", "url"})
reqDur := prometheus.NewSummaryVec(
prometheus.SummaryOpts{
Subsystem: serviceName,
Name: "request_duration_ms",
Help: "The HTTP request latencies in ms.",
Objectives: map[float64]float64{0.9: 0, 0.95: 0, 0.99: 0},
MaxAge: 10 * time.Second,
AgeBuckets: 3,
},
[]string{"code", "method", "host", "url"})
slowReqCnt := prometheus.NewCounterVec(
prometheus.CounterOpts{
Subsystem: serviceName,
Name: "requests_slow",
Help: "How many HTTP requests longer than xx ms.",
},
[]string{"host", "url", "level"})
taskCnt := prometheus.NewCounterVec(
prometheus.CounterOpts{
Subsystem: serviceName,
Name: "task_count_total",
Help: "How many tasks created, partitioned by task type.",
},
[]string{"task_type"})
taskRunningCnt := prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Subsystem: serviceName,
Name: "task_running_total",
Help: "How many tasks is running, partitioned by task type.",
},
[]string{"task_type"})
graphCnt := prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Subsystem: serviceName,
Name: "graph_total",
Help: "How many graphs is created",
},
[]string{})
graphLoadedCnt := prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Subsystem: serviceName,
Name: "graph_loaded_total",
Help: "How many graphs is loaded",
},
[]string{})
workerCnt := prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Subsystem: serviceName,
Name: "worker_count",
Help: "How many workers is available",
},
[]string{})
vertexCnt := prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Subsystem: serviceName,
Name: "vertex_count",
Help: "How many vertices in graphs, partitioned by graph name.",
},
[]string{"graph_name"})
edgeCnt := prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Subsystem: serviceName,
Name: "edge_count",
Help: "How many edges in graphs, partitioned by graph name.",
},
[]string{"graph_name"})
PrometheusMetrics = MozartPrometheus{
serviceName: serviceName,
reqCnt: reqCnt,
reqDur: reqDur,
slowReqCnt: slowReqCnt,
TaskCnt: taskCnt,
TaskRunningCnt: taskRunningCnt,
GraphCnt: graphCnt,
GraphLoadedCnt: graphLoadedCnt,
WorkerCnt: workerCnt,
VertexCnt: vertexCnt,
EdgeCnt: edgeCnt,
}
PrometheusMetrics.register()
engine.Use(PrometheusMetrics.HandleFunc())
engine.GET("/metrics", gin.WrapH(promhttp.Handler()))
}