Skip to content

Commit 54bd1ef

Browse files
committed
Add config to enable the host.ip enrichment
1 parent d2f5449 commit 54bd1ef

File tree

3 files changed

+37
-22
lines changed

3 files changed

+37
-22
lines changed

processor/elasticapmprocessor/config.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,9 @@ type Config struct {
2727
// the x-elastic-mapping-mode metadata is set to "ecs". Traces are always enriched regardless
2828
// of this setting. Defaults to false for backwards compatibility (always enrich).
2929
SkipEnrichment bool `mapstructure:"skip_enrichment"`
30+
31+
// HostIPEnabled controls whether the `host.ip` resource attribute should be set using client info address.
32+
// When true, the processor will set the `host.ip` attribute from the client address when
33+
// the mapping mode is "ecs". Defaults to true.
34+
HostIPEnabled bool `mapstructure:"host_ip_enabled"`
3035
}

processor/elasticapmprocessor/factory.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ func NewFactory() processor.Factory {
4343

4444
func createDefaultConfig() component.Config {
4545
return &Config{
46-
Config: config.Enabled(),
46+
Config: config.Enabled(),
47+
SkipEnrichment: false,
48+
HostIPEnabled: true,
4749
}
4850
}
4951

processor/elasticapmprocessor/processor.go

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,15 @@ type TraceProcessor struct {
4545
next consumer.Traces
4646
enricher *enrichments.Enricher
4747
logger *zap.Logger
48+
cfg *Config
4849
}
4950

5051
func NewTraceProcessor(cfg *Config, next consumer.Traces, logger *zap.Logger) *TraceProcessor {
5152
return &TraceProcessor{
5253
next: next,
5354
logger: logger,
5455
enricher: enrichments.NewEnricher(cfg.Config),
56+
cfg: cfg,
5557
}
5658
}
5759

@@ -66,7 +68,9 @@ func (p *TraceProcessor) ConsumeTraces(ctx context.Context, td ptrace.Traces) er
6668
resourceSpan := resourceSpans.At(i)
6769
resource := resourceSpan.Resource()
6870
ecs.TranslateResourceMetadata(resource)
69-
ecs.SetHostIP(ctx, resource.Attributes())
71+
if p.cfg.HostIPEnabled {
72+
ecs.SetHostIP(ctx, resource.Attributes())
73+
}
7074
routing.EncodeDataStream(resource, "traces")
7175
p.enricher.Config.Resource.DeploymentEnvironment.Enabled = false
7276
}
@@ -94,18 +98,18 @@ type LogProcessor struct {
9498
component.StartFunc
9599
component.ShutdownFunc
96100

97-
next consumer.Logs
98-
enricher *enrichments.Enricher
99-
logger *zap.Logger
100-
skipEnrichment bool
101+
next consumer.Logs
102+
enricher *enrichments.Enricher
103+
logger *zap.Logger
104+
cfg *Config
101105
}
102106

103107
func newLogProcessor(cfg *Config, next consumer.Logs, logger *zap.Logger) *LogProcessor {
104108
return &LogProcessor{
105-
next: next,
106-
logger: logger,
107-
enricher: enrichments.NewEnricher(cfg.Config),
108-
skipEnrichment: cfg.SkipEnrichment,
109+
next: next,
110+
logger: logger,
111+
enricher: enrichments.NewEnricher(cfg.Config),
112+
cfg: cfg,
109113
}
110114
}
111115

@@ -117,18 +121,18 @@ type MetricProcessor struct {
117121
component.StartFunc
118122
component.ShutdownFunc
119123

120-
next consumer.Metrics
121-
enricher *enrichments.Enricher
122-
logger *zap.Logger
123-
skipEnrichment bool
124+
next consumer.Metrics
125+
enricher *enrichments.Enricher
126+
logger *zap.Logger
127+
cfg *Config
124128
}
125129

126130
func newMetricProcessor(cfg *Config, next consumer.Metrics, logger *zap.Logger) *MetricProcessor {
127131
return &MetricProcessor{
128-
next: next,
129-
logger: logger,
130-
enricher: enrichments.NewEnricher(cfg.Config),
131-
skipEnrichment: cfg.SkipEnrichment,
132+
next: next,
133+
logger: logger,
134+
enricher: enrichments.NewEnricher(cfg.Config),
135+
cfg: cfg,
132136
}
133137
}
134138

@@ -144,14 +148,16 @@ func (p *MetricProcessor) ConsumeMetrics(ctx context.Context, md pmetric.Metrics
144148
resourceMetric := resourceMetrics.At(i)
145149
resource := resourceMetric.Resource()
146150
ecs.TranslateResourceMetadata(resource)
147-
ecs.SetHostIP(ctx, resource.Attributes())
151+
if p.cfg.HostIPEnabled {
152+
ecs.SetHostIP(ctx, resource.Attributes())
153+
}
148154
routing.EncodeDataStream(resource, "metrics")
149155
p.enricher.Config.Resource.DeploymentEnvironment.Enabled = false
150156
}
151157
}
152158
// When skipEnrichment is true, only enrich when mapping mode is ecs
153159
// When skipEnrichment is false (default), always enrich (backwards compatible)
154-
if !p.skipEnrichment || ecsMode {
160+
if !p.cfg.SkipEnrichment || ecsMode {
155161
p.enricher.EnrichMetrics(md)
156162
}
157163
return p.next.ConsumeMetrics(ctx, md)
@@ -165,15 +171,17 @@ func (p *LogProcessor) ConsumeLogs(ctx context.Context, ld plog.Logs) error {
165171
resourceLog := resourceLogs.At(i)
166172
resource := resourceLog.Resource()
167173
ecs.TranslateResourceMetadata(resource)
168-
ecs.SetHostIP(ctx, resource.Attributes())
174+
if p.cfg.HostIPEnabled {
175+
ecs.SetHostIP(ctx, resource.Attributes())
176+
}
169177
routing.EncodeDataStream(resource, "logs")
170178
p.enricher.Config.Resource.AgentVersion.Enabled = false
171179
p.enricher.Config.Resource.DeploymentEnvironment.Enabled = false
172180
}
173181
}
174182
// When skipEnrichment is true, only enrich when mapping mode is ecs
175183
// When skipEnrichment is false (default), always enrich (backwards compatible)
176-
if !p.skipEnrichment || ecsMode {
184+
if !p.cfg.SkipEnrichment || ecsMode {
177185
p.enricher.EnrichLogs(ld)
178186
}
179187
return p.next.ConsumeLogs(ctx, ld)

0 commit comments

Comments
 (0)