From c64e2a319fcbff2dc2f5d5d62570928394c89d08 Mon Sep 17 00:00:00 2001 From: Romain Date: Sat, 2 Oct 2021 03:32:15 +0200 Subject: [PATCH] Add projects and project boards in exposed metrics (#17202) * Add projects and project boards in exposed metrics * Refactor db.GetEngine Co-authored-by: delvh --- models/statistic.go | 38 ++++++++++++++++++++---------------- modules/metrics/collector.go | 24 +++++++++++++++++++++++ 2 files changed, 45 insertions(+), 17 deletions(-) diff --git a/models/statistic.go b/models/statistic.go index 43b1afbc481..1fdcc44a6fe 100644 --- a/models/statistic.go +++ b/models/statistic.go @@ -18,20 +18,22 @@ type Statistic struct { Comment, Oauth, Follow, Mirror, Release, LoginSource, Webhook, Milestone, Label, HookTask, - Team, UpdateTask, Attachment int64 + Team, UpdateTask, Project, + ProjectBoard, Attachment int64 } } // GetStatistic returns the database statistics func GetStatistic() (stats Statistic) { + e := db.GetEngine(db.DefaultContext) stats.Counter.User = CountUsers() stats.Counter.Org = CountOrganizations() - stats.Counter.PublicKey, _ = db.GetEngine(db.DefaultContext).Count(new(PublicKey)) + stats.Counter.PublicKey, _ = e.Count(new(PublicKey)) stats.Counter.Repo = CountRepositories(true) - stats.Counter.Watch, _ = db.GetEngine(db.DefaultContext).Count(new(Watch)) - stats.Counter.Star, _ = db.GetEngine(db.DefaultContext).Count(new(Star)) - stats.Counter.Action, _ = db.GetEngine(db.DefaultContext).Count(new(Action)) - stats.Counter.Access, _ = db.GetEngine(db.DefaultContext).Count(new(Access)) + stats.Counter.Watch, _ = e.Count(new(Watch)) + stats.Counter.Star, _ = e.Count(new(Star)) + stats.Counter.Action, _ = e.Count(new(Action)) + stats.Counter.Access, _ = e.Count(new(Access)) type IssueCount struct { Count int64 @@ -39,7 +41,7 @@ func GetStatistic() (stats Statistic) { } issueCounts := []IssueCount{} - _ = db.GetEngine(db.DefaultContext).Select("COUNT(*) AS count, is_closed").Table("issue").GroupBy("is_closed").Find(&issueCounts) + _ = e.Select("COUNT(*) AS count, is_closed").Table("issue").GroupBy("is_closed").Find(&issueCounts) for _, c := range issueCounts { if c.IsClosed { stats.Counter.IssueClosed = c.Count @@ -50,17 +52,19 @@ func GetStatistic() (stats Statistic) { stats.Counter.Issue = stats.Counter.IssueClosed + stats.Counter.IssueOpen - stats.Counter.Comment, _ = db.GetEngine(db.DefaultContext).Count(new(Comment)) + stats.Counter.Comment, _ = e.Count(new(Comment)) stats.Counter.Oauth = 0 - stats.Counter.Follow, _ = db.GetEngine(db.DefaultContext).Count(new(Follow)) - stats.Counter.Mirror, _ = db.GetEngine(db.DefaultContext).Count(new(Mirror)) - stats.Counter.Release, _ = db.GetEngine(db.DefaultContext).Count(new(Release)) + stats.Counter.Follow, _ = e.Count(new(Follow)) + stats.Counter.Mirror, _ = e.Count(new(Mirror)) + stats.Counter.Release, _ = e.Count(new(Release)) stats.Counter.LoginSource = login.CountSources() - stats.Counter.Webhook, _ = db.GetEngine(db.DefaultContext).Count(new(Webhook)) - stats.Counter.Milestone, _ = db.GetEngine(db.DefaultContext).Count(new(Milestone)) - stats.Counter.Label, _ = db.GetEngine(db.DefaultContext).Count(new(Label)) - stats.Counter.HookTask, _ = db.GetEngine(db.DefaultContext).Count(new(HookTask)) - stats.Counter.Team, _ = db.GetEngine(db.DefaultContext).Count(new(Team)) - stats.Counter.Attachment, _ = db.GetEngine(db.DefaultContext).Count(new(Attachment)) + stats.Counter.Webhook, _ = e.Count(new(Webhook)) + stats.Counter.Milestone, _ = e.Count(new(Milestone)) + stats.Counter.Label, _ = e.Count(new(Label)) + stats.Counter.HookTask, _ = e.Count(new(HookTask)) + stats.Counter.Team, _ = e.Count(new(Team)) + stats.Counter.Attachment, _ = e.Count(new(Attachment)) + stats.Counter.Project, _ = e.Count(new(Project)) + stats.Counter.ProjectBoard, _ = e.Count(new(ProjectBoard)) return } diff --git a/modules/metrics/collector.go b/modules/metrics/collector.go index f906b58f7da..29374583d63 100755 --- a/modules/metrics/collector.go +++ b/modules/metrics/collector.go @@ -30,6 +30,8 @@ type Collector struct { Mirrors *prometheus.Desc Oauths *prometheus.Desc Organizations *prometheus.Desc + Projects *prometheus.Desc + ProjectBoards *prometheus.Desc PublicKeys *prometheus.Desc Releases *prometheus.Desc Repositories *prometheus.Desc @@ -119,6 +121,16 @@ func NewCollector() Collector { "Number of Organizations", nil, nil, ), + Projects: prometheus.NewDesc( + namespace+"projects", + "Number of projects", + nil, nil, + ), + ProjectBoards: prometheus.NewDesc( + namespace+"projects_boards", + "Number of project boards", + nil, nil, + ), PublicKeys: prometheus.NewDesc( namespace+"publickeys", "Number of PublicKeys", @@ -185,6 +197,8 @@ func (c Collector) Describe(ch chan<- *prometheus.Desc) { ch <- c.Mirrors ch <- c.Oauths ch <- c.Organizations + ch <- c.Projects + ch <- c.ProjectBoards ch <- c.PublicKeys ch <- c.Releases ch <- c.Repositories @@ -275,6 +289,16 @@ func (c Collector) Collect(ch chan<- prometheus.Metric) { prometheus.GaugeValue, float64(stats.Counter.Org), ) + ch <- prometheus.MustNewConstMetric( + c.Projects, + prometheus.GaugeValue, + float64(stats.Counter.Project), + ) + ch <- prometheus.MustNewConstMetric( + c.ProjectBoards, + prometheus.GaugeValue, + float64(stats.Counter.ProjectBoard), + ) ch <- prometheus.MustNewConstMetric( c.PublicKeys, prometheus.GaugeValue,