Path: blob/main/component/otelcol/exporter/loki/loki.go
4096 views
// Package loki provides an otelcol.exporter.loki component.1package loki23import (4"context"56"github.com/go-kit/log"7"github.com/grafana/agent/component"8"github.com/grafana/agent/component/common/loki"9"github.com/grafana/agent/component/otelcol"10"github.com/grafana/agent/component/otelcol/exporter/loki/internal/convert"11"github.com/grafana/agent/component/otelcol/internal/lazyconsumer"12)1314func init() {15component.Register(component.Registration{16Name: "otelcol.exporter.loki",17Args: Arguments{},18Exports: otelcol.ConsumerExports{},1920Build: func(o component.Options, a component.Arguments) (component.Component, error) {21return New(o, a.(Arguments))22},23})24}2526// Arguments configures the otelcol.exporter.loki component.27type Arguments struct {28ForwardTo []loki.LogsReceiver `river:"forward_to,attr"`29}3031// Component is the otelcol.exporter.loki component.32type Component struct {33log log.Logger34opts component.Options3536converter *convert.Converter37}3839var _ component.Component = (*Component)(nil)4041// New creates a new otelcol.exporter.loki component.42func New(o component.Options, c Arguments) (*Component, error) {43converter := convert.New(o.Logger, o.Registerer, c.ForwardTo)4445res := &Component{46log: o.Logger,47opts: o,4849converter: converter,50}51if err := res.Update(c); err != nil {52return nil, err53}5455// Construct a consumer based on our converter and export it. This will56// remain the same throughout the component's lifetime, so we do this57// during component construction.58export := lazyconsumer.New(context.Background())59export.SetConsumers(nil, nil, converter)60o.OnStateChange(otelcol.ConsumerExports{Input: export})6162return res, nil63}6465// Run implements Component.66func (c *Component) Run(ctx context.Context) error {67<-ctx.Done()68return nil69}7071// Update implements Component.72func (c *Component) Update(newConfig component.Arguments) error {73cfg := newConfig.(Arguments)74c.converter.UpdateFanout(cfg.ForwardTo)75return nil76}777879