mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-03 12:26:05 +01:00 
			
		
		
		
	* Get the issue counts in one query Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Andrew Thornton <art27@cantab.net>
		
			
				
	
	
		
			324 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Go
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			324 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Go
		
	
	
		
			Executable File
		
	
	
	
	
// 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 metrics
 | 
						|
 | 
						|
import (
 | 
						|
	"code.gitea.io/gitea/models"
 | 
						|
 | 
						|
	"github.com/prometheus/client_golang/prometheus"
 | 
						|
)
 | 
						|
 | 
						|
const namespace = "gitea_"
 | 
						|
 | 
						|
// Collector implements the prometheus.Collector interface and
 | 
						|
// exposes gitea metrics for prometheus
 | 
						|
type Collector struct {
 | 
						|
	Accesses      *prometheus.Desc
 | 
						|
	Actions       *prometheus.Desc
 | 
						|
	Attachments   *prometheus.Desc
 | 
						|
	Comments      *prometheus.Desc
 | 
						|
	Follows       *prometheus.Desc
 | 
						|
	HookTasks     *prometheus.Desc
 | 
						|
	Issues        *prometheus.Desc
 | 
						|
	IssuesOpen    *prometheus.Desc
 | 
						|
	IssuesClosed  *prometheus.Desc
 | 
						|
	Labels        *prometheus.Desc
 | 
						|
	LoginSources  *prometheus.Desc
 | 
						|
	Milestones    *prometheus.Desc
 | 
						|
	Mirrors       *prometheus.Desc
 | 
						|
	Oauths        *prometheus.Desc
 | 
						|
	Organizations *prometheus.Desc
 | 
						|
	PublicKeys    *prometheus.Desc
 | 
						|
	Releases      *prometheus.Desc
 | 
						|
	Repositories  *prometheus.Desc
 | 
						|
	Stars         *prometheus.Desc
 | 
						|
	Teams         *prometheus.Desc
 | 
						|
	UpdateTasks   *prometheus.Desc
 | 
						|
	Users         *prometheus.Desc
 | 
						|
	Watches       *prometheus.Desc
 | 
						|
	Webhooks      *prometheus.Desc
 | 
						|
}
 | 
						|
 | 
						|
// NewCollector returns a new Collector with all prometheus.Desc initialized
 | 
						|
func NewCollector() Collector {
 | 
						|
	return Collector{
 | 
						|
		Accesses: prometheus.NewDesc(
 | 
						|
			namespace+"accesses",
 | 
						|
			"Number of Accesses",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Actions: prometheus.NewDesc(
 | 
						|
			namespace+"actions",
 | 
						|
			"Number of Actions",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Attachments: prometheus.NewDesc(
 | 
						|
			namespace+"attachments",
 | 
						|
			"Number of Attachments",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Comments: prometheus.NewDesc(
 | 
						|
			namespace+"comments",
 | 
						|
			"Number of Comments",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Follows: prometheus.NewDesc(
 | 
						|
			namespace+"follows",
 | 
						|
			"Number of Follows",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		HookTasks: prometheus.NewDesc(
 | 
						|
			namespace+"hooktasks",
 | 
						|
			"Number of HookTasks",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Issues: prometheus.NewDesc(
 | 
						|
			namespace+"issues",
 | 
						|
			"Number of Issues",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		IssuesOpen: prometheus.NewDesc(
 | 
						|
			namespace+"issues_open",
 | 
						|
			"Number of open Issues",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		IssuesClosed: prometheus.NewDesc(
 | 
						|
			namespace+"issues_closed",
 | 
						|
			"Number of closed Issues",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Labels: prometheus.NewDesc(
 | 
						|
			namespace+"labels",
 | 
						|
			"Number of Labels",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		LoginSources: prometheus.NewDesc(
 | 
						|
			namespace+"loginsources",
 | 
						|
			"Number of LoginSources",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Milestones: prometheus.NewDesc(
 | 
						|
			namespace+"milestones",
 | 
						|
			"Number of Milestones",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Mirrors: prometheus.NewDesc(
 | 
						|
			namespace+"mirrors",
 | 
						|
			"Number of Mirrors",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Oauths: prometheus.NewDesc(
 | 
						|
			namespace+"oauths",
 | 
						|
			"Number of Oauths",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Organizations: prometheus.NewDesc(
 | 
						|
			namespace+"organizations",
 | 
						|
			"Number of Organizations",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		PublicKeys: prometheus.NewDesc(
 | 
						|
			namespace+"publickeys",
 | 
						|
			"Number of PublicKeys",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Releases: prometheus.NewDesc(
 | 
						|
			namespace+"releases",
 | 
						|
			"Number of Releases",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Repositories: prometheus.NewDesc(
 | 
						|
			namespace+"repositories",
 | 
						|
			"Number of Repositories",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Stars: prometheus.NewDesc(
 | 
						|
			namespace+"stars",
 | 
						|
			"Number of Stars",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Teams: prometheus.NewDesc(
 | 
						|
			namespace+"teams",
 | 
						|
			"Number of Teams",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		UpdateTasks: prometheus.NewDesc(
 | 
						|
			namespace+"updatetasks",
 | 
						|
			"Number of UpdateTasks",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Users: prometheus.NewDesc(
 | 
						|
			namespace+"users",
 | 
						|
			"Number of Users",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Watches: prometheus.NewDesc(
 | 
						|
			namespace+"watches",
 | 
						|
			"Number of Watches",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
		Webhooks: prometheus.NewDesc(
 | 
						|
			namespace+"webhooks",
 | 
						|
			"Number of Webhooks",
 | 
						|
			nil, nil,
 | 
						|
		),
 | 
						|
	}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// Describe returns all possible prometheus.Desc
 | 
						|
func (c Collector) Describe(ch chan<- *prometheus.Desc) {
 | 
						|
	ch <- c.Accesses
 | 
						|
	ch <- c.Actions
 | 
						|
	ch <- c.Attachments
 | 
						|
	ch <- c.Comments
 | 
						|
	ch <- c.Follows
 | 
						|
	ch <- c.HookTasks
 | 
						|
	ch <- c.Issues
 | 
						|
	ch <- c.IssuesOpen
 | 
						|
	ch <- c.IssuesClosed
 | 
						|
	ch <- c.Labels
 | 
						|
	ch <- c.LoginSources
 | 
						|
	ch <- c.Milestones
 | 
						|
	ch <- c.Mirrors
 | 
						|
	ch <- c.Oauths
 | 
						|
	ch <- c.Organizations
 | 
						|
	ch <- c.PublicKeys
 | 
						|
	ch <- c.Releases
 | 
						|
	ch <- c.Repositories
 | 
						|
	ch <- c.Stars
 | 
						|
	ch <- c.Teams
 | 
						|
	ch <- c.UpdateTasks
 | 
						|
	ch <- c.Users
 | 
						|
	ch <- c.Watches
 | 
						|
	ch <- c.Webhooks
 | 
						|
}
 | 
						|
 | 
						|
// Collect returns the metrics with values
 | 
						|
func (c Collector) Collect(ch chan<- prometheus.Metric) {
 | 
						|
	stats := models.GetStatistic()
 | 
						|
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Accesses,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Access),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Actions,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Action),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Attachments,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Attachment),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Comments,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Comment),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Follows,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Follow),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.HookTasks,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.HookTask),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Issues,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Issue),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.IssuesClosed,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.IssueClosed),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.IssuesOpen,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.IssueOpen),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Labels,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Label),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.LoginSources,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.LoginSource),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Milestones,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Milestone),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Mirrors,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Mirror),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Oauths,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Oauth),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Organizations,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Org),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.PublicKeys,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.PublicKey),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Releases,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Release),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Repositories,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Repo),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Stars,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Star),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Teams,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Team),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.UpdateTasks,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.UpdateTask),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Users,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.User),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Watches,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Watch),
 | 
						|
	)
 | 
						|
	ch <- prometheus.MustNewConstMetric(
 | 
						|
		c.Webhooks,
 | 
						|
		prometheus.GaugeValue,
 | 
						|
		float64(stats.Counter.Webhook),
 | 
						|
	)
 | 
						|
}
 |