@@ -14,16 +14,15 @@ import (
14
14
)
15
15
16
16
var (
17
- promHost string
18
- promPort string
19
- startStamp string
20
- endStamp string
21
- query string
22
- step string
23
- dataDir string
24
- importstatus bool
25
- targetDir string
26
- metricType string
17
+ promHost string
18
+ promPort string
19
+ startStamp string
20
+ endStamp string
21
+ query string
22
+ step string
23
+ dataDir string
24
+ targetDir string
25
+ metricType string
27
26
)
28
27
29
28
func newPrometheusHandler (host string ) prom.Prometheus {
@@ -33,6 +32,7 @@ func newPrometheusHandler(host string) prom.Prometheus {
33
32
func CallPrometheus () {
34
33
35
34
var promHandler prom.Prometheus
35
+
36
36
promHandler = newPrometheusHandler (promHost )
37
37
rawMetricData := []string {}
38
38
@@ -65,40 +65,20 @@ func CallPrometheus() {
65
65
return
66
66
}
67
67
68
+ ch := make (chan interface {}, len (results ))
68
69
for _ , r := range results {
69
-
70
- result , ok := r .(map [string ]interface {})
71
- if ! ok {
72
- continue
73
- }
74
-
75
- labelMap := []string {}
76
- metric , ok := result ["metric" ].(map [string ]interface {})
77
- if ! ok {
78
- continue
79
- }
80
- metricName , ok := metric ["__name__" ].(string )
81
- if ok {
82
- for key , value := range metric {
83
-
84
- if key != "__name__" {
85
- labelMap = append (labelMap , fmt .Sprintf (`%s="%s"` , key , value ))
86
- }
87
- }
88
- query := fmt .Sprintf (`%s{%s}` , metricName , strings .Join (labelMap , "," ))
89
-
90
- values , ok := result ["values" ].([]interface {})
91
- if ok {
92
- for _ , v := range values {
93
- valArr , ok := v .([]interface {})
94
- if ok && len (valArr ) == 2 {
95
- tmpData := fmt .Sprintf ("%s %v %f" , query , valArr [1 ], valArr [0 ])
96
- rawMetricData = append (rawMetricData , tmpData )
97
- }
98
- }
99
- }
70
+ ch <- r
71
+ go promHandler .ParsePrometheusMetric (ch )
72
+ }
73
+ lengthOfMigration := 0
74
+ for val := range ch {
75
+ msg := val .(map [string ]interface {})
76
+ tmpData := fmt .Sprintf ("%v" , msg ["mt" ])
77
+ lengthOfMigration = lengthOfMigration + len (tmpData )
78
+ log .Info ().Msgf ("Size of migrated chunks:: %d" , lengthOfMigration )
79
+ if msg ["mt" ] != nil {
80
+ rawMetricData = append (rawMetricData , tmpData )
100
81
}
101
-
102
82
}
103
83
rawMetricData = append (rawMetricData , "# EOF" )
104
84
@@ -116,6 +96,7 @@ func CallPrometheus() {
116
96
}
117
97
118
98
func main () {
99
+
119
100
var rootCmd = & cobra.Command {
120
101
Use : "openmetricmigrator" ,
121
102
Short : "CLI tool to export Prometheus data in OpenMetrics format" ,
0 commit comments