This repository has been archived on 2024-01-04. You can view files and clone it, but cannot push or open issues or pull requests.
forgejo/routers/metrics.go
Stanislav 078c404c3b Prometheus endpoint (#5256)
* Add prometheus collector and route

* dep ensure -add github.com/prometheus/client_golang/prometheus

* dep ensure -update github.com/golang/protobuf

* add metrics to reserved usernames

* add comment head in metrics package

* fix style imports

* add metrics settings

* add bearer token check

* mapping metrics configs

* fix lint

* update config cheat sheet

* update conf sample, typo fix
2018-11-04 22:20:00 -05:00

30 lines
761 B
Go

// Copyright 2018 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package routers
import (
"github.com/prometheus/client_golang/prometheus/promhttp"
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/setting"
)
// Metrics validate auth token and render prometheus metrics
func Metrics(ctx *context.Context) {
if setting.Metrics.Token == "" {
promhttp.Handler().ServeHTTP(ctx.Resp, ctx.Req.Request)
return
}
header := ctx.Header().Get("Authorization")
if header == "" {
ctx.Error(401)
return
}
if header != "Bearer "+setting.Metrics.Token {
ctx.Error(401)
return
}
promhttp.Handler().ServeHTTP(ctx.Resp, ctx.Req.Request)
}