@@ -22,6 +22,7 @@ import (
2222 "errors"
2323 "fmt"
2424 "io"
25+ "log/slog"
2526 "net"
2627 "net/http"
2728 "net/url"
@@ -32,13 +33,11 @@ import (
3233 "github.com/Showmax/go-fqdn"
3334 "github.com/alecthomas/kingpin/v2"
3435 "github.com/cenkalti/backoff/v4"
35- "github.com/go-kit/log"
36- "github.com/go-kit/log/level"
3736 "github.com/prometheus-community/pushprox/util"
3837 "github.com/prometheus/client_golang/prometheus"
3938 "github.com/prometheus/client_golang/prometheus/promhttp"
40- "github.com/prometheus/common/promlog "
41- "github.com/prometheus/common/promlog /flag"
39+ "github.com/prometheus/common/promslog "
40+ "github.com/prometheus/common/promslog /flag"
4241)
4342
4443var (
@@ -89,11 +88,11 @@ func newBackOffFromFlags() backoff.BackOff {
8988
9089// Coordinator for scrape requests and responses
9190type Coordinator struct {
92- logger log .Logger
91+ logger * slog .Logger
9392}
9493
9594func (c * Coordinator ) handleErr (request * http.Request , client * http.Client , err error ) {
96- level . Error ( c .logger ). Log ( "err " , err )
95+ c .logger . Error ( "Coordinator error" , "error " , err )
9796 scrapeErrorCounter .Inc ()
9897 resp := & http.Response {
9998 StatusCode : http .StatusInternalServerError ,
@@ -102,14 +101,14 @@ func (c *Coordinator) handleErr(request *http.Request, client *http.Client, err
102101 }
103102 if err = c .doPush (resp , request , client ); err != nil {
104103 pushErrorCounter .Inc ()
105- level . Warn ( c .logger ). Log ( "msg" , "Failed to push failed scrape response:" , "err" , err )
104+ c .logger . Warn ( "Failed to push failed scrape response:" , "err" , err )
106105 return
107106 }
108- level . Info ( c .logger ). Log ( "msg" , "Pushed failed scrape response" )
107+ c .logger . Info ( "Pushed failed scrape response" )
109108}
110109
111110func (c * Coordinator ) doScrape (request * http.Request , client * http.Client ) {
112- logger := log . With ( c .logger , "scrape_id" , request .Header .Get ("id" ))
111+ logger := c .logger . With ( "scrape_id" , request .Header .Get ("id" ))
113112 timeout , err := util .GetHeaderTimeout (request .Header )
114113 if err != nil {
115114 c .handleErr (request , client , err )
@@ -137,13 +136,13 @@ func (c *Coordinator) doScrape(request *http.Request, client *http.Client) {
137136 c .handleErr (request , client , fmt .Errorf ("failed to scrape %s: %w" , request .URL .String (), err ))
138137 return
139138 }
140- level .Info (logger ). Log ( "msg" , "Retrieved scrape response" )
139+ logger .Info ("Retrieved scrape response" )
141140 if err = c .doPush (scrapeResp , request , client ); err != nil {
142141 pushErrorCounter .Inc ()
143- level .Warn (logger ). Log ( "msg" , "Failed to push scrape response:" , "err" , err )
142+ logger .Warn ("Failed to push scrape response:" , "err" , err )
144143 return
145144 }
146- level .Info (logger ). Log ( "msg" , "Pushed scrape result" )
145+ logger .Info ("Pushed scrape result" )
147146}
148147
149148// Report the result of the scrape back up to the proxy.
@@ -182,28 +181,28 @@ func (c *Coordinator) doPush(resp *http.Response, origRequest *http.Request, cli
182181func (c * Coordinator ) doPoll (client * http.Client ) error {
183182 base , err := url .Parse (* proxyURL )
184183 if err != nil {
185- level . Error ( c .logger ). Log ( "msg" , "Error parsing url:" , "err" , err )
184+ c .logger . Error ( "Error parsing url:" , "err" , err )
186185 return fmt .Errorf ("error parsing url: %w" , err )
187186 }
188187 u , err := url .Parse ("poll" )
189188 if err != nil {
190- level . Error ( c .logger ). Log ( "msg" , "Error parsing url:" , "err" , err )
189+ c .logger . Error ( "Error parsing url:" , "err" , err )
191190 return fmt .Errorf ("error parsing url poll: %w" , err )
192191 }
193192 url := base .ResolveReference (u )
194193 resp , err := client .Post (url .String (), "" , strings .NewReader (* myFqdn ))
195194 if err != nil {
196- level . Error ( c .logger ). Log ( "msg" , "Error polling:" , "err" , err )
195+ c .logger . Error ( "Error polling:" , "err" , err )
197196 return fmt .Errorf ("error polling: %w" , err )
198197 }
199198 defer resp .Body .Close ()
200199
201200 request , err := http .ReadRequest (bufio .NewReader (resp .Body ))
202201 if err != nil {
203- level . Error ( c .logger ). Log ( "msg" , "Error reading request:" , "err" , err )
202+ c .logger . Error ( "Error reading request:" , "err" , err )
204203 return fmt .Errorf ("error reading request: %w" , err )
205204 }
206- level . Info ( c .logger ). Log ( "msg" , "Got scrape request" , "scrape_id" , request .Header .Get ("id" ), "url" , request .URL )
205+ c .logger . Info ( "Got scrape request" , "scrape_id" , request .Header .Get ("id" ), "url" , request .URL )
207206
208207 request .RequestURI = ""
209208
@@ -221,32 +220,32 @@ func (c *Coordinator) loop(bo backoff.BackOff, client *http.Client) {
221220 if err := backoff .RetryNotify (op , bo , func (err error , _ time.Duration ) {
222221 pollErrorCounter .Inc ()
223222 }); err != nil {
224- level . Error ( c .logger ). Log ( "err " , err )
223+ c .logger . Error ( "backoff returned error" , "error " , err )
225224 }
226225 }
227226}
228227
229228func main () {
230- promlogConfig := promlog .Config {}
231- flag .AddFlags (kingpin .CommandLine , & promlogConfig )
229+ promslogConfig := promslog .Config {}
230+ flag .AddFlags (kingpin .CommandLine , & promslogConfig )
232231 kingpin .HelpFlag .Short ('h' )
233232 kingpin .Parse ()
234- logger := promlog .New (& promlogConfig )
233+ logger := promslog .New (& promslogConfig )
235234 coordinator := Coordinator {logger : logger }
236235
237236 if * proxyURL == "" {
238- level . Error ( coordinator .logger ). Log ( "msg" , "--proxy-url flag must be specified." )
237+ coordinator .logger . Error ( "--proxy-url flag must be specified." )
239238 os .Exit (1 )
240239 }
241240 // Make sure proxyURL ends with a single '/'
242241 * proxyURL = strings .TrimRight (* proxyURL , "/" ) + "/"
243- level . Info ( coordinator .logger ). Log ( "msg" , "URL and FQDN info" , "proxy_url" , * proxyURL , "fqdn" , * myFqdn )
242+ coordinator .logger . Info ( "URL and FQDN info" , "proxy_url" , * proxyURL , "fqdn" , * myFqdn )
244243
245244 tlsConfig := & tls.Config {}
246245 if * tlsCert != "" {
247246 cert , err := tls .LoadX509KeyPair (* tlsCert , * tlsKey )
248247 if err != nil {
249- level . Error ( coordinator .logger ). Log ( "msg" , "Certificate or Key is invalid" , "err" , err )
248+ coordinator .logger . Error ( "Certificate or Key is invalid" , "err" , err )
250249 os .Exit (1 )
251250 }
252251
@@ -257,12 +256,12 @@ func main() {
257256 if * caCertFile != "" {
258257 caCert , err := os .ReadFile (* caCertFile )
259258 if err != nil {
260- level . Error ( coordinator .logger ). Log ( "msg" , "Not able to read cacert file" , "err" , err )
259+ coordinator .logger . Error ( "Not able to read cacert file" , "err" , err )
261260 os .Exit (1 )
262261 }
263262 caCertPool := x509 .NewCertPool ()
264263 if ok := caCertPool .AppendCertsFromPEM (caCert ); ! ok {
265- level . Error ( coordinator .logger ). Log ( "msg" , "Failed to use cacert file as ca certificate" )
264+ coordinator .logger . Error ( "Failed to use cacert file as ca certificate" )
266265 os .Exit (1 )
267266 }
268267
@@ -272,7 +271,7 @@ func main() {
272271 if * metricsAddr != "" {
273272 go func () {
274273 if err := http .ListenAndServe (* metricsAddr , promhttp .Handler ()); err != nil {
275- level . Warn ( coordinator .logger ). Log ( "msg" , "ListenAndServe" , "err" , err )
274+ coordinator .logger . Warn ( "ListenAndServe" , "err" , err )
276275 }
277276 }()
278277 }
0 commit comments