88	"github.com/aws/aws-sdk-go/aws" 
99	"github.com/aws/aws-sdk-go/aws/session" 
1010	"github.com/aws/aws-sdk-go/service/cloudwatchlogs" 
11+ 	"github.com/go-kit/log" 
12+ 	"github.com/go-kit/log/level" 
1113	"github.com/prometheus/client_golang/prometheus" 
12- 	"github.com/prometheus/common/log" 
1314
1415	"github.com/percona/rds_exporter/sessions" 
1516)
@@ -25,7 +26,7 @@ type scraper struct {
2526	testDisallowUnknownFields  bool  // for tests only 
2627}
2728
28- func  newScraper (session  * session.Session , instances  []sessions.Instance ) * scraper  {
29+ func  newScraper (session  * session.Session , instances  []sessions.Instance ,  logger  log. Logger ) * scraper  {
2930	logStreamNames  :=  make ([]string , 0 , len (instances ))
3031	for  _ , instance  :=  range  instances  {
3132		logStreamNames  =  append (logStreamNames , instance .ResourceID )
@@ -36,7 +37,7 @@ func newScraper(session *session.Session, instances []sessions.Instance) *scrape
3637		logStreamNames : logStreamNames ,
3738		svc :            cloudwatchlogs .New (session ),
3839		nextStartTime :  time .Now ().Add (- 3  *  time .Minute ).Round (0 ), // strip monotonic clock reading 
39- 		logger :         log .With ("component" , "enhanced" ),
40+ 		logger :         log .With (logger ,  "component" , "enhanced" ),
4041	}
4142}
4243
@@ -82,14 +83,16 @@ func (s *scraper) scrape(ctx context.Context) (map[string][]prometheus.Metric, m
8283			StartTime :      aws .Int64 (aws .TimeUnixMilli (s .nextStartTime )),
8384		}
8485
85- 		s . logger .With ("next_start" , s .nextStartTime .UTC ()). With ( "since_last" , time .Since (s .nextStartTime )). Debugf ( "Requesting metrics" )
86+ 		level . Debug ( log .With (s . logger ,  "next_start" , s .nextStartTime .UTC (),  "since_last" , time .Since (s .nextStartTime ))). Log ( "msg" ,  "Requesting metrics" )
8687
8788		// collect all returned events and metrics/messages 
8889		collectAllMetrics  :=  func (output  * cloudwatchlogs.FilterLogEventsOutput , lastPage  bool ) bool  {
8990			for  _ , event  :=  range  output .Events  {
90- 				l  :=  s .logger .With ("EventId" , * event .EventId ).With ("LogStreamName" , * event .LogStreamName )
91- 				l  =  l .With ("Timestamp" , aws .MillisecondsTimeValue (event .Timestamp ).UTC ())
92- 				l  =  l .With ("IngestionTime" , aws .MillisecondsTimeValue (event .IngestionTime ).UTC ())
91+ 				l  :=  log .With (s .logger ,
92+ 					"EventId" , * event .EventId ,
93+ 					"LogStreamName" , * event .LogStreamName ,
94+ 					"Timestamp" , aws .MillisecondsTimeValue (event .Timestamp ).UTC (),
95+ 					"IngestionTime" , aws .MillisecondsTimeValue (event .IngestionTime ).UTC ())
9396
9497				var  instance  * sessions.Instance 
9598				for  _ , i  :=  range  s .instances  {
@@ -99,15 +102,15 @@ func (s *scraper) scrape(ctx context.Context) (map[string][]prometheus.Metric, m
99102					}
100103				}
101104				if  instance  ==  nil  {
102- 					l . Errorf ( "Failed to find instance." )
105+ 					level . Error ( l ). Log ( "msg" ,  "Failed to find instance." )
103106					continue 
104107				}
105108
106109				if  instance .DisableEnhancedMetrics  {
107- 					l . Debugf ( " Enhanced Metrics are disabled for instance %v."instance )
110+ 					level . Debug ( l ). Log ( "msg" ,  fmt . Sprintf ( " Enhanced Metrics are disabled for instance %v."instance ) )
108111					continue 
109112				}
110- 				l  =  l .With ("region" , instance .Region ). With ( "instance" , instance .Instance )
113+ 				l  =  log .With (l ,  "region" , instance .Region ,  "instance" , instance .Instance )
111114
112115				// l.Debugf("Message:\n%s", *event.Message) 
113116				osMetrics , err  :=  parseOSMetrics ([]byte (* event .Message ), s .testDisallowUnknownFields )
@@ -117,13 +120,13 @@ func (s *scraper) scrape(ctx context.Context) (map[string][]prometheus.Metric, m
117120						panic (fmt .Sprintf ("New metrics should be added: %s" , err ))
118121					}
119122
120- 					l . Errorf ( " Failed to parse metrics: %s. "err )
123+ 					level . Error ( l ). Log ( "msg" ,  " Failed to parse metrics." ,  "error "err )
121124					continue 
122125				}
123126				// l.Debugf("OS Metrics:\n%#v", osMetrics) 
124127
125128				timestamp  :=  aws .MillisecondsTimeValue (event .Timestamp ).UTC ()
126- 				l . Debugf ( " Timestamp from message: %s; from event: %s."osMetrics .Timestamp .UTC (), timestamp )
129+ 				level . Debug ( l ). Log ( "msg" ,  fmt . Sprintf ( " Timestamp from message: %s; from event: %s."osMetrics .Timestamp .UTC (), timestamp ) )
127130
128131				if  allMetrics [instance .ResourceID ] ==  nil  {
129132					allMetrics [instance .ResourceID ] =  make (map [time.Time ][]prometheus.Metric )
@@ -139,7 +142,7 @@ func (s *scraper) scrape(ctx context.Context) (map[string][]prometheus.Metric, m
139142			return  true  // continue pagination 
140143		}
141144		if  err  :=  s .svc .FilterLogEventsPagesWithContext (ctx , input , collectAllMetrics ); err  !=  nil  {
142- 			s .logger . Errorf ( " Failed to filter log events: %s. "err )
145+ 			level . Error ( s .logger ). Log ( "msg" ,  " Failed to filter log events." ,  "error "err )
143146		}
144147	}
145148	// get better times 
0 commit comments