@@ -16,10 +16,9 @@ package exporter
16
16
import (
17
17
"bytes"
18
18
"encoding/json"
19
+ "log/slog"
19
20
"time"
20
21
21
- "github.com/go-kit/log"
22
- "github.com/go-kit/log/level"
23
22
"github.com/prometheus-community/json_exporter/config"
24
23
"github.com/prometheus/client_golang/prometheus"
25
24
"k8s.io/client-go/util/jsonpath"
@@ -28,7 +27,7 @@ import (
28
27
type JSONMetricCollector struct {
29
28
JSONMetrics []JSONMetric
30
29
Data []byte
31
- Logger log .Logger
30
+ Logger * slog .Logger
32
31
}
33
32
34
33
type JSONMetric struct {
@@ -53,7 +52,7 @@ func (mc JSONMetricCollector) Collect(ch chan<- prometheus.Metric) {
53
52
case config .ValueScrape :
54
53
value , err := extractValue (mc .Logger , mc .Data , m .KeyJSONPath , false )
55
54
if err != nil {
56
- level . Error ( mc .Logger ). Log ( "msg" , "Failed to extract value for metric" , "path" , m .KeyJSONPath , "err" , err , "metric" , m .Desc )
55
+ mc .Logger . Error ( "Failed to extract value for metric" , "path" , m .KeyJSONPath , "err" , err , "metric" , m .Desc )
57
56
continue
58
57
}
59
58
@@ -66,14 +65,14 @@ func (mc JSONMetricCollector) Collect(ch chan<- prometheus.Metric) {
66
65
)
67
66
ch <- timestampMetric (mc .Logger , m , mc .Data , metric )
68
67
} else {
69
- level . Error ( mc .Logger ). Log ( "msg" , "Failed to convert extracted value to float64" , "path" , m .KeyJSONPath , "value" , value , "err" , err , "metric" , m .Desc )
68
+ mc .Logger . Error ( "Failed to convert extracted value to float64" , "path" , m .KeyJSONPath , "value" , value , "err" , err , "metric" , m .Desc )
70
69
continue
71
70
}
72
71
73
72
case config .ObjectScrape :
74
73
values , err := extractValue (mc .Logger , mc .Data , m .KeyJSONPath , true )
75
74
if err != nil {
76
- level . Error ( mc .Logger ). Log ( "msg" , "Failed to extract json objects for metric" , "err" , err , "metric" , m .Desc )
75
+ mc .Logger . Error ( "Failed to extract json objects for metric" , "err" , err , "metric" , m .Desc )
77
76
continue
78
77
}
79
78
@@ -82,12 +81,12 @@ func (mc JSONMetricCollector) Collect(ch chan<- prometheus.Metric) {
82
81
for _ , data := range jsonData {
83
82
jdata , err := json .Marshal (data )
84
83
if err != nil {
85
- level . Error ( mc .Logger ). Log ( "msg" , "Failed to marshal data to json" , "path" , m .ValueJSONPath , "err" , err , "metric" , m .Desc , "data" , data )
84
+ mc .Logger . Error ( "Failed to marshal data to json" , "path" , m .ValueJSONPath , "err" , err , "metric" , m .Desc , "data" , data )
86
85
continue
87
86
}
88
87
value , err := extractValue (mc .Logger , jdata , m .ValueJSONPath , false )
89
88
if err != nil {
90
- level . Error ( mc .Logger ). Log ( "msg" , "Failed to extract value for metric" , "path" , m .ValueJSONPath , "err" , err , "metric" , m .Desc )
89
+ mc .Logger . Error ( "Failed to extract value for metric" , "path" , m .ValueJSONPath , "err" , err , "metric" , m .Desc )
91
90
continue
92
91
}
93
92
@@ -100,23 +99,23 @@ func (mc JSONMetricCollector) Collect(ch chan<- prometheus.Metric) {
100
99
)
101
100
ch <- timestampMetric (mc .Logger , m , jdata , metric )
102
101
} else {
103
- level . Error ( mc .Logger ). Log ( "msg" , "Failed to convert extracted value to float64" , "path" , m .ValueJSONPath , "value" , value , "err" , err , "metric" , m .Desc )
102
+ mc .Logger . Error ( "Failed to convert extracted value to float64" , "path" , m .ValueJSONPath , "value" , value , "err" , err , "metric" , m .Desc )
104
103
continue
105
104
}
106
105
}
107
106
} else {
108
- level . Error ( mc .Logger ). Log ( "msg" , "Failed to convert extracted objects to json" , "err" , err , "metric" , m .Desc )
107
+ mc .Logger . Error ( "Failed to convert extracted objects to json" , "err" , err , "metric" , m .Desc )
109
108
continue
110
109
}
111
110
default :
112
- level . Error ( mc .Logger ). Log ( "msg" , "Unknown scrape config type" , "type" , m .Type , "metric" , m .Desc )
111
+ mc .Logger . Error ( "Unknown scrape config type" , "type" , m .Type , "metric" , m .Desc )
113
112
continue
114
113
}
115
114
}
116
115
}
117
116
118
117
// Returns the last matching value at the given json path
119
- func extractValue (logger log .Logger , data []byte , path string , enableJSONOutput bool ) (string , error ) {
118
+ func extractValue (logger * slog .Logger , data []byte , path string , enableJSONOutput bool ) (string , error ) {
120
119
var jsonData interface {}
121
120
buf := new (bytes.Buffer )
122
121
@@ -126,17 +125,17 @@ func extractValue(logger log.Logger, data []byte, path string, enableJSONOutput
126
125
}
127
126
128
127
if err := json .Unmarshal (data , & jsonData ); err != nil {
129
- level .Error (logger ). Log ( "msg" , "Failed to unmarshal data to json" , "err" , err , "data" , data )
128
+ logger .Error ("Failed to unmarshal data to json" , "err" , err , "data" , data )
130
129
return "" , err
131
130
}
132
131
133
132
if err := j .Parse (path ); err != nil {
134
- level .Error (logger ). Log ( "msg" , "Failed to parse jsonpath" , "err" , err , "path" , path , "data" , data )
133
+ logger .Error ("Failed to parse jsonpath" , "err" , err , "path" , path , "data" , data )
135
134
return "" , err
136
135
}
137
136
138
137
if err := j .Execute (buf , jsonData ); err != nil {
139
- level .Error (logger ). Log ( "msg" , "Failed to execute jsonpath" , "err" , err , "path" , path , "data" , data )
138
+ logger .Error ("Failed to execute jsonpath" , "err" , err , "path" , path , "data" , data )
140
139
return "" , err
141
140
}
142
141
@@ -149,30 +148,30 @@ func extractValue(logger log.Logger, data []byte, path string, enableJSONOutput
149
148
}
150
149
151
150
// Returns the list of labels created from the list of provided json paths
152
- func extractLabels (logger log .Logger , data []byte , paths []string ) []string {
151
+ func extractLabels (logger * slog .Logger , data []byte , paths []string ) []string {
153
152
labels := make ([]string , len (paths ))
154
153
for i , path := range paths {
155
154
if result , err := extractValue (logger , data , path , false ); err == nil {
156
155
labels [i ] = result
157
156
} else {
158
- level .Error (logger ). Log ( "msg" , "Failed to extract label value" , "err" , err , "path" , path , "data" , data )
157
+ logger .Error ("Failed to extract label value" , "err" , err , "path" , path , "data" , data )
159
158
}
160
159
}
161
160
return labels
162
161
}
163
162
164
- func timestampMetric (logger log .Logger , m JSONMetric , data []byte , pm prometheus.Metric ) prometheus.Metric {
163
+ func timestampMetric (logger * slog .Logger , m JSONMetric , data []byte , pm prometheus.Metric ) prometheus.Metric {
165
164
if m .EpochTimestampJSONPath == "" {
166
165
return pm
167
166
}
168
167
ts , err := extractValue (logger , data , m .EpochTimestampJSONPath , false )
169
168
if err != nil {
170
- level .Error (logger ). Log ( "msg" , "Failed to extract timestamp for metric" , "path" , m .KeyJSONPath , "err" , err , "metric" , m .Desc )
169
+ logger .Error ("Failed to extract timestamp for metric" , "path" , m .KeyJSONPath , "err" , err , "metric" , m .Desc )
171
170
return pm
172
171
}
173
172
epochTime , err := SanitizeIntValue (ts )
174
173
if err != nil {
175
- level .Error (logger ). Log ( "msg" , "Failed to parse timestamp for metric" , "path" , m .KeyJSONPath , "err" , err , "metric" , m .Desc )
174
+ logger .Error ("Failed to parse timestamp for metric" , "path" , m .KeyJSONPath , "err" , err , "metric" , m .Desc )
176
175
return pm
177
176
}
178
177
timestamp := time .UnixMilli (epochTime )
0 commit comments