@@ -9,7 +9,8 @@ type MetricsCollectorResourceUsage struct {
9
9
CollectorProcessorGeneral
10
10
11
11
prometheus struct {
12
- resourceUsageBuild * prometheus.GaugeVec
12
+ resourceUsageBuild * prometheus.GaugeVec
13
+ resourceUsageLicense * prometheus.GaugeVec
13
14
}
14
15
}
15
16
@@ -26,18 +27,96 @@ func (m *MetricsCollectorResourceUsage) Setup(collector *CollectorGeneral) {
26
27
},
27
28
)
28
29
30
+
31
+ m .prometheus .resourceUsageLicense = prometheus .NewGaugeVec (
32
+ prometheus.GaugeOpts {
33
+ Name : "azure_devops_resourceusage_license" ,
34
+ Help : "Azure DevOps resource usage for license informations" ,
35
+ },
36
+ []string {
37
+ "name" ,
38
+ },
39
+ )
40
+
29
41
prometheus .MustRegister (m .prometheus .resourceUsageBuild )
42
+ prometheus .MustRegister (m .prometheus .resourceUsageLicense )
30
43
}
31
44
32
45
func (m * MetricsCollectorResourceUsage ) Reset () {
33
46
m .prometheus .resourceUsageBuild .Reset ()
47
+ m .prometheus .resourceUsageLicense .Reset ()
34
48
}
35
49
36
50
func (m * MetricsCollectorResourceUsage ) Collect (ctx context.Context , callback chan <- func ()) {
37
- m .CollectResourceUsage (ctx , callback )
51
+ m .CollectResourceUsageBuild (ctx , callback )
52
+ m .CollectResourceUsageAgent (ctx , callback )
53
+ }
54
+
55
+ func (m * MetricsCollectorResourceUsage ) CollectResourceUsageAgent (ctx context.Context , callback chan <- func ()) {
56
+ resourceUsage , err := AzureDevopsClient .GetResourceUsageAgent ()
57
+ if err != nil {
58
+ Logger .Errorf ("call[GetResourceUsageAgent]: %v" , err )
59
+ return
60
+ }
61
+
62
+ resourceUsageMetric := NewMetricCollectorList ()
63
+
64
+ licenseDetails := resourceUsage .Data .Provider .TaskHubLicenseDetails
65
+
66
+ resourceUsageMetric .AddIfNotNil (prometheus.Labels {
67
+ "name" : "FreeLicenseCount" ,
68
+ }, licenseDetails .FreeLicenseCount )
69
+
70
+ resourceUsageMetric .AddIfNotNil (prometheus.Labels {
71
+ "name" : "FreeHostedLicenseCount" ,
72
+ }, licenseDetails .FreeHostedLicenseCount )
73
+
74
+ resourceUsageMetric .AddIfNotNil (prometheus.Labels {
75
+ "name" : "EnterpriseUsersCount" ,
76
+ }, licenseDetails .EnterpriseUsersCount )
77
+
78
+ resourceUsageMetric .AddIfNotNil (prometheus.Labels {
79
+ "name" : "EnterpriseUsersCount" ,
80
+ }, licenseDetails .EnterpriseUsersCount )
81
+
82
+ resourceUsageMetric .AddIfNotNil (prometheus.Labels {
83
+ "name" : "PurchasedHostedLicenseCount" ,
84
+ }, licenseDetails .PurchasedHostedLicenseCount )
85
+
86
+ resourceUsageMetric .AddIfNotNil (prometheus.Labels {
87
+ "name" : "PurchasedHostedLicenseCount" ,
88
+ }, licenseDetails .PurchasedHostedLicenseCount )
89
+
90
+ resourceUsageMetric .AddIfNotNil (prometheus.Labels {
91
+ "name" : "TotalLicenseCount" ,
92
+ }, licenseDetails .TotalLicenseCount )
93
+
94
+ resourceUsageMetric .AddIfNotNil (prometheus.Labels {
95
+ "name" : "MsdnUsersCount" ,
96
+ }, licenseDetails .MsdnUsersCount )
97
+
98
+ resourceUsageMetric .AddIfNotNil (prometheus.Labels {
99
+ "name" : "HostedAgentMinutesFreeCount" ,
100
+ }, licenseDetails .HostedAgentMinutesFreeCount )
101
+
102
+ resourceUsageMetric .AddIfNotNil (prometheus.Labels {
103
+ "name" : "HostedAgentMinutesUsedCount" ,
104
+ }, licenseDetails .HostedAgentMinutesUsedCount )
105
+
106
+ resourceUsageMetric .AddIfNotNil (prometheus.Labels {
107
+ "name" : "TotalPrivateLicenseCount" ,
108
+ }, licenseDetails .TotalPrivateLicenseCount )
109
+
110
+ resourceUsageMetric .AddIfNotNil (prometheus.Labels {
111
+ "name" : "TotalHostedLicenseCount" ,
112
+ }, licenseDetails .TotalHostedLicenseCount )
113
+
114
+ callback <- func () {
115
+ resourceUsageMetric .GaugeSet (m .prometheus .resourceUsageLicense )
116
+ }
38
117
}
39
118
40
- func (m * MetricsCollectorResourceUsage ) CollectResourceUsage (ctx context.Context , callback chan <- func ()) {
119
+ func (m * MetricsCollectorResourceUsage ) CollectResourceUsageBuild (ctx context.Context , callback chan <- func ()) {
41
120
resourceUsage , err := AzureDevopsClient .GetResourceUsageBuild ()
42
121
if err != nil {
43
122
Logger .Errorf ("call[GetResourceUsageBuild]: %v" , err )
0 commit comments