diff options
author | Romain <romdum@users.noreply.github.com> | 2021-08-07 11:43:50 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-07 12:43:50 +0300 |
commit | 14762abf0bebc57d355cf763c248cca4cbb60043 (patch) | |
tree | 8b8c53fc6ff5615fc7e4b476c121bed5b4068496 | |
parent | 620c5690ea509f54af24d983060f0897c9ada09b (diff) | |
download | gitea-14762abf0bebc57d355cf763c248cca4cbb60043.tar.gz gitea-14762abf0bebc57d355cf763c248cca4cbb60043.zip |
Separate open and closed issue in metrics (#16637)
* Get the issue counts in one query
Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: Andrew Thornton <art27@cantab.net>
-rwxr-xr-x[-rw-r--r--] | models/models.go | 22 | ||||
-rwxr-xr-x[-rw-r--r--] | modules/metrics/collector.go | 24 |
2 files changed, 44 insertions, 2 deletions
diff --git a/models/models.go b/models/models.go index 610933d327..378747dbce 100644..100755 --- a/models/models.go +++ b/models/models.go @@ -272,7 +272,8 @@ type Statistic struct { Counter struct { User, Org, PublicKey, Repo, Watch, Star, Action, Access, - Issue, Comment, Oauth, Follow, + Issue, IssueClosed, IssueOpen, + Comment, Oauth, Follow, Mirror, Release, LoginSource, Webhook, Milestone, Label, HookTask, Team, UpdateTask, Attachment int64 @@ -289,7 +290,24 @@ func GetStatistic() (stats Statistic) { stats.Counter.Star, _ = x.Count(new(Star)) stats.Counter.Action, _ = x.Count(new(Action)) stats.Counter.Access, _ = x.Count(new(Access)) - stats.Counter.Issue, _ = x.Count(new(Issue)) + + type IssueCount struct { + Count int64 + IsClosed bool + } + issueCounts := []IssueCount{} + + _ = x.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 + } else { + stats.Counter.IssueOpen = c.Count + } + } + + stats.Counter.Issue = stats.Counter.IssueClosed + stats.Counter.IssueOpen + stats.Counter.Comment, _ = x.Count(new(Comment)) stats.Counter.Oauth = 0 stats.Counter.Follow, _ = x.Count(new(Follow)) diff --git a/modules/metrics/collector.go b/modules/metrics/collector.go index 6f6cf7cb64..f906b58f7d 100644..100755 --- a/modules/metrics/collector.go +++ b/modules/metrics/collector.go @@ -22,6 +22,8 @@ type Collector struct { Follows *prometheus.Desc HookTasks *prometheus.Desc Issues *prometheus.Desc + IssuesOpen *prometheus.Desc + IssuesClosed *prometheus.Desc Labels *prometheus.Desc LoginSources *prometheus.Desc Milestones *prometheus.Desc @@ -77,6 +79,16 @@ func NewCollector() Collector { "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", @@ -165,6 +177,8 @@ func (c Collector) Describe(ch chan<- *prometheus.Desc) { ch <- c.Follows ch <- c.HookTasks ch <- c.Issues + ch <- c.IssuesOpen + ch <- c.IssuesClosed ch <- c.Labels ch <- c.LoginSources ch <- c.Milestones @@ -222,6 +236,16 @@ func (c Collector) Collect(ch chan<- prometheus.Metric) { 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), |