@@ -29,18 +29,20 @@ type MetricsCollectorAzureRmReservation struct {
2929func (m * MetricsCollectorAzureRmReservation ) Setup (collector * collector.Collector ) {
3030 m .Processor .Setup (collector )
3131
32+ commonLabels := []string {
33+ "reservationOrderID" ,
34+ "reservationID" ,
35+ "skuName" ,
36+ "kind" ,
37+ "usageDate" ,
38+ }
39+
3240 m .prometheus .reservationInfo = prometheus .NewGaugeVec (
3341 prometheus.GaugeOpts {
3442 Name : "azurerm_reservation_info" ,
3543 Help : "Azure ResourceManager Reservation Information" ,
3644 },
37- []string {
38- "reservationOrderID" ,
39- "reservationID" ,
40- "skuName" ,
41- "kind" ,
42- "usageDate" ,
43- },
45+ commonLabels ,
4446 )
4547 m .Collector .RegisterMetricList ("reservationInfo" , m .prometheus .reservationInfo , true )
4648
@@ -49,13 +51,7 @@ func (m *MetricsCollectorAzureRmReservation) Setup(collector *collector.Collecto
4951 Name : "azurerm_reservation_utilization" ,
5052 Help : "Azure ResourceManager Reservation Utilization" ,
5153 },
52- []string {
53- "reservationOrderID" ,
54- "reservationID" ,
55- "skuName" ,
56- "kind" ,
57- "usageDate" ,
58- },
54+ commonLabels ,
5955 )
6056 m .Collector .RegisterMetricList ("reservationUsage" , m .prometheus .reservationUsage , true )
6157
@@ -64,13 +60,7 @@ func (m *MetricsCollectorAzureRmReservation) Setup(collector *collector.Collecto
6460 Name : "azurerm_reservation_utilization_min" ,
6561 Help : "Azure ResourceManager Reservation Min Utilization" ,
6662 },
67- []string {
68- "reservationOrderID" ,
69- "reservationID" ,
70- "skuName" ,
71- "kind" ,
72- "usageDate" ,
73- },
63+ commonLabels ,
7464 )
7565 m .Collector .RegisterMetricList ("reservationMinUsage" , m .prometheus .reservationMinUsage , true )
7666
@@ -79,13 +69,7 @@ func (m *MetricsCollectorAzureRmReservation) Setup(collector *collector.Collecto
7969 Name : "azurerm_reservation_utilization_max" ,
8070 Help : "Azure ResourceManager Reservation Max Utilization" ,
8171 },
82- []string {
83- "reservationOrderID" ,
84- "reservationID" ,
85- "skuName" ,
86- "kind" ,
87- "usageDate" ,
88- },
72+ commonLabels ,
8973 )
9074 m .Collector .RegisterMetricList ("reservationMaxUsage" , m .prometheus .reservationMaxUsage , true )
9175
@@ -94,13 +78,7 @@ func (m *MetricsCollectorAzureRmReservation) Setup(collector *collector.Collecto
9478 Name : "azurerm_reservation_used_hours" ,
9579 Help : "Azure ResourceManager Reservation Used Hours" ,
9680 },
97- []string {
98- "reservationOrderID" ,
99- "reservationID" ,
100- "skuName" ,
101- "kind" ,
102- "usageDate" ,
103- },
81+ commonLabels ,
10482 )
10583 m .Collector .RegisterMetricList ("reservationUsedHours" , m .prometheus .reservationUsedHours , true )
10684
@@ -109,13 +87,7 @@ func (m *MetricsCollectorAzureRmReservation) Setup(collector *collector.Collecto
10987 Name : "azurerm_reservation_reserved_hours" ,
11088 Help : "Azure ResourceManager Reservation Reserved Hours" ,
11189 },
112- []string {
113- "reservationOrderID" ,
114- "reservationID" ,
115- "skuName" ,
116- "kind" ,
117- "usageDate" ,
118- },
90+ commonLabels ,
11991 )
12092 m .Collector .RegisterMetricList ("reservationReservedHours" , m .prometheus .reservationReservedHours , true )
12193
@@ -124,24 +96,20 @@ func (m *MetricsCollectorAzureRmReservation) Setup(collector *collector.Collecto
12496 Name : "azurerm_reservation_total_reserved_quantity" ,
12597 Help : "Azure ResourceManager Reservation Total Reserved Quantity" ,
12698 },
127- []string {
128- "reservationOrderID" ,
129- "reservationID" ,
130- "skuName" ,
131- "kind" ,
132- "usageDate" ,
133- },
99+ commonLabels ,
134100 )
135101 m .Collector .RegisterMetricList ("reservationTotalReservedQuantity" , m .prometheus .reservationTotalReservedQuantity , true )
136102}
137103
138104func (m * MetricsCollectorAzureRmReservation ) Reset () {}
139105
140106func (m * MetricsCollectorAzureRmReservation ) Collect (callback chan <- func ()) {
141- m .collectReservationUsage (logger , callback )
107+ for _ , scope := range Config .Collectors .Reservation .Scopes {
108+ m .collectReservationUsage (logger , scope , callback )
109+ }
142110}
143111
144- func (m * MetricsCollectorAzureRmReservation ) collectReservationUsage (logger * zap.SugaredLogger , callback chan <- func ()) {
112+ func (m * MetricsCollectorAzureRmReservation ) collectReservationUsage (logger * zap.SugaredLogger , scope string , callback chan <- func ()) {
145113 reservationInfo := m .Collector .GetMetricList ("reservationInfo" )
146114 reservationUsage := m .Collector .GetMetricList ("reservationUsage" )
147115 reservationMinUsage := m .Collector .GetMetricList ("reservationMinUsage" )
@@ -151,21 +119,19 @@ func (m *MetricsCollectorAzureRmReservation) collectReservationUsage(logger *zap
151119 reservationTotalReservedQuantity := m .Collector .GetMetricList ("reservationTotalReservedQuantity" )
152120
153121 days := Config .Collectors .Reservation .FromDays
154- resourceScope := Config .Collectors .Reservation .ResourceScope
155122 granularity := Config .Collectors .Reservation .Granularity
156123
157124 now := time .Now ()
158- formattedDate := now .AddDate (0 , 0 , - days ).Format ("2006-01-02" )
159- startDate := formattedDate
160- endDate := time .Now ().Format ("2006-01-02" )
125+ startDate := now .AddDate (0 , 0 , - days ).Format ("2006-01-02" )
126+ endDate := now .Format ("2006-01-02" )
161127
162128 clientFactory , err := armconsumption .NewClientFactory ("<subscription-id>" , AzureClient .GetCred (), AzureClient .NewArmClientOptions ())
163129 if err != nil {
164130 logger .Panic (err )
165131 }
166132
167- // " Create a pager to retrieve daily booking summaries
168- pager := clientFactory .NewReservationsSummariesClient ().NewListPager (resourceScope , armconsumption .Datagrain (granularity ), & armconsumption.ReservationsSummariesClientListOptions {
133+ // Create a pager to retrieve daily booking summaries
134+ pager := clientFactory .NewReservationsSummariesClient ().NewListPager (scope , armconsumption .Datagrain (granularity ), & armconsumption.ReservationsSummariesClientListOptions {
169135 StartDate : to .Ptr (startDate ),
170136 EndDate : to .Ptr (endDate ),
171137 Filter : nil ,
@@ -182,6 +148,7 @@ func (m *MetricsCollectorAzureRmReservation) collectReservationUsage(logger *zap
182148
183149 for _ , reservationProperties := range page .Value {
184150 labels := prometheus.Labels {
151+ "scope" : scope ,
185152 "reservationOrderID" : to .String (reservationProperties .Properties .ReservationOrderID ),
186153 "reservationID" : to .String (reservationProperties .Properties .ReservationID ),
187154 "skuName" : to .String (reservationProperties .Properties .SKUName ),
0 commit comments