Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/component/otelcol/exporter/otlp/otlp.go
4096 views
1
// Package otlp provides an otelcol.exporter.otlp component.
2
package otlp
3
4
import (
5
"time"
6
7
"github.com/grafana/agent/component"
8
"github.com/grafana/agent/component/otelcol"
9
"github.com/grafana/agent/component/otelcol/exporter"
10
"github.com/grafana/agent/pkg/river"
11
otelcomponent "go.opentelemetry.io/collector/component"
12
otelconfig "go.opentelemetry.io/collector/config"
13
otelpexporterhelper "go.opentelemetry.io/collector/exporter/exporterhelper"
14
"go.opentelemetry.io/collector/exporter/otlpexporter"
15
)
16
17
func init() {
18
component.Register(component.Registration{
19
Name: "otelcol.exporter.otlp",
20
Args: Arguments{},
21
Exports: otelcol.ConsumerExports{},
22
23
Build: func(opts component.Options, args component.Arguments) (component.Component, error) {
24
fact := otlpexporter.NewFactory()
25
return exporter.New(opts, fact, args.(Arguments))
26
},
27
})
28
}
29
30
// Arguments configures the otelcol.exporter.otlp component.
31
type Arguments struct {
32
Timeout time.Duration `river:"timeout,attr,optional"`
33
34
Queue otelcol.QueueArguments `river:"sending_queue,block,optional"`
35
Retry otelcol.RetryArguments `river:"retry_on_failure,block,optional"`
36
37
Client GRPCClientArguments `river:"client,block"`
38
}
39
40
var (
41
_ river.Unmarshaler = (*Arguments)(nil)
42
_ exporter.Arguments = Arguments{}
43
)
44
45
// DefaultArguments holds default values for Arguments.
46
var DefaultArguments = Arguments{
47
Timeout: otelcol.DefaultTimeout,
48
Queue: otelcol.DefaultQueueArguments,
49
Retry: otelcol.DefaultRetryArguments,
50
Client: DefaultGRPCClientArguments,
51
}
52
53
// UnmarshalRiver implements river.Unmarshaler.
54
func (args *Arguments) UnmarshalRiver(f func(interface{}) error) error {
55
*args = DefaultArguments
56
type arguments Arguments
57
return f((*arguments)(args))
58
}
59
60
// Convert implements exporter.Arguments.
61
func (args Arguments) Convert() (otelconfig.Exporter, error) {
62
return &otlpexporter.Config{
63
ExporterSettings: otelconfig.NewExporterSettings(otelconfig.NewComponentID("otlp")),
64
TimeoutSettings: otelpexporterhelper.TimeoutSettings{
65
Timeout: args.Timeout,
66
},
67
QueueSettings: *args.Queue.Convert(),
68
RetrySettings: *args.Retry.Convert(),
69
GRPCClientSettings: *(*otelcol.GRPCClientArguments)(&args.Client).Convert(),
70
}, nil
71
}
72
73
// Extensions implements exporter.Arguments.
74
func (args Arguments) Extensions() map[otelconfig.ComponentID]otelcomponent.Extension {
75
return (*otelcol.GRPCClientArguments)(&args.Client).Extensions()
76
}
77
78
// Exporters implements exporter.Arguments.
79
func (args Arguments) Exporters() map[otelconfig.DataType]map[otelconfig.ComponentID]otelcomponent.Exporter {
80
return nil
81
}
82
83
// GRPCClientArguments is used to configure otelcol.exporter.otlp with
84
// component-specific defaults.
85
type GRPCClientArguments otelcol.GRPCClientArguments
86
87
var _ river.Unmarshaler = (*GRPCClientArguments)(nil)
88
89
// DefaultGRPCClientArguments holds component-specific default settings for
90
// GRPCClientArguments.
91
var DefaultGRPCClientArguments = GRPCClientArguments{
92
Headers: map[string]string{},
93
Compression: otelcol.CompressionTypeGzip,
94
WriteBufferSize: 512 * 1024,
95
}
96
97
// UnmarshalRiver implements river.Unmarshaler and supplies defaults.
98
func (args *GRPCClientArguments) UnmarshalRiver(f func(interface{}) error) error {
99
*args = DefaultGRPCClientArguments
100
type arguments GRPCClientArguments
101
return f((*arguments)(args))
102
}
103
104