in translator/translate/otel/pipeline/jmx/translator.go [67:133]
func (t *translator) Translate(conf *confmap.Conf) (*common.ComponentTranslators, error) {
if conf == nil || !conf.IsSet(common.JmxConfigKey) {
return nil, &common.MissingKeyError{ID: t.ID(), JsonKey: common.JmxConfigKey}
}
if !hasMeasurements(conf, t.Index()) {
baseKey := common.JmxConfigKey
if t.Index() != -1 {
baseKey = fmt.Sprintf("%s[%d]", baseKey, t.Index())
}
return nil, &common.MissingKeyError{ID: t.ID(), JsonKey: common.ConfigKey(baseKey, placeholderTarget, common.MeasurementKey)}
}
translators := common.ComponentTranslators{
Receivers: common.NewTranslatorMap[component.Config, component.ID](),
Processors: common.NewTranslatorMap(
filterprocessor.NewTranslator(common.WithName(common.PipelineNameJmx), common.WithIndex(t.Index())),
),
Exporters: common.NewTranslatorMap[component.Config, component.ID](),
Extensions: common.NewTranslatorMap[component.Config, component.ID](),
}
if context.CurrentContext().RunInContainer() {
translators.Receivers.Set(otlp.NewTranslator(common.WithName(common.PipelineNameJmx)))
translators.Processors.Set(metricstransformprocessor.NewTranslatorWithName(common.JmxKey))
if hasAppendDimensions(conf, t.Index()) {
translators.Processors.Set(resourceprocessor.NewTranslator(common.WithName(common.PipelineNameJmx), common.WithIndex(t.Index())))
}
translators.Processors.Set(transformprocessor.NewTranslatorWithName(common.JmxKey + "/drop"))
} else {
translators.Receivers.Set(jmx.NewTranslator(jmx.WithIndex(t.Index())))
translators.Processors.Set(resourceprocessor.NewTranslator(common.WithName(common.PipelineNameJmx)))
}
mdt := metricsdecorator.NewTranslator(
metricsdecorator.WithName(common.PipelineNameJmx),
metricsdecorator.WithIndex(t.Index()),
metricsdecorator.WithConfigKey(common.JmxConfigKey),
)
if mdt.IsSet(conf) {
translators.Processors.Set(mdt)
}
if conf.IsSet(common.ConfigKey(common.MetricsKey, common.AppendDimensionsKey)) {
translators.Processors.Set(ec2taggerprocessor.NewTranslator())
}
switch t.Destination() {
case common.DefaultDestination, common.CloudWatchKey:
translators.Processors.Set(cumulativetodeltaprocessor.NewTranslator(common.WithName(common.PipelineNameJmx), cumulativetodeltaprocessor.WithConfigKeys(common.JmxConfigKey)))
translators.Exporters.Set(awscloudwatch.NewTranslator())
translators.Extensions.Set(agenthealth.NewTranslatorWithStatusCode(agenthealth.MetricsName, []string{agenthealth.OperationPutMetricData}, true))
case common.AMPKey:
translators.Processors.Set(batchprocessor.NewTranslatorWithNameAndSection(t.name, common.MetricsKey))
if conf.IsSet(common.MetricsAggregationDimensionsKey) {
translators.Processors.Set(rollupprocessor.NewTranslator())
}
// prometheusremotewrite doesn't support delta metrics so convert them to cumulative metrics
translators.Processors.Set(deltatocumulativeprocessor.NewTranslator(common.WithName(t.name)))
translators.Exporters.Set(prometheusremotewrite.NewTranslatorWithName(common.AMPKey))
translators.Extensions.Set(sigv4auth.NewTranslator())
default:
return nil, fmt.Errorf("pipeline (%s) does not support destination (%s) in configuration", t.name, t.Destination())
}
return &translators, nil
}