/
converter_memorylimiterprocessor.go
65 lines (52 loc) · 2.15 KB
/
converter_memorylimiterprocessor.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package otelcolconvert
import (
"fmt"
"github.com/alecthomas/units"
"github.com/grafana/alloy/internal/component/otelcol"
"github.com/grafana/alloy/internal/component/otelcol/processor/memorylimiter"
"github.com/grafana/alloy/internal/converter/diag"
"github.com/grafana/alloy/internal/converter/internal/common"
"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/processor/memorylimiterprocessor"
)
func init() {
converters = append(converters, memoryLimiterProcessorConverter{})
}
type memoryLimiterProcessorConverter struct{}
func (memoryLimiterProcessorConverter) Factory() component.Factory {
return memorylimiterprocessor.NewFactory()
}
func (memoryLimiterProcessorConverter) InputComponentName() string {
return "otelcol.processor.memory_limiter"
}
func (memoryLimiterProcessorConverter) ConvertAndAppend(state *State, id component.InstanceID, cfg component.Config) diag.Diagnostics {
var diags diag.Diagnostics
label := state.AlloyComponentLabel()
args := toMemoryLimiterProcessor(state, id, cfg.(*memorylimiterprocessor.Config))
block := common.NewBlockWithOverride([]string{"otelcol", "processor", "memory_limiter"}, label, args)
diags.Add(
diag.SeverityLevelInfo,
fmt.Sprintf("Converted %s into %s", StringifyInstanceID(id), StringifyBlock(block)),
)
state.Body().AppendBlock(block)
return diags
}
func toMemoryLimiterProcessor(state *State, id component.InstanceID, cfg *memorylimiterprocessor.Config) *memorylimiter.Arguments {
var (
nextMetrics = state.Next(id, component.DataTypeMetrics)
nextLogs = state.Next(id, component.DataTypeLogs)
nextTraces = state.Next(id, component.DataTypeTraces)
)
return &memorylimiter.Arguments{
CheckInterval: cfg.CheckInterval,
MemoryLimit: units.Base2Bytes(cfg.MemoryLimitMiB) * units.MiB,
MemorySpikeLimit: units.Base2Bytes(cfg.MemorySpikeLimitMiB) * units.MiB,
MemoryLimitPercentage: cfg.MemoryLimitPercentage,
MemorySpikePercentage: cfg.MemorySpikePercentage,
Output: &otelcol.ConsumerArguments{
Metrics: ToTokenizedConsumers(nextMetrics),
Logs: ToTokenizedConsumers(nextLogs),
Traces: ToTokenizedConsumers(nextTraces),
},
}
}