Skip to content

Commit d064d36

Browse files
committed
fix duplicate github_workflow_consecutive_failed_runs and add more labels
added workloadID, actorLogin and actorType Signed-off-by: Markus Blaschke <[email protected]>
1 parent cc76a5e commit d064d36

File tree

1 file changed

+43
-15
lines changed

1 file changed

+43
-15
lines changed

metrics_github_workflows.go

+43-15
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ func (m *MetricsCollectorGithubWorkflows) Setup(collector *collector.Collector)
6262
[]string{
6363
"org",
6464
"repo",
65+
"workflowID",
6566
"workflow",
6667
"state",
6768
"path",
@@ -79,10 +80,13 @@ func (m *MetricsCollectorGithubWorkflows) Setup(collector *collector.Collector)
7980
[]string{
8081
"org",
8182
"repo",
83+
"workflowID",
8284
"workflow",
8385
"event",
8486
"branch",
8587
"conclusion",
88+
"actorLogin",
89+
"actorType",
8690
},
8791
)
8892
m.Collector.RegisterMetricList("workflowLatestRun", m.prometheus.workflowLatestRun, true)
@@ -95,10 +99,13 @@ func (m *MetricsCollectorGithubWorkflows) Setup(collector *collector.Collector)
9599
[]string{
96100
"org",
97101
"repo",
102+
"workflowID",
98103
"workflow",
99104
"event",
100105
"branch",
101106
"conclusion",
107+
"actorLogin",
108+
"actorType",
102109
},
103110
)
104111
m.Collector.RegisterMetricList("workflowLatestRunTimestamp", m.prometheus.workflowLatestRunTimestamp, true)
@@ -111,8 +118,11 @@ func (m *MetricsCollectorGithubWorkflows) Setup(collector *collector.Collector)
111118
[]string{
112119
"org",
113120
"repo",
121+
"workflowID",
114122
"workflow",
115123
"branch",
124+
"actorLogin",
125+
"actorType",
116126
},
117127
)
118128
m.Collector.RegisterMetricList("workflowConsecutiveFailures", m.prometheus.workflowConsecutiveFailures, true)
@@ -297,11 +307,12 @@ func (m *MetricsCollectorGithubWorkflows) Collect(callback chan<- func()) {
297307
// workflow info metrics
298308
for _, workflow := range workflows {
299309
labels := prometheus.Labels{
300-
"org": org,
301-
"repo": repo.GetName(),
302-
"workflow": workflow.GetName(),
303-
"state": workflow.GetState(),
304-
"path": workflow.GetPath(),
310+
"org": org,
311+
"repo": repo.GetName(),
312+
"workflowID": fmt.Sprintf("%v", workflow.GetID()),
313+
"workflow": workflow.GetName(),
314+
"state": workflow.GetState(),
315+
"path": workflow.GetPath(),
305316
}
306317
for labelName, labelValue := range propLabels {
307318
labels[labelName] = labelValue
@@ -362,10 +373,13 @@ func (m *MetricsCollectorGithubWorkflows) collectLatestRun(org string, repo *git
362373
labels := prometheus.Labels{
363374
"org": org,
364375
"repo": repo.GetName(),
376+
"workflowID": fmt.Sprintf("%v", workflowRun.GetWorkflowID()),
365377
"workflow": workflowRun.GetName(),
366378
"event": workflowRun.GetEvent(),
367379
"branch": workflowRun.GetHeadBranch(),
368380
"conclusion": workflowRun.GetConclusion(),
381+
"actorLogin": workflowRun.Actor.GetLogin(),
382+
"actorType": workflowRun.Actor.GetType(),
369383
}
370384

371385
runMetric.AddInfo(labels)
@@ -376,7 +390,10 @@ func (m *MetricsCollectorGithubWorkflows) collectLatestRun(org string, repo *git
376390
func (m *MetricsCollectorGithubWorkflows) collectConsecutiveFailures(org string, repo *github.Repository, workflowRun []*github.WorkflowRun, callback chan<- func()) {
377391
consecutiveFailuresMetric := m.Collector.GetMetricList("workflowConsecutiveFailures")
378392

379-
consecutiveFailMap := map[int64]int64{}
393+
consecutiveFailMap := map[int64]*struct {
394+
count int64
395+
labels prometheus.Labels
396+
}{}
380397
consecutiveFinishedMap := map[int64]bool{}
381398

382399
for _, row := range workflowRun {
@@ -398,7 +415,21 @@ func (m *MetricsCollectorGithubWorkflows) collectConsecutiveFailures(org string,
398415
}
399416

400417
if _, exists := consecutiveFailMap[workflowId]; !exists {
401-
consecutiveFailMap[workflowId] = 0
418+
consecutiveFailMap[workflowId] = &struct {
419+
count int64
420+
labels prometheus.Labels
421+
}{
422+
count: 0,
423+
labels: prometheus.Labels{
424+
"org": org,
425+
"repo": repo.GetName(),
426+
"workflowID": fmt.Sprintf("%v", workflowRun.GetWorkflowID()),
427+
"workflow": workflowRun.GetName(),
428+
"branch": workflowRun.GetHeadBranch(),
429+
"actorLogin": workflowRun.Actor.GetLogin(),
430+
"actorType": workflowRun.Actor.GetType(),
431+
},
432+
}
402433
consecutiveFinishedMap[workflowId] = false
403434
}
404435

@@ -411,17 +442,14 @@ func (m *MetricsCollectorGithubWorkflows) collectConsecutiveFailures(org string,
411442
case "":
412443
continue
413444
case "failure":
414-
consecutiveFailMap[workflowId]++
445+
consecutiveFailMap[workflowId].count++
415446
case "success":
416447
consecutiveFinishedMap[workflowId] = true
417448
}
449+
}
418450

419-
labels := prometheus.Labels{
420-
"org": org,
421-
"repo": repo.GetName(),
422-
"workflow": workflowRun.GetName(),
423-
"branch": workflowRun.GetHeadBranch(),
424-
}
425-
consecutiveFailuresMetric.Add(labels, float64(consecutiveFailMap[workflowId]))
451+
// process metrics
452+
for _, row := range consecutiveFailMap {
453+
consecutiveFailuresMetric.Add(row.labels, float64(row.count))
426454
}
427455
}

0 commit comments

Comments
 (0)