|
- // 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
- 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,
- ),
- 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.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.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),
- )
- }
|