Skip to content

Commit afe0f1a

Browse files
[v2] Add org/user metrics gathering (#125)
1 parent ffa17b5 commit afe0f1a

File tree

2 files changed

+65
-1
lines changed

2 files changed

+65
-1
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v2.0.0
1+
v2.0.1

exporter/prometheus.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,22 @@ func (e *Exporter) Collect(ch chan<- prometheus.Metric) {
3434

3535
data = append(data, repoMetrics...)
3636

37+
userMetrics, err := e.getUserMetrics(ctx)
38+
if err != nil {
39+
log.Errorf("getting user metrics: %v", err)
40+
return
41+
}
42+
43+
data = append(data, userMetrics...)
44+
45+
orgMetrics, err := e.getOrgMetrics(ctx)
46+
if err != nil {
47+
log.Errorf("getting organisation metrics: %v", err)
48+
return
49+
}
50+
51+
data = append(data, orgMetrics...)
52+
3753
r, err := e.getRateLimits(ctx)
3854
if err != nil {
3955
log.Errorf("getting rate limit metrics: %v", err)
@@ -118,6 +134,54 @@ func (e *Exporter) getRepoMetrics(ctx context.Context) ([]*Datum, error) {
118134
return data, nil
119135
}
120136

137+
// getUserMetrics fetches metrics for the configured users
138+
func (e *Exporter) getUserMetrics(ctx context.Context) ([]*Datum, error) {
139+
var data []*Datum
140+
for _, m := range e.Users {
141+
repos, _, err := e.Client.Repositories.ListByUser(ctx, m, nil)
142+
if err != nil {
143+
log.Errorf("Error fetching user data: %v", err)
144+
continue
145+
}
146+
147+
for _, repo := range repos {
148+
d, err := e.parseRepo(ctx, *repo)
149+
if err != nil {
150+
log.Errorf("Error parsing user repository data: %v", err)
151+
continue
152+
}
153+
154+
data = append(data, d)
155+
}
156+
157+
}
158+
return data, nil
159+
}
160+
161+
// getOrgMetrics fetches metrics for the configured organisations
162+
func (e *Exporter) getOrgMetrics(ctx context.Context) ([]*Datum, error) {
163+
var data []*Datum
164+
for _, m := range e.Organisations {
165+
repos, _, err := e.Client.Repositories.ListByOrg(ctx, m, nil)
166+
if err != nil {
167+
log.Errorf("Error fetching organisation data: %v", err)
168+
continue
169+
}
170+
171+
for _, repo := range repos {
172+
d, err := e.parseRepo(ctx, *repo)
173+
if err != nil {
174+
log.Errorf("Error parsing organisation repository data: %v", err)
175+
continue
176+
}
177+
178+
data = append(data, d)
179+
}
180+
}
181+
182+
return data, nil
183+
}
184+
121185
func (e *Exporter) parseRepo(ctx context.Context, repo github.Repository) (*Datum, error) {
122186
repoOwner := repo.GetOwner().GetLogin()
123187
repoName := repo.GetName()

0 commit comments

Comments
 (0)