diff --git a/server/src/core/web.go b/server/src/core/web.go index 92f1948..18fb369 100644 --- a/server/src/core/web.go +++ b/server/src/core/web.go @@ -12,6 +12,9 @@ var errSkip = errors.New(`skip`) // WebHandle ... func (c *Core) ServeHTTP(w http.ResponseWriter, r *http.Request) { + metrics.ReqConcurrentInc() + defer metrics.ReqConcurrentDec() + p, err := req(w, r) if err != nil { if err != errSkip { diff --git a/server/src/metrics/http.go b/server/src/metrics/http.go index cdad3d2..b51e3de 100644 --- a/server/src/metrics/http.go +++ b/server/src/metrics/http.go @@ -7,10 +7,16 @@ import ( ) var ( - reqCount = newCounter(`orca_req_count`, `HTTP 请求次数`) - reqFailCount = newCounter(`orca_req_fail_count`, `无法响应的 HTTP 请求数`) - reqBytes = newCounter(`orca_req_bytes`, `文件总上传量`) - errorCount = prometheus.NewCounterVec( + reqCount = newCounter(`orca_req_count`, `HTTP 请求次数`) + reqFailCount = newCounter(`orca_req_fail_count`, `无法响应的 HTTP 请求数`) + reqBytes = newCounter(`orca_req_bytes`, `文件总上传量`) + reqConcurrent = prometheus.NewGauge( + prometheus.GaugeOpts{ + Name: `orca_req_concurrent`, + Help: `当前并发请求数`, + }, + ) + errorCount = prometheus.NewCounterVec( prometheus.CounterOpts{ Name: `orca_error_code`, Help: `API 返回报错`, @@ -24,6 +30,16 @@ func ReqFailCount() { reqFailCount.Inc() } +// ReqConcurrentInc ... +func ReqConcurrentInc() { + reqConcurrent.Inc() +} + +// ReqConcurrentDec ... +func ReqConcurrentDec() { + reqConcurrent.Dec() +} + // ReqBytes ... func ReqBytes(n int) { reqCount.Inc() diff --git a/server/src/metrics/init.go b/server/src/metrics/init.go index a3e9f1e..9e68b39 100644 --- a/server/src/metrics/init.go +++ b/server/src/metrics/init.go @@ -6,6 +6,8 @@ func init() { prometheus.MustRegister(reqCount) prometheus.MustRegister(reqFailCount) prometheus.MustRegister(reqBytes) + prometheus.MustRegister(reqConcurrent) + prometheus.MustRegister(errorCount) prometheus.MustRegister(rspBytes)