Просмотр исходного кода

feat(metrics): 注册 /metrics 端点

master
fengsilin 3 недель назад
Родитель
Сommit
123f0d95ae
2 измененных файлов: 41 добавлений и 0 удалений
  1. +34
    -0
      common/metrics/metrics_test.go
  2. +7
    -0
      router/relay-router.go

+ 34
- 0
common/metrics/metrics_test.go Просмотреть файл

@@ -206,3 +206,37 @@ func TestMetricsMiddleware_RequestDuration(t *testing.T) {

assert.Equal(t, 1, testutil.CollectAndCount(m.RequestDuration))
}

func TestMetricsEndpoint_Format(t *testing.T) {
handler := NewMetricsHandler()

req := httptest.NewRequest("GET", "/metrics", nil)
w := httptest.NewRecorder()
handler.ServeHTTP(w, req)

assert.Equal(t, 200, w.Code)
assert.Contains(t, w.Header().Get("Content-Type"), "text/plain")
}

func TestMetricsEndpoint_WithData(t *testing.T) {
reg := newTestRegistry()
_ = NewMetrics(reg)

handler := NewMetricsHandlerWithRegistry(reg)

req := httptest.NewRequest("GET", "/metrics", nil)
w := httptest.NewRecorder()
handler.ServeHTTP(w, req)

assert.Equal(t, 200, w.Code)
}

func TestMetricsEndpoint_EmptyNoPanic(t *testing.T) {
handler := NewMetricsHandler()

req := httptest.NewRequest("GET", "/metrics", nil)
w := httptest.NewRecorder()
handler.ServeHTTP(w, req)

assert.Equal(t, 200, w.Code)
}

+ 7
- 0
router/relay-router.go Просмотреть файл

@@ -1,6 +1,8 @@
package router

import (
"github.com/QuantumNous/new-api/common"
"github.com/QuantumNous/new-api/common/metrics"
"github.com/QuantumNous/new-api/constant"
"github.com/QuantumNous/new-api/controller"
"github.com/QuantumNous/new-api/middleware"
@@ -18,6 +20,11 @@ func relayHandler(format types.RelayFormat) gin.HandlerFunc {
}

func SetRelayRouter(router *gin.Engine) {
if metrics.IsEnabled() {
metricsPath := common.GetEnvOrDefaultString("METRICS_PATH", "/metrics")
router.GET(metricsPath, gin.WrapH(metrics.NewMetricsHandler()))
}

router.Use(middleware.CORS())
router.Use(middleware.DecompressRequestMiddleware())
router.Use(middleware.BodyStorageCleanup()) // 清理请求体存储


Загрузка…
Отмена
Сохранить