mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-27 14:13:52 +03:00
include build info in Prometheus metrics (#22819)
Related to: https://github.com/go-gitea/gitea/issues/18061 This PR adds build info to the Prometheus metrics. This includes: - goarch: https://pkg.go.dev/runtime#GOARCH - goos: https://pkg.go.dev/runtime#pkg-constants - goversion: https://pkg.go.dev/runtime#Version - gitea version: just exposes the existing code.gitea.io/gitea/modules/setting.AppVer It's a similar approach to what some other Golang projects are doing, e.g. Prometheus: https://github.com/prometheus/common/blob/main/version/info.go example /metrics response from Prometheus: ``` # HELP prometheus_build_info A metric with a constant '1' value labeled by version, revision, branch, goversion from which prometheus was built, and the goos and goarch for the build. # TYPE prometheus_build_info gauge prometheus_build_info{branch="HEAD",goarch="amd64",goos="linux",goversion="go1.19.4",revision="c0d8a56c69014279464c0e15d8bfb0e153af0dab",version="2.41.0"} 1 ``` /metrics response from gitea with this PR: ``` # HELP gitea_build_info Build information # TYPE gitea_build_info gauge gitea_build_info{goarch="amd64",goos="linux",goversion="go1.20",version="2c6cc0b8c"} 1 ``` Signed-off-by: Michal Wasilewski <mwasilewski@gmx.com> <!-- Please check the following: 1. Make sure you are targeting the `main` branch, pull requests on release branches are only allowed for bug fixes. 2. Read contributing guidelines: https://github.com/go-gitea/gitea/blob/main/CONTRIBUTING.md 3. Describe what your pull request does and which issue you're targeting (if any) --> Signed-off-by: Michal Wasilewski <mwasilewski@gmx.com>
This commit is contained in:
parent
7d3c4c3e8a
commit
5ae07d4c2f
1 changed files with 24 additions and 0 deletions
|
@ -4,7 +4,10 @@
|
||||||
package metrics
|
package metrics
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"runtime"
|
||||||
|
|
||||||
activities_model "code.gitea.io/gitea/models/activities"
|
activities_model "code.gitea.io/gitea/models/activities"
|
||||||
|
"code.gitea.io/gitea/modules/setting"
|
||||||
|
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
)
|
)
|
||||||
|
@ -17,6 +20,7 @@ type Collector struct {
|
||||||
Accesses *prometheus.Desc
|
Accesses *prometheus.Desc
|
||||||
Actions *prometheus.Desc
|
Actions *prometheus.Desc
|
||||||
Attachments *prometheus.Desc
|
Attachments *prometheus.Desc
|
||||||
|
BuildInfo *prometheus.Desc
|
||||||
Comments *prometheus.Desc
|
Comments *prometheus.Desc
|
||||||
Follows *prometheus.Desc
|
Follows *prometheus.Desc
|
||||||
HookTasks *prometheus.Desc
|
HookTasks *prometheus.Desc
|
||||||
|
@ -62,6 +66,16 @@ func NewCollector() Collector {
|
||||||
"Number of Attachments",
|
"Number of Attachments",
|
||||||
nil, nil,
|
nil, nil,
|
||||||
),
|
),
|
||||||
|
BuildInfo: prometheus.NewDesc(
|
||||||
|
namespace+"build_info",
|
||||||
|
"Build information",
|
||||||
|
[]string{
|
||||||
|
"goarch",
|
||||||
|
"goos",
|
||||||
|
"goversion",
|
||||||
|
"version",
|
||||||
|
}, nil,
|
||||||
|
),
|
||||||
Comments: prometheus.NewDesc(
|
Comments: prometheus.NewDesc(
|
||||||
namespace+"comments",
|
namespace+"comments",
|
||||||
"Number of Comments",
|
"Number of Comments",
|
||||||
|
@ -195,6 +209,7 @@ func (c Collector) Describe(ch chan<- *prometheus.Desc) {
|
||||||
ch <- c.Accesses
|
ch <- c.Accesses
|
||||||
ch <- c.Actions
|
ch <- c.Actions
|
||||||
ch <- c.Attachments
|
ch <- c.Attachments
|
||||||
|
ch <- c.BuildInfo
|
||||||
ch <- c.Comments
|
ch <- c.Comments
|
||||||
ch <- c.Follows
|
ch <- c.Follows
|
||||||
ch <- c.HookTasks
|
ch <- c.HookTasks
|
||||||
|
@ -241,6 +256,15 @@ func (c Collector) Collect(ch chan<- prometheus.Metric) {
|
||||||
prometheus.GaugeValue,
|
prometheus.GaugeValue,
|
||||||
float64(stats.Counter.Attachment),
|
float64(stats.Counter.Attachment),
|
||||||
)
|
)
|
||||||
|
ch <- prometheus.MustNewConstMetric(
|
||||||
|
c.BuildInfo,
|
||||||
|
prometheus.GaugeValue,
|
||||||
|
1,
|
||||||
|
runtime.GOARCH,
|
||||||
|
runtime.GOOS,
|
||||||
|
runtime.Version(),
|
||||||
|
setting.AppVer,
|
||||||
|
)
|
||||||
ch <- prometheus.MustNewConstMetric(
|
ch <- prometheus.MustNewConstMetric(
|
||||||
c.Comments,
|
c.Comments,
|
||||||
prometheus.GaugeValue,
|
prometheus.GaugeValue,
|
||||||
|
|
Loading…
Reference in a new issue