Skip to content

Commit

Permalink
wip: make probers receive a model.Check instead of prober.Check
Browse files Browse the repository at this point in the history
This makes region information available to probes
  • Loading branch information
roobre committed Oct 11, 2024
1 parent dfae6c5 commit 98025a5
Show file tree
Hide file tree
Showing 11 changed files with 38 additions and 31 deletions.
4 changes: 2 additions & 2 deletions internal/k6runner/k6runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import (
"strings"

"github.com/go-logfmt/logfmt"
smmmodel "github.com/grafana/synthetic-monitoring-agent/internal/model"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/logger"
sm "github.com/grafana/synthetic-monitoring-agent/pkg/pb/synthetic_monitoring"
"github.com/prometheus/client_golang/prometheus"
dto "github.com/prometheus/client_model/go"
"github.com/prometheus/common/expfmt"
Expand Down Expand Up @@ -52,7 +52,7 @@ type CheckInfo struct {
}

// CheckInfoFromSM returns a CheckInfo from the information of the given SM check.
func CheckInfoFromSM(smc sm.Check) CheckInfo {
func CheckInfoFromSM(smc smmmodel.Check) CheckInfo {
ci := CheckInfo{
Metadata: map[string]any{},
}
Expand Down
3 changes: 2 additions & 1 deletion internal/prober/browser/browser.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"errors"

"github.com/grafana/synthetic-monitoring-agent/internal/k6runner"
"github.com/grafana/synthetic-monitoring-agent/internal/model"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/logger"
sm "github.com/grafana/synthetic-monitoring-agent/pkg/pb/synthetic_monitoring"
"github.com/prometheus/client_golang/prometheus"
Expand All @@ -26,7 +27,7 @@ type Prober struct {
processor *k6runner.Processor
}

func NewProber(ctx context.Context, check sm.Check, logger zerolog.Logger, runner k6runner.Runner) (Prober, error) {
func NewProber(ctx context.Context, check model.Check, logger zerolog.Logger, runner k6runner.Runner) (Prober, error) {
var p Prober

if check.Settings.Browser == nil {
Expand Down
5 changes: 3 additions & 2 deletions internal/prober/dns/dns.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"strings"
"time"

"github.com/grafana/synthetic-monitoring-agent/internal/model"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/dns/internal/bbe/config"
bbeprober "github.com/grafana/synthetic-monitoring-agent/internal/prober/dns/internal/bbe/prober"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/logger"
Expand All @@ -21,7 +22,7 @@ type Prober struct {
experimental bool
}

func NewProber(check sm.Check) (Prober, error) {
func NewProber(check model.Check) (Prober, error) {
if check.Settings.Dns == nil {
return Prober{}, errUnsupportedCheck
}
Expand All @@ -35,7 +36,7 @@ func NewProber(check sm.Check) (Prober, error) {
}, nil
}

func NewExperimentalProber(check sm.Check) (Prober, error) {
func NewExperimentalProber(check model.Check) (Prober, error) {
p, err := NewProber(check)
if err != nil {
return p, err
Expand Down
3 changes: 2 additions & 1 deletion internal/prober/grpc/grpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"errors"
"time"

"github.com/grafana/synthetic-monitoring-agent/internal/model"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/logger"
"github.com/grafana/synthetic-monitoring-agent/internal/tls"
sm "github.com/grafana/synthetic-monitoring-agent/pkg/pb/synthetic_monitoring"
Expand All @@ -20,7 +21,7 @@ type Prober struct {
config config.Module
}

func NewProber(ctx context.Context, check sm.Check, logger zerolog.Logger) (Prober, error) {
func NewProber(ctx context.Context, check model.Check, logger zerolog.Logger) (Prober, error) {
if check.Settings.Grpc == nil {
return Prober{}, errUnsupportedCheck
}
Expand Down
5 changes: 3 additions & 2 deletions internal/prober/http/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"strings"
"time"

"github.com/grafana/synthetic-monitoring-agent/internal/model"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/logger"
"github.com/grafana/synthetic-monitoring-agent/internal/tls"
"github.com/grafana/synthetic-monitoring-agent/internal/version"
Expand All @@ -29,13 +30,13 @@ type Prober struct {
cacheBustingQueryParamName string
}

func NewProber(ctx context.Context, check sm.Check, logger zerolog.Logger, reservedHeaders http.Header) (Prober, error) {
func NewProber(ctx context.Context, check model.Check, logger zerolog.Logger, reservedHeaders http.Header) (Prober, error) {
if check.Settings.Http == nil {
return Prober{}, errUnsupportedCheck
}

if len(reservedHeaders) > 0 {
augmentHttpHeaders(&check, reservedHeaders)
augmentHttpHeaders(&check.Check, reservedHeaders)
}

cfg, err := settingsToModule(ctx, check.Settings.Http, logger)
Expand Down
3 changes: 2 additions & 1 deletion internal/prober/icmp/icmp.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"time"

"github.com/go-kit/log"
"github.com/grafana/synthetic-monitoring-agent/internal/model"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/logger"
sm "github.com/grafana/synthetic-monitoring-agent/pkg/pb/synthetic_monitoring"
"github.com/prometheus/blackbox_exporter/config"
Expand All @@ -29,7 +30,7 @@ type Prober struct {
config Module
}

func NewProber(check sm.Check) (Prober, error) {
func NewProber(check model.Check) (Prober, error) {
var p Prober

if check.Settings.Ping == nil {
Expand Down
5 changes: 3 additions & 2 deletions internal/prober/multihttp/multihttp.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"strings"

"github.com/grafana/synthetic-monitoring-agent/internal/k6runner"
"github.com/grafana/synthetic-monitoring-agent/internal/model"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/logger"
sm "github.com/grafana/synthetic-monitoring-agent/pkg/pb/synthetic_monitoring"
"github.com/prometheus/client_golang/prometheus"
Expand All @@ -28,7 +29,7 @@ type Prober struct {
processor *k6runner.Processor
}

func NewProber(ctx context.Context, check sm.Check, logger zerolog.Logger, runner k6runner.Runner, reservedHeaders http.Header) (Prober, error) {
func NewProber(ctx context.Context, check model.Check, logger zerolog.Logger, runner k6runner.Runner, reservedHeaders http.Header) (Prober, error) {
var p Prober

if check.Settings.Multihttp == nil {
Expand All @@ -40,7 +41,7 @@ func NewProber(ctx context.Context, check sm.Check, logger zerolog.Logger, runne
}

if len(reservedHeaders) > 0 {
augmentHttpHeaders(&check, reservedHeaders)
augmentHttpHeaders(&check.Check, reservedHeaders)
}

script, err := settingsToScript(check.Settings.Multihttp)
Expand Down
20 changes: 10 additions & 10 deletions internal/prober/prober.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,33 +62,33 @@ func (f proberFactory) New(ctx context.Context, logger zerolog.Logger, check mod

switch checkType := check.Type(); checkType {
case sm.CheckTypePing:
p, err = icmp.NewProber(check.Check)
p, err = icmp.NewProber(check)
target = check.Target

case sm.CheckTypeHttp:
reservedHeaders := f.getReservedHeaders(&check)
p, err = httpProber.NewProber(ctx, check.Check, logger, reservedHeaders)
p, err = httpProber.NewProber(ctx, check, logger, reservedHeaders)
target = check.Target

case sm.CheckTypeDns:
if f.features.IsSet(feature.ExperimentalDnsProber) {
p, err = dns.NewExperimentalProber(check.Check)
p, err = dns.NewExperimentalProber(check)
} else {
p, err = dns.NewProber(check.Check)
p, err = dns.NewProber(check)
}
target = check.Settings.Dns.Server

case sm.CheckTypeTcp:
p, err = tcp.NewProber(ctx, check.Check, logger)
p, err = tcp.NewProber(ctx, check, logger)
target = check.Target

case sm.CheckTypeTraceroute:
p, err = traceroute.NewProber(check.Check, logger)
p, err = traceroute.NewProber(check, logger)
target = check.Target

case sm.CheckTypeScripted:
if f.runner != nil {
p, err = scripted.NewProber(ctx, check.Check, logger, f.runner)
p, err = scripted.NewProber(ctx, check, logger, f.runner)
target = check.Target
} else {
err = fmt.Errorf("k6 checks are not enabled")
Expand All @@ -99,7 +99,7 @@ func (f proberFactory) New(ctx context.Context, logger zerolog.Logger, check mod
// we know that the runner is actually able to handle browser
// checks.
if f.runner != nil {
p, err = browser.NewProber(ctx, check.Check, logger, f.runner)
p, err = browser.NewProber(ctx, check, logger, f.runner)
target = check.Target
} else {
err = fmt.Errorf("k6 checks are not enabled")
Expand All @@ -108,14 +108,14 @@ func (f proberFactory) New(ctx context.Context, logger zerolog.Logger, check mod
case sm.CheckTypeMultiHttp:
if f.runner != nil {
reservedHeaders := f.getReservedHeaders(&check)
p, err = multihttp.NewProber(ctx, check.Check, logger, f.runner, reservedHeaders)
p, err = multihttp.NewProber(ctx, check, logger, f.runner, reservedHeaders)
target = check.Target
} else {
err = fmt.Errorf("k6 checks are not enabled")
}

case sm.CheckTypeGrpc:
p, err = grpc.NewProber(ctx, check.Check, logger)
p, err = grpc.NewProber(ctx, check, logger)
target = check.Target

default:
Expand Down
3 changes: 2 additions & 1 deletion internal/prober/scripted/scripted.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"errors"

"github.com/grafana/synthetic-monitoring-agent/internal/k6runner"
"github.com/grafana/synthetic-monitoring-agent/internal/model"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/logger"
sm "github.com/grafana/synthetic-monitoring-agent/pkg/pb/synthetic_monitoring"
"github.com/prometheus/client_golang/prometheus"
Expand All @@ -26,7 +27,7 @@ type Prober struct {
processor *k6runner.Processor
}

func NewProber(ctx context.Context, check sm.Check, logger zerolog.Logger, runner k6runner.Runner) (Prober, error) {
func NewProber(ctx context.Context, check model.Check, logger zerolog.Logger, runner k6runner.Runner) (Prober, error) {
var p Prober

if check.Settings.Scripted == nil {
Expand Down
3 changes: 2 additions & 1 deletion internal/prober/tcp/tcp.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"errors"
"time"

"github.com/grafana/synthetic-monitoring-agent/internal/model"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/logger"
"github.com/grafana/synthetic-monitoring-agent/internal/tls"
sm "github.com/grafana/synthetic-monitoring-agent/pkg/pb/synthetic_monitoring"
Expand All @@ -20,7 +21,7 @@ type Prober struct {
config config.Module
}

func NewProber(ctx context.Context, check sm.Check, logger zerolog.Logger) (Prober, error) {
func NewProber(ctx context.Context, check model.Check, logger zerolog.Logger) (Prober, error) {
if check.Settings.Tcp == nil {
return Prober{}, errUnsupportedCheck
}
Expand Down
15 changes: 7 additions & 8 deletions internal/prober/traceroute/traceroute.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"time"

"github.com/google/uuid"
"github.com/grafana/synthetic-monitoring-agent/internal/model"
"github.com/grafana/synthetic-monitoring-agent/internal/prober/logger"
sm "github.com/grafana/synthetic-monitoring-agent/pkg/pb/synthetic_monitoring"
"github.com/prometheus/client_golang/prometheus"
Expand Down Expand Up @@ -36,7 +37,7 @@ type Prober struct {
logger zerolog.Logger
}

func NewProber(check sm.Check, logger zerolog.Logger) (Prober, error) {
func NewProber(check model.Check, logger zerolog.Logger) (Prober, error) {
if check.Settings.Traceroute == nil {
return Prober{}, errUnsupportedCheck
}
Expand Down Expand Up @@ -65,7 +66,6 @@ func (p Prober) Probe(ctx context.Context, target string, registry *prometheus.R
p.config.ringBufferSize,
p.config.ptrLookup,
)

if err != nil {
logErr := logger.Log(err)
if logErr != nil {
Expand All @@ -83,9 +83,8 @@ func (p Prober) Probe(ctx context.Context, target string, registry *prometheus.R
}
}
}(ch)
var success = true
success := true
err = m.RunWithContext(ctx, p.config.count)

if err != nil {
err = logger.Log("Level", "error", "msg", err.Error())
if err != nil {
Expand All @@ -96,7 +95,7 @@ func (p Prober) Probe(ctx context.Context, target string, registry *prometheus.R
tracerouteID := uuid.New()
totalPacketsLost := float64(0)
totalPacketsSent := float64(0)
var hosts = make(map[int]string)
hosts := make(map[int]string)
for ttl, hop := range m.Statistic {
totalPacketsLost += float64(hop.Lost)
totalPacketsSent += float64(hop.Sent)
Expand Down Expand Up @@ -133,17 +132,17 @@ func (p Prober) Probe(ctx context.Context, target string, registry *prometheus.R
return false, 0
}

var traceHashGauge = prometheus.NewGauge(prometheus.GaugeOpts{
traceHashGauge := prometheus.NewGauge(prometheus.GaugeOpts{
Name: "probe_traceroute_route_hash",
Help: "Hash of all the hosts in a traceroute path. Used to determine route volatility.",
})

var totalHopsGauge = prometheus.NewGauge(prometheus.GaugeOpts{
totalHopsGauge := prometheus.NewGauge(prometheus.GaugeOpts{
Name: "probe_traceroute_total_hops",
Help: "Total hops to reach a traceroute destination",
})

var overallPacketLossGauge = prometheus.NewGauge(prometheus.GaugeOpts{
overallPacketLossGauge := prometheus.NewGauge(prometheus.GaugeOpts{
Name: "probe_traceroute_packet_loss_percent",
Help: "Overall percentage of packet loss during the traceroute",
})
Expand Down

0 comments on commit 98025a5

Please sign in to comment.