addProcessor registers the processor and adds it to the processors map. Must be called under a write lock.
(processorName string, cfg ProcessorConfig)
| 310 | // addProcessor registers the processor and adds it to the processors map. Must be called under a |
| 311 | // write lock. |
| 312 | func (i *instance) addProcessor(processorName string, cfg ProcessorConfig) error { |
| 313 | level.Debug(i.logger).Log("msg", "adding processor", "processorName", processorName) |
| 314 | |
| 315 | var newProcessor processor.Processor |
| 316 | var err error |
| 317 | switch processorName { |
| 318 | case processor.SpanMetricsName: |
| 319 | filteredSpansCounter := metricSpansDiscarded.WithLabelValues(i.instanceID, reasonSpanMetricsFiltered, processor.SpanMetricsName) |
| 320 | invalidUTF8Counter := metricSpansDiscarded.WithLabelValues(i.instanceID, reasonInvalidUTF8, processor.SpanMetricsName) |
| 321 | newProcessor, err = spanmetrics.New(cfg.SpanMetrics, i.registry, filteredSpansCounter, invalidUTF8Counter) |
| 322 | if err != nil { |
| 323 | return err |
| 324 | } |
| 325 | case processor.ServiceGraphsName: |
| 326 | filteredSpansCounter := metricSpansDiscarded.WithLabelValues(i.instanceID, reasonServiceGraphsFiltered, processor.ServiceGraphsName) |
| 327 | invalidUTF8Counter := metricSpansDiscarded.WithLabelValues(i.instanceID, reasonInvalidUTF8, processor.ServiceGraphsName) |
| 328 | newProcessor, err = servicegraphs.New(cfg.ServiceGraphs, i.instanceID, i.registry, i.logger, filteredSpansCounter, invalidUTF8Counter) |
| 329 | if err != nil { |
| 330 | return err |
| 331 | } |
| 332 | case processor.HostInfoName: |
| 333 | invalidUTF8Counter := metricSpansDiscarded.WithLabelValues(i.instanceID, reasonInvalidUTF8, processor.HostInfoName) |
| 334 | newProcessor, err = hostinfo.New(cfg.HostInfo, i.registry, i.logger, invalidUTF8Counter) |
| 335 | if err != nil { |
| 336 | return err |
| 337 | } |
| 338 | default: |
| 339 | level.Error(i.logger).Log( |
| 340 | "msg", fmt.Sprintf("processor does not exist, supported processors: [%s]", strings.Join(validation.SupportedProcessors, ", ")), |
| 341 | "processorName", processorName, |
| 342 | ) |
| 343 | return fmt.Errorf("unknown processor %s", processorName) |
| 344 | } |
| 345 | |
| 346 | // check the processor wasn't added in the meantime |
| 347 | if _, ok := i.processors[processorName]; ok { |
| 348 | return nil |
| 349 | } |
| 350 | |
| 351 | i.processors[processorName] = newProcessor |
| 352 | |
| 353 | return nil |
| 354 | } |
| 355 | |
| 356 | // removeProcessor removes the processor from the processors map and shuts it down. Must be called |
| 357 | // under a write lock. |