mirror of
https://github.com/aceld/kis-flow.git
synced 2025-02-02 15:28:38 +08:00
58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
|
package metrics
|
||
|
|
||
|
import (
|
||
|
"github.com/prometheus/client_golang/prometheus"
|
||
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||
|
"kis-flow/common"
|
||
|
"kis-flow/config"
|
||
|
"kis-flow/log"
|
||
|
"net/http"
|
||
|
)
|
||
|
|
||
|
// kisMetrics kisFlow的Prometheus监控指标
|
||
|
type kisMetrics struct {
|
||
|
//数据数量总量
|
||
|
DataTotal prometheus.Counter
|
||
|
}
|
||
|
|
||
|
var Metrics *kisMetrics
|
||
|
|
||
|
// RunMetricsService 启动Prometheus监控服务
|
||
|
func RunMetricsService(serverAddr string) error {
|
||
|
|
||
|
// 注册Prometheus 监控路由路径
|
||
|
http.Handle(common.METRICS_ROUTE, promhttp.Handler())
|
||
|
|
||
|
// 启动HttpServer
|
||
|
err := http.ListenAndServe(serverAddr, nil) //多个进程不可监听同一个端口
|
||
|
if err != nil {
|
||
|
log.Logger().ErrorF("RunMetricsService err = %s\n", err)
|
||
|
}
|
||
|
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
func InitMetrics() {
|
||
|
Metrics = new(kisMetrics)
|
||
|
|
||
|
// DataTotal初始化Counter
|
||
|
Metrics.DataTotal = prometheus.NewCounter(prometheus.CounterOpts{
|
||
|
Name: common.COUNTER_KISFLOW_DATA_TOTAL_NAME,
|
||
|
Help: common.COUNTER_KISFLOW_DATA_TOTAL_HELP,
|
||
|
})
|
||
|
|
||
|
// 注册Metrics
|
||
|
prometheus.MustRegister(Metrics.DataTotal)
|
||
|
}
|
||
|
|
||
|
// RunMetrics 启动Prometheus指标服务
|
||
|
func RunMetrics() {
|
||
|
// 初始化Prometheus指标
|
||
|
InitMetrics()
|
||
|
|
||
|
if config.GlobalConfig.EnableProm == true && config.GlobalConfig.PrometheusListen == true {
|
||
|
// 启动Prometheus指标Metrics服务
|
||
|
go RunMetricsService(config.GlobalConfig.PrometheusServe)
|
||
|
}
|
||
|
}
|