in translator/translate/otel/translate_otel.go [48:118]
func Translate(jsonConfig interface{}, os string) (*otelcol.Config, error) {
m, ok := jsonConfig.(map[string]interface{})
if !ok {
return nil, errors.New("invalid json config")
}
conf := confmap.NewFromStringMap(m)
if conf.IsSet("csm") {
log.Printf("W! CSM has already been deprecated")
}
translators := common.NewTranslatorMap[*common.ComponentTranslators, pipeline.ID]()
metricsHostTranslators, err := host.NewTranslators(conf, host.MetricsKey, os)
if err != nil {
return nil, err
}
translators.Merge(metricsHostTranslators)
logsHostTranslators, err := host.NewTranslators(conf, host.LogsKey, os)
if err != nil {
return nil, err
}
translators.Merge(logsHostTranslators)
containerInsightsTranslators := containerinsights.NewTranslators(conf)
translators.Merge(containerInsightsTranslators)
translators.Set(applicationsignals.NewTranslator(pipeline.SignalTraces))
translators.Set(applicationsignals.NewTranslator(pipeline.SignalMetrics))
translators.Merge(prometheus.NewTranslators(conf))
translators.Set(emf_logs.NewTranslator())
translators.Set(xray.NewTranslator())
translators.Set(containerinsightsjmx.NewTranslator())
translators.Merge(jmx.NewTranslators(conf))
translators.Merge(registry)
pipelines, err := pipelinetranslator.NewTranslator(translators).Translate(conf)
if err != nil {
translators.Set(nop.NewTranslator())
pipelines, err = pipelinetranslator.NewTranslator(translators).Translate(conf)
if err != nil {
return nil, err
}
}
// ECS is not in scope for entity association, so we only add the entity store in non ECS platforms
if !ecsutil.GetECSUtilSingleton().IsECS() {
pipelines.Translators.Extensions.Set(entitystore.NewTranslator())
}
if context.CurrentContext().KubernetesMode() != "" {
pipelines.Translators.Extensions.Set(server.NewTranslator())
}
cfg := &otelcol.Config{
Receivers: map[component.ID]component.Config{},
Exporters: map[component.ID]component.Config{},
Processors: map[component.ID]component.Config{},
Extensions: map[component.ID]component.Config{},
Service: service.Config{
Telemetry: telemetry.Config{
Logs: getLoggingConfig(conf),
Metrics: telemetry.MetricsConfig{Level: configtelemetry.LevelNone},
Traces: telemetry.TracesConfig{Level: configtelemetry.LevelNone},
},
Pipelines: pipelines.Pipelines,
Extensions: pipelines.Translators.Extensions.Keys(),
},
}
if err = build(conf, cfg, pipelines.Translators); err != nil {
return nil, fmt.Errorf("unable to build components in pipeline: %w", err)
}
if err = cfg.Validate(); err != nil {
return nil, fmt.Errorf("invalid otel config: %w", err)
}
return cfg, nil
}