mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09: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:
		| @@ -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, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user