processor/spanprocessor/config.go (28 lines of code) (raw):

// Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 package spanprocessor // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor" import ( "go.opentelemetry.io/collector/component" "github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter/filterconfig" ) // Config is the configuration for the span processor. // Prior to any actions being applied, each span is compared against // the include properties and then the exclude properties if they are specified. // This determines if a span is to be processed or not. type Config struct { filterconfig.MatchConfig `mapstructure:",squash"` // Rename specifies the components required to re-name a span. // The `from_attributes` field needs to be set for this processor to be properly // configured. // Note: The field name is `Rename` to avoid collision with the Name() method // from config.NamedEntity Rename Name `mapstructure:"name"` // SetStatus specifies status which should be set for this span. SetStatus *Status `mapstructure:"status"` } // Name specifies the attributes to use to re-name a span. type Name struct { // Specifies transformations of span name to and from attributes. // First FromAttributes rules are applied, then ToAttributes are applied. // At least one of these 2 fields must be set. // FromAttributes represents the attribute keys to pull the values from to // generate the new span name. All attribute keys are required in the span // to re-name a span. If any attribute is missing from the span, no re-name // will occur. // Note: The new span name is constructed in order of the `from_attributes` // specified in the configuration. This field is required and cannot be empty. FromAttributes []string `mapstructure:"from_attributes"` // Separator is the string used to separate attributes values in the new // span name. If no value is set, no separator is used between attribute // values. Used with FromAttributes only. Separator string `mapstructure:"separator"` // ToAttributes specifies a configuration to extract attributes from span name. ToAttributes *ToAttributes `mapstructure:"to_attributes"` } // ToAttributes specifies a configuration to extract attributes from span name. type ToAttributes struct { // Rules is a list of rules to extract attribute values from span name. The values // in the span name are replaced by extracted attribute names. Each rule in the list // is a regex pattern string. Span name is checked against the regex. If it matches // then all named subexpressions of the regex are extracted as attributes // and are added to the span. Each subexpression name becomes an attribute name and // subexpression matched portion becomes the attribute value. The matched portion // in the span name is replaced by extracted attribute name. If the attributes // already exist in the span then they will be overwritten. The process is repeated // for all rules in the order they are specified. Each subsequent rule works on the // span name that is the output after processing the previous rule. Rules []string `mapstructure:"rules"` // BreakAfterMatch specifies if processing of rules should stop after the first // match. If it is false rule processing will continue to be performed over the // modified span name. BreakAfterMatch bool `mapstructure:"break_after_match"` // KeepOriginalName specifies if the original span name should be kept after // processing the rules. If it is true the original span name will be kept, // otherwise it will be replaced with the placeholders of the captured attributes. KeepOriginalName bool `mapstructure:"keep_original_name"` } type Status struct { // Code is one of three values "Ok" or "Error" or "Unset". Please check: // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md#set-status Code string `mapstructure:"code"` // Description is an optional field documenting Error statuses. Description string `mapstructure:"description"` } var _ component.Config = (*Config)(nil) // Validate checks if the processor configuration is valid func (cfg *Config) Validate() error { return nil }