Skip to content

Commit

Permalink
feat: replace go-kit logger by slog
Browse files Browse the repository at this point in the history
  • Loading branch information
tboerger committed Sep 14, 2024
1 parent f04c14d commit ce5a3c5
Show file tree
Hide file tree
Showing 10 changed files with 67 additions and 96 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ endif

GOBUILD ?= CGO_ENABLED=0 go build
PACKAGES ?= $(shell go list ./...)
SOURCES ?= $(shell find . -name "*.go" -type f)
SOURCES ?= $(shell find . -name "*.go" -type f -not -path ./.devenv/\* -not -path ./.direnv/\*)
GENERATE ?= $(PACKAGES)

TAGS ?= netgo
Expand Down
7 changes: 7 additions & 0 deletions changelog/unreleased/logging-library.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Change: Switch to official logging library

Since there have been a structured logger part of the Go standard library we
thought it's time to replace the library with that. Be aware that log messages
should change a little bit.

https://github.com/promhippie/prometheus-hetzner-sd/issues/270
17 changes: 6 additions & 11 deletions pkg/action/discoverer.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@ package action
import (
"context"
"fmt"
"log/slog"
"strconv"
"strings"
"time"

"github.com/appscode/go-hetzner"
"github.com/go-kit/log"
"github.com/go-kit/log/level"
"github.com/prometheus/common/model"
"github.com/prometheus/prometheus/discovery/targetgroup"
)
Expand Down Expand Up @@ -37,7 +36,7 @@ var (
// Discoverer implements the Prometheus discoverer interface.
type Discoverer struct {
clients map[string]*hetzner.Client
logger log.Logger
logger *slog.Logger
refresh int
lasts map[string]struct{}
}
Expand Down Expand Up @@ -72,8 +71,7 @@ func (d *Discoverer) getTargets(_ context.Context) ([]*targetgroup.Group, error)
requestDuration.WithLabelValues(project).Observe(time.Since(now).Seconds())

if err != nil {
level.Warn(d.logger).Log(
"msg", "Failed to fetch servers",
d.logger.Warn("Failed to fetch servers",
"project", project,
"err", err,
)
Expand All @@ -82,8 +80,7 @@ func (d *Discoverer) getTargets(_ context.Context) ([]*targetgroup.Group, error)
continue
}

level.Debug(d.logger).Log(
"msg", "Requested servers",
d.logger.Debug("Requested servers",
"project", project,
"count", len(servers),
)
Expand Down Expand Up @@ -112,8 +109,7 @@ func (d *Discoverer) getTargets(_ context.Context) ([]*targetgroup.Group, error)
},
}

level.Debug(d.logger).Log(
"msg", "Server added",
d.logger.Debug("Server added",
"project", project,
"source", target.Source,
)
Expand All @@ -126,8 +122,7 @@ func (d *Discoverer) getTargets(_ context.Context) ([]*targetgroup.Group, error)

for k := range d.lasts {
if _, ok := current[k]; !ok {
level.Debug(d.logger).Log(
"msg", "Server deleted",
d.logger.Debug("Server deleted",
"source", k,
)

Expand Down
9 changes: 3 additions & 6 deletions pkg/action/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@ package action

import (
"fmt"
"log/slog"

"github.com/go-kit/log"
"github.com/go-kit/log/level"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/collectors"
"github.com/promhippie/prometheus-hetzner-sd/pkg/version"
Expand Down Expand Up @@ -49,11 +48,9 @@ func init() {
}

type promLogger struct {
logger log.Logger
logger *slog.Logger
}

func (pl promLogger) Println(v ...interface{}) {
level.Error(pl.logger).Log(
"msg", fmt.Sprintln(v...),
)
pl.logger.Error(fmt.Sprintln(v...))
}
30 changes: 11 additions & 19 deletions pkg/action/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,14 @@ import (
"context"
"fmt"
"io"
"log/slog"
"net/http"
"os"
"os/signal"
"time"

"github.com/appscode/go-hetzner"
"github.com/go-chi/chi/v5"
"github.com/go-kit/log"
"github.com/go-kit/log/level"
"github.com/oklog/run"
"github.com/prometheus/client_golang/prometheus/promhttp"
"github.com/prometheus/exporter-toolkit/web"
Expand All @@ -23,9 +22,8 @@ import (
)

// Server handles the server sub-command.
func Server(cfg *config.Config, logger log.Logger) error {
level.Info(logger).Log(
"msg", "Launching Prometheus Hetzner SD",
func Server(cfg *config.Config, logger *slog.Logger) error {
logger.Info("Launching Prometheus Hetzner SD",
"version", version.String,
"revision", version.Revision,
"date", version.Date,
Expand All @@ -43,8 +41,7 @@ func Server(cfg *config.Config, logger log.Logger) error {
username, err := config.Value(credential.Username)

if err != nil {
level.Error(logger).Log(
"msg", "Failed to read username secret",
logger.Error("Failed to read username secret",
"project", credential.Project,
"err", err,
)
Expand All @@ -55,8 +52,7 @@ func Server(cfg *config.Config, logger log.Logger) error {
password, err := config.Value(credential.Password)

if err != nil {
level.Error(logger).Log(
"msg", "Failed to read password secret",
logger.Error("Failed to read password secret",
"project", credential.Project,
"err", err,
)
Expand Down Expand Up @@ -90,9 +86,8 @@ func Server(cfg *config.Config, logger log.Logger) error {
}

gr.Add(func() error {
level.Info(logger).Log(
"msg", "Starting metrics server",
"addr", cfg.Server.Addr,
logger.Info("Starting metrics server",
"address", cfg.Server.Addr,
)

return web.ListenAndServe(
Expand All @@ -109,16 +104,14 @@ func Server(cfg *config.Config, logger log.Logger) error {
defer cancel()

if err := server.Shutdown(ctx); err != nil {
level.Error(logger).Log(
"msg", "Failed to shutdown metrics gracefully",
logger.Error("Failed to shutdown metrics gracefully",
"err", err,
)

return
}

level.Info(logger).Log(
"msg", "Metrics shutdown gracefully",
logger.Info("Metrics shutdown gracefully",
"reason", reason,
)
})
Expand All @@ -141,7 +134,7 @@ func Server(cfg *config.Config, logger log.Logger) error {
return gr.Run()
}

func handler(cfg *config.Config, logger log.Logger) *chi.Mux {
func handler(cfg *config.Config, logger *slog.Logger) *chi.Mux {
mux := chi.NewRouter()
mux.Use(middleware.Recoverer(logger))
mux.Use(middleware.RealIP)
Expand Down Expand Up @@ -181,8 +174,7 @@ func handler(cfg *config.Config, logger log.Logger) *chi.Mux {
content, err := os.ReadFile(cfg.Target.File)

if err != nil {
level.Info(logger).Log(
"msg", "Failed to read service discovery data",
logger.Error("Failed to read service discovery data",
"err", err,
)

Expand Down
11 changes: 5 additions & 6 deletions pkg/adapter/adapter.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,11 @@ import (
"context"
"encoding/json"
"fmt"
"log/slog"
"os"
"path/filepath"
"reflect"

"github.com/go-kit/log"
"github.com/go-kit/log/level"
"github.com/prometheus/prometheus/discovery"
"github.com/prometheus/prometheus/discovery/targetgroup"
)
Expand All @@ -43,7 +42,7 @@ type Adapter struct {
manager *discovery.Manager
output string
name string
logger log.Logger
logger *slog.Logger
}

func mapToArray(m map[string]*customSD) []customSD {
Expand Down Expand Up @@ -84,7 +83,7 @@ func (a *Adapter) generateTargetGroups(allTargetGroups map[string][]*targetgroup
a.groups = tempGroups
err := a.writeOutput()
if err != nil {
level.Error(log.With(a.logger, "component", "sd-adapter")).Log("err", err)
a.logger.With("component", "sd-adapter").Error("", "err", err)
}
}

Expand Down Expand Up @@ -138,12 +137,12 @@ func (a *Adapter) Run() {
}

// NewAdapter creates a new instance of Adapter.
func NewAdapter(ctx context.Context, file string, name string, d discovery.Discoverer, logger log.Logger) *Adapter {
func NewAdapter(ctx context.Context, file string, name string, d discovery.Discoverer, logger *slog.Logger) *Adapter {
return &Adapter{
ctx: ctx,
disc: d,
groups: make(map[string]*customSD),
manager: discovery.NewManager(ctx, logger),
manager: discovery.NewManager(ctx, nil),
output: file,
name: name,
logger: logger,
Expand Down
14 changes: 7 additions & 7 deletions pkg/command/health.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"fmt"
"net/http"

"github.com/go-kit/log/level"
"github.com/promhippie/prometheus-hetzner-sd/pkg/config"
"github.com/urfave/cli/v2"
)
Expand All @@ -20,8 +19,7 @@ func Health(cfg *config.Config) *cli.Command {

if c.IsSet("hetzner.config") {
if err := readConfig(c.String("hetzner.config"), cfg); err != nil {
level.Error(logger).Log(
"msg", "Failed to read config",
logger.Error("Failed to read config",
"err", err,
)

Expand All @@ -37,8 +35,7 @@ func Health(cfg *config.Config) *cli.Command {
)

if err != nil {
level.Error(logger).Log(
"msg", "Failed to request health check",
logger.Error("Failed to request health check",
"err", err,
)

Expand All @@ -48,15 +45,18 @@ func Health(cfg *config.Config) *cli.Command {
defer resp.Body.Close()

if resp.StatusCode != 200 {
level.Error(logger).Log(
"msg", "Health check seems to be in bad state",
logger.Error("Health check seems to be in bad state",
"err", err,
"code", resp.StatusCode,
)

return err
}

logger.Debug("Health check seems to be fine",
"code", resp.StatusCode,
)

return nil
},
}
Expand Down
24 changes: 5 additions & 19 deletions pkg/command/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package command
import (
"errors"

"github.com/go-kit/log/level"
"github.com/promhippie/prometheus-hetzner-sd/pkg/action"
"github.com/promhippie/prometheus-hetzner-sd/pkg/config"
"github.com/urfave/cli/v2"
Expand All @@ -20,8 +19,7 @@ func Server(cfg *config.Config) *cli.Command {

if c.IsSet("hetzner.config") {
if err := readConfig(c.String("hetzner.config"), cfg); err != nil {
level.Error(logger).Log(
"msg", "Failed to read config",
logger.Error("Failed to read config",
"err", err,
)

Expand All @@ -30,10 +28,7 @@ func Server(cfg *config.Config) *cli.Command {
}

if cfg.Target.File == "" {
level.Error(logger).Log(
"msg", "Missing path for output.file",
)

logger.Error("Missing path for output.file")
return errors.New("missing path for output.file")
}

Expand All @@ -50,27 +45,18 @@ func Server(cfg *config.Config) *cli.Command {
)

if credentials.Username == "" {
level.Error(logger).Log(
"msg", "Missing required hetzner.username",
)

logger.Error("Missing required hetzner.username")
return errors.New("missing required hetzner.username")
}

if credentials.Password == "" {
level.Error(logger).Log(
"msg", "Missing required hetzner.password",
)

logger.Error("Missing required hetzner.password")
return errors.New("missing required hetzner.password")
}
}

if len(cfg.Target.Credentials) == 0 {
level.Error(logger).Log(
"msg", "Missing any credentials",
)

logger.Error("Missing any credentials")
return errors.New("missing any credentials")
}

Expand Down
Loading

0 comments on commit ce5a3c5

Please sign in to comment.