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