11package main
22
33import (
4- "errors"
54 "fmt"
65 "os"
76 "strings"
@@ -27,36 +26,41 @@ var (
2726 metricType string
2827)
2928
29+ func newPrometheusHandler (host string ) prom.Prometheus {
30+ return & prom.PromHandler {}
31+ }
32+
3033func CallPrometheus () {
3134
32- newPrometheusClient := prom.PromClient {}
35+ var promHandler prom.Prometheus
36+ promHandler = newPrometheusHandler (promHost )
3337 rawMetricData := []string {}
3438
3539 if ! strings .Contains (query , "\" " ) {
3640 query = strings .ReplaceAll (query , "{" , "{job=\" " ) // Example fix
3741 }
3842 url := fmt .Sprintf ("http://%s:%s/api/v1/query_range?query=%s&start=%s&end=%s&step=%s" ,
3943 promHost , promPort , query , startStamp , endStamp , step )
40- status , data := newPrometheusClient .FetchPrometheusData (url )
44+ status , data := promHandler .FetchPrometheusData (url )
4145
4246 if status != 200 {
43- err := errors . New ( fmt .Sprintf ("un expected response from Prometheus server %d" , status ) )
44- log .Err (err ).Msg ("Error while running newPrometheusClient .FetchPrometheusData" )
47+ err := fmt .Errorf ("un expected response from Prometheus server %d" , status )
48+ log .Err (err ).Msg ("Error while running promHandler .FetchPrometheusData" )
4549 return
4650 }
4751 rawMetricData = append (rawMetricData , fmt .Sprintf ("# TYPE %s %s" , strings .Split (query , "{" )[0 ], metricType ))
4852
4953 parsedData , ok := data ["data" ].(map [string ]interface {})
5054
5155 if ! ok {
52- err := errors . New ("json parsing error on rawPrometheus data " )
56+ err := fmt . Errorf ("json parsing error on rawPrometheus data " )
5357 log .Err (err ).Msg ("Error parsing 'data'" )
5458 return
5559 }
5660
5761 results , ok := parsedData ["result" ].([]interface {})
5862 if ! ok {
59- err := errors . New ("json parsing error on parsedData['result'] data " )
63+ err := fmt . Errorf ("json parsing error on parsedData['result'] data " )
6064 log .Err (err ).Msg ("Error parsing 'result'" )
6165 return
6266 }
@@ -70,6 +74,9 @@ func CallPrometheus() {
7074
7175 labelMap := []string {}
7276 metric , ok := result ["metric" ].(map [string ]interface {})
77+ if ! ok {
78+ continue
79+ }
7380 metricName , ok := metric ["__name__" ].(string )
7481 if ok {
7582 for key , value := range metric {
@@ -93,7 +100,7 @@ func CallPrometheus() {
93100 }
94101
95102 }
96- rawMetricData = append (rawMetricData , fmt . Sprintf ( "# EOF" ) )
103+ rawMetricData = append (rawMetricData , "# EOF" )
97104
98105 err := ensureDir (dataDir )
99106 if err != nil {
@@ -104,7 +111,7 @@ func CallPrometheus() {
104111
105112 if len (targetDir ) != 0 {
106113 cmd .FileHandler (fileName , rawMetricData )
107- newPrometheusClient .ImportPrometheusData (fileName , targetDir )
114+ promHandler .ImportPrometheusData (fileName , targetDir )
108115 }
109116}
110117
0 commit comments