Skip to content

Commit 2e72ada

Browse files
authored
fix: add logging wrapper for cloudwatch exporter with support for debug field (#4553)
* Add logging wrapper for cloudwatch exporter with support for debug field
1 parent 344759e commit 2e72ada

File tree

3 files changed

+37
-3
lines changed

3 files changed

+37
-3
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ Main (unreleased)
4141

4242
- Fix direction of arrows for pyroscope components in UI graph. (@dehaansa)
4343

44+
- Fix `prometheus.exporter.cloudwatch` to not always emit debug logs but respect debug property. (@kalleep)
45+
4446
v1.11.0
4547
-----------------
4648

internal/static/integrations/cloudwatch_exporter/cloudwatch_exporter.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,12 @@ func NewCloudwatchExporter(name string, logger log.Logger, conf yaceModel.JobsCo
4040
var factory cachingFactory
4141
var err error
4242

43+
l := slog.New(newSlogHandler(logging.NewSlogGoKitHandler(logger), debug))
44+
4345
if useAWSSDKVersionV2 {
44-
factory, err = yaceClientsV2.NewFactory(slog.New(logging.NewSlogGoKitHandler(logger)), conf, fipsEnabled)
46+
factory, err = yaceClientsV2.NewFactory(l, conf, fipsEnabled)
4547
} else {
46-
factory = yaceClientsV1.NewFactory(slog.New(logging.NewSlogGoKitHandler(logger)), conf, fipsEnabled)
48+
factory = yaceClientsV1.NewFactory(l, conf, fipsEnabled)
4749
}
4850

4951
if err != nil {
@@ -52,7 +54,7 @@ func NewCloudwatchExporter(name string, logger log.Logger, conf yaceModel.JobsCo
5254

5355
return &exporter{
5456
name: name,
55-
logger: slog.New(logging.NewSlogGoKitHandler(logger)),
57+
logger: l,
5658
cachingClientFactory: factory,
5759
scrapeConf: conf,
5860
}, nil
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package cloudwatch_exporter
2+
3+
import (
4+
"context"
5+
"log/slog"
6+
7+
"github.com/grafana/alloy/internal/runtime/logging"
8+
)
9+
10+
// slogHandler is wrapping our internal logging adapter with support for cloudwatch debug field.
11+
// cloudwatch exporter will inspect check for debug logging level and pass that to aws sdk that perform
12+
// it's own logging without going through the logger we pass.
13+
type slogHandler struct {
14+
debug bool
15+
*logging.SlogGoKitHandler
16+
}
17+
18+
func newSlogHandler(logger *logging.SlogGoKitHandler, debug bool) *slogHandler {
19+
return &slogHandler{
20+
debug: debug,
21+
SlogGoKitHandler: logger,
22+
}
23+
}
24+
25+
func (s *slogHandler) Enabled(ctx context.Context, level slog.Level) bool {
26+
if level == slog.LevelDebug {
27+
return s.debug
28+
}
29+
return s.SlogGoKitHandler.Enabled(ctx, level)
30+
}

0 commit comments

Comments
 (0)