@@ -16,10 +16,9 @@ package exporter
1616import (
1717 "bytes"
1818 "encoding/json"
19+ "log/slog"
1920 "time"
2021
21- "github.com/go-kit/log"
22- "github.com/go-kit/log/level"
2322 "github.com/prometheus-community/json_exporter/config"
2423 "github.com/prometheus/client_golang/prometheus"
2524 "k8s.io/client-go/util/jsonpath"
@@ -28,7 +27,7 @@ import (
2827type JSONMetricCollector struct {
2928 JSONMetrics []JSONMetric
3029 Data []byte
31- Logger log .Logger
30+ Logger * slog .Logger
3231}
3332
3433type JSONMetric struct {
@@ -53,7 +52,7 @@ func (mc JSONMetricCollector) Collect(ch chan<- prometheus.Metric) {
5352 case config .ValueScrape :
5453 value , err := extractValue (mc .Logger , mc .Data , m .KeyJSONPath , false )
5554 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 )
5756 continue
5857 }
5958
@@ -66,14 +65,14 @@ func (mc JSONMetricCollector) Collect(ch chan<- prometheus.Metric) {
6665 )
6766 ch <- timestampMetric (mc .Logger , m , mc .Data , metric )
6867 } 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 )
7069 continue
7170 }
7271
7372 case config .ObjectScrape :
7473 values , err := extractValue (mc .Logger , mc .Data , m .KeyJSONPath , true )
7574 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 )
7776 continue
7877 }
7978
@@ -82,12 +81,12 @@ func (mc JSONMetricCollector) Collect(ch chan<- prometheus.Metric) {
8281 for _ , data := range jsonData {
8382 jdata , err := json .Marshal (data )
8483 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 )
8685 continue
8786 }
8887 value , err := extractValue (mc .Logger , jdata , m .ValueJSONPath , false )
8988 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 )
9190 continue
9291 }
9392
@@ -100,23 +99,23 @@ func (mc JSONMetricCollector) Collect(ch chan<- prometheus.Metric) {
10099 )
101100 ch <- timestampMetric (mc .Logger , m , jdata , metric )
102101 } 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 )
104103 continue
105104 }
106105 }
107106 } 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 )
109108 continue
110109 }
111110 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 )
113112 continue
114113 }
115114 }
116115}
117116
118117// 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 ) {
120119 var jsonData interface {}
121120 buf := new (bytes.Buffer )
122121
@@ -126,17 +125,17 @@ func extractValue(logger log.Logger, data []byte, path string, enableJSONOutput
126125 }
127126
128127 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 )
130129 return "" , err
131130 }
132131
133132 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 )
135134 return "" , err
136135 }
137136
138137 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 )
140139 return "" , err
141140 }
142141
@@ -149,30 +148,30 @@ func extractValue(logger log.Logger, data []byte, path string, enableJSONOutput
149148}
150149
151150// 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 {
153152 labels := make ([]string , len (paths ))
154153 for i , path := range paths {
155154 if result , err := extractValue (logger , data , path , false ); err == nil {
156155 labels [i ] = result
157156 } 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 )
159158 }
160159 }
161160 return labels
162161}
163162
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 {
165164 if m .EpochTimestampJSONPath == "" {
166165 return pm
167166 }
168167 ts , err := extractValue (logger , data , m .EpochTimestampJSONPath , false )
169168 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 )
171170 return pm
172171 }
173172 epochTime , err := SanitizeIntValue (ts )
174173 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 )
176175 return pm
177176 }
178177 timestamp := time .UnixMilli (epochTime )
0 commit comments