@@ -18,46 +18,11 @@ import (
1818var TOKEN string
1919
2020type selectelBillingResponse struct {
21- Status string `json:"status"`
22- Data struct {
23- Currency string `json:"currency"`
24- IsPostpay bool `json:"is_postpay"`
25- Discount int `json:"discount"`
26- Primary struct {
27- Main int `json:"main"`
28- Bonus int `json:"bonus"`
29- VkRub int `json:"vk_rub"`
30- Ref int `json:"ref"`
31- Hold struct {
32- Main int `json:"main"`
33- Bonus int `json:"bonus"`
34- VkRub int `json:"vk_rub"`
35- } `json:"hold"`
36- } `json:"primary"`
37- Storage struct {
38- Main int `json:"main"`
39- Bonus int `json:"bonus"`
40- VkRub int `json:"vk_rub"`
41- Prediction interface {} `json:"prediction"`
42- Debt int `json:"debt"`
43- Sum int `json:"sum"`
44- } `json:"storage"`
45- Vpc struct {
46- Main int `json:"main"`
47- Bonus int `json:"bonus"`
48- VkRub int `json:"vk_rub"`
49- Prediction interface {} `json:"prediction"`
50- Debt int `json:"debt"`
51- Sum int `json:"sum"`
52- } `json:"vpc"`
53- Vmware struct {
54- Main int `json:"main"`
55- Bonus int `json:"bonus"`
56- VkRub int `json:"vk_rub"`
57- Prediction interface {} `json:"prediction"`
58- Debt int `json:"debt"`
59- Sum int `json:"sum"`
60- } `json:"vmware"`
21+ Data struct {
22+ Billings []struct {
23+ FinalSum int `json:"final_sum"`
24+ DebtSum int `json:"debt_sum"`
25+ } `json:"billings"`
6126 } `json:"data"`
6227}
6328
@@ -110,23 +75,17 @@ func main() {
11075}
11176
11277func initGauges () map [string ]prometheus.Gauge {
113- selectelNames := make (map [string ][]string )
114- selectelStructFields := []string {"main" , "bonus" , "vk_rub" , "debt" , "sum" }
115- selectelNames ["primary" ] = []string {"main" , "bonus" , "vk_rub" , "ref" , "hold_main" , "hold_bonus" , "hold_vk_rub" }
116- selectelNames ["storage" ] = selectelStructFields
117- selectelNames ["vmware" ] = selectelStructFields
118- selectelNames ["vpc" ] = selectelStructFields
119-
12078 promGauges := make (map [string ]prometheus.Gauge )
12179
122- for name , fields := range selectelNames {
123- for _ , field := range fields {
124- promGauges ["selectel_billing_" + name + "_" + field ] = prometheus .NewGauge (prometheus.GaugeOpts {
125- Name : "selectel_billing_" + name + "_" + field ,
126- Help : "selectel billing " + name + " " + field ,
127- })
128- }
129- }
80+ promGauges ["selectel_billing_final_sum" ] = prometheus .NewGauge (prometheus.GaugeOpts {
81+ Name : "selectel_billing_final_sum" ,
82+ Help : "selectel billing final sum" ,
83+ })
84+
85+ promGauges ["selectel_billing_debt_sum" ] = prometheus .NewGauge (prometheus.GaugeOpts {
86+ Name : "selectel_billing_debt_sum" ,
87+ Help : "selectel billing debt sum" ,
88+ })
13089
13190 for _ , v := range promGauges {
13291 prometheus .MustRegister (v )
@@ -145,35 +104,9 @@ func recordMetrics() {
145104 continue
146105 }
147106
148- // primary
149- gauge ["selectel_billing_primary_main" ].Set (float64 (s .Data .Primary .Main ))
150- gauge ["selectel_billing_primary_bonus" ].Set (float64 (s .Data .Primary .Bonus ))
151- gauge ["selectel_billing_primary_vk_rub" ].Set (float64 (s .Data .Primary .VkRub ))
152- gauge ["selectel_billing_primary_ref" ].Set (float64 (s .Data .Primary .Ref ))
153- gauge ["selectel_billing_primary_hold_main" ].Set (float64 (s .Data .Primary .Hold .Main ))
154- gauge ["selectel_billing_primary_hold_bonus" ].Set (float64 (s .Data .Primary .Hold .Bonus ))
155- gauge ["selectel_billing_primary_hold_vk_rub" ].Set (float64 (s .Data .Primary .Hold .VkRub ))
156-
157- // storage
158- gauge ["selectel_billing_storage_main" ].Set (float64 (s .Data .Storage .Main ))
159- gauge ["selectel_billing_storage_bonus" ].Set (float64 (s .Data .Storage .Bonus ))
160- gauge ["selectel_billing_storage_vk_rub" ].Set (float64 (s .Data .Storage .VkRub ))
161- gauge ["selectel_billing_storage_debt" ].Set (float64 (s .Data .Storage .Debt ))
162- gauge ["selectel_billing_storage_sum" ].Set (float64 (s .Data .Storage .Sum ))
163-
164- // vpc
165- gauge ["selectel_billing_vpc_main" ].Set (float64 (s .Data .Vpc .Main ))
166- gauge ["selectel_billing_vpc_bonus" ].Set (float64 (s .Data .Vpc .Bonus ))
167- gauge ["selectel_billing_vpc_vk_rub" ].Set (float64 (s .Data .Vpc .VkRub ))
168- gauge ["selectel_billing_vpc_debt" ].Set (float64 (s .Data .Vpc .Debt ))
169- gauge ["selectel_billing_vpc_sum" ].Set (float64 (s .Data .Vpc .Sum ))
170-
171- // vmware
172- gauge ["selectel_billing_vmware_main" ].Set (float64 (s .Data .Vmware .Main ))
173- gauge ["selectel_billing_vmware_bonus" ].Set (float64 (s .Data .Vmware .Bonus ))
174- gauge ["selectel_billing_vmware_vk_rub" ].Set (float64 (s .Data .Vmware .VkRub ))
175- gauge ["selectel_billing_vmware_debt" ].Set (float64 (s .Data .Vmware .Debt ))
176- gauge ["selectel_billing_vmware_sum" ].Set (float64 (s .Data .Vmware .Sum ))
107+ // записываем метрики
108+ gauge ["selectel_billing_final_sum" ].Set (float64 (s .Data .Billings [0 ].FinalSum ))
109+ gauge ["selectel_billing_debt_sum" ].Set (float64 (s .Data .Billings [0 ].DebtSum ))
177110
178111 time .Sleep (time .Hour * 1 )
179112 }
0 commit comments