github.com/grafana/synthetic-monitoring-agent@v0.64.2/internal/pusher/pusher.go (about) 1 package pusher 2 3 import ( 4 "context" 5 6 "github.com/prometheus/client_golang/prometheus" 7 "github.com/prometheus/prometheus/prompb" 8 "github.com/rs/zerolog" 9 10 logproto "github.com/grafana/loki/pkg/push" 11 "github.com/grafana/synthetic-monitoring-agent/internal/model" 12 sm "github.com/grafana/synthetic-monitoring-agent/pkg/pb/synthetic_monitoring" 13 ) 14 15 type Payload interface { 16 Tenant() model.GlobalID 17 Metrics() []prompb.TimeSeries 18 Streams() []logproto.Stream 19 } 20 21 type Publisher interface { 22 Publish(Payload) 23 } 24 25 type TenantProvider interface { 26 GetTenant(context.Context, *sm.TenantInfo) (*sm.Tenant, error) 27 } 28 29 type Factory func(ctx context.Context, tm TenantProvider, logger zerolog.Logger, promRegisterer prometheus.Registerer) Publisher