The MatchSpan interface is used by the attributes/span processor,
however this change does not change the yaml configuration or behavior,
just implementation.
FilterSet has the same filtering logic as MatchSpan previously had, but operates more
generically on just strings instead of spans and adds some additional
options, such as caching.
**Link to tracking Issue:** Side effect of #560 to help keep metrics and trace processors using matching configs the same.
**Testing:** unit tests updated, no new behavior, just implementation swapout
We previously used string in the codebase to represent component type
(as it is known to factories and referred to in the config).
Now we have configmodels.Type alias that provides stronger compile-time
type checks.
This is a breaking change for components but fixing the components is easy.
Resolves: https://github.com/open-telemetry/opentelemetry-collector/issues/762
* Add maps iterators similar with MapIter in reflect
Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
* Try to use iterate with callback.
Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
As we are preparing for Beta release we want to cleanup publicly exported
types and interfaces and do all necessary refactoring and breaking changes
now, before the Beta release. We will have a lot less leeway for breaking
changes after the Beta release.
Component related type declarations are now all in the `component` package.
This makes it possible for the interfaces to reference each other. This
was were very restricted earlier because component interfaces were in 5
different packages and many proposals were impossible to implement because
they would result in circular dependencies between packages.
(An example upcoming new capability that is enabled by this refactoring
is for components to query the Host for other components and for factories).
List of changes in this commit:
- Move all factory interfaces and component interfaces to component package.
- Rename old factories and components interfaces to use "Old" suffix for clarity.
- Eliminate forced checks that components implement factories. This is already
enforced by the compiler when the factory is added to the Defaults() and
was unnecessary code.
- Eliminated some unnecessary codes (removed overall over 200 lines).
- Run `go mod tidy` on testbed.
Warning: this is a breaking change to publicly exported types and function
signatures. We announced that a breaking change is comming. Once we agree
to merge this commit we will need to announce the exact list of changes
and guide component authors to modify their components accordingly.
Future changes:
- Once all components are migrated to the new internal representation,
delete all "Old"-suffixed definitions. This will likely be done while
we are still in Beta phase, before the Stable release.
* Refactor include/exclude processor logic and add it to span processor.
* Add files containing common logic.
* Move matching and attribute functions to internal
This adds "to_attributes" functionality that complements already
existing "from_attributes" functionality. This is very useful for
extracting attributes from span names and reducing cardinality of
span names.
For usage and examples see rocessor/spanprocessor/config.go and
processor/spanprocessor/testdata/config.yaml.
Testing: unit tests added.
Documentation: see readme.md, config.go and config.yaml
This change fixes inconsistencies in component interfaces. Motivation:
- Uniformness results in reduction of code that currently has to
deal with differences.
- Processor.Start is missing and is important for allowing processors
to communicate with the Host.
What's changed:
- Introduced Component interface.
- Unified Host interface.
- Added a Start function to processors (via Component interface).
- Start/Shutdown is now called for Processors from service start/shutdown.
- Receivers, Exporters, Processors, Extensions now embed Component interface.
- Replaced StartTraceReception/StartMetricsReception by single Start function for receivers.
- Replaced StopTraceReception/StopMetricsReception by single Shutdown function for receivers.
Note: before merging this we need to announce the change in Gitter since it
breaks existing implementations in contrib (although the fix is easy).
Resolves#477Resolves#262
* Validate configuration object tags
Adds a validation via reflection that checks if the 'mapstructure' tags are following the desired naming conventions desired for the config file. This becomes a runtime validation so even if not properly tested by some component the inconsistency is captured.
* Fix typo in comment
* Delete leftover commented code
* Add comments to CreateDefaultConfig and respective tests w/ ValidateConfig
* Refactor config: pipelines now under service
This change moves 'pipelines' sections from the top level to under the 'service' section.
* Fix typo in old comment
This is part 1 of the task to introduce capabilities and declare
processor's intent to mutate or not mutate consumed data for the
purpose of optimizing pipeline data ownership.
If a processor declares that they mutate data the pipeline
that the processor is in will use cloning fan out connector.
This is done only if the pipeline shares a receiver with another
pipeline.
This ensures that it is safe for processor modify the data (because
pipelines work concurrently) and avoids cloning for pipelines that
consume data from the same receiver but do not modify it.
For more details see:
https://github.com/open-telemetry/opentelemetry-collector/issues/372
* Add extensions and service to configuration
Adds the extensions and service to the configuration model so "extension components" can be configured in the standard way of data pipelines.
* Rename extension.Component to extension.ServiceExtension
Span Rename Processor exposes functionality to rename a span using attribute values from a span.
This commit only adds:
- the configuration
- tests for the configuration
- config documentation in the code and test yaml.
- Updated processor/readme.md to list all processors.
A follow up PR will add processor functionality and documentation to processor/readme.md