sumologicexporter

package module
v0.100.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 6, 2024 License: Apache-2.0 Imports: 32 Imported by: 4

README

Sumo Logic Exporter

Status
Stability beta: metrics, logs
Distributions contrib
Issues Open issues Closed issues
Code Owners @aboguszewski-sumo, @kkujawa-sumo, @mat-rumian, @rnishtala-sumo, @sumo-drosiek, @swiatekm-sumo

Migration to new architecture

This exporter is undergoing major changes right now.

For some time we have been developing the new Sumo Logic exporter and now we are in the process of moving it into this repository.

The following options are deprecated and they will not exist in the new version:

  • metric_format: {carbon2, graphite}
  • metadata_attributes: [<regex>]
  • graphite_template: <template>
  • source_category: <template>
  • source_name: <template>
  • source_host: <template>

After the new exporter will be moved to this repository:

  • carbon2 and graphite are going to be no longer supported and prometheus or otlp format should be used

  • all resource level attributes are going to be treated as metadata_attributes. You can use Group by Attributes processor to move attributes from record level to resource level. For example:

    # before switch to new collector
    exporters:
      sumologic:
        metadata_attribute:
          - my_attribute
    # after switch to new collector
    processors:
      groupbyattrs:
        keys:
          - my_attribute
    
  • Source templates (source_category, source_name and source_host) are going to be removed from the exporter and sources may be set using _sourceCategory, sourceName or _sourceHost resource attributes. We recommend to use Transform Processor. For example:

    # before switch to new collector
    exporters:
      sumologic:
        source_category: "%{foo}/constant/%{bar}"
    # after switch to new collector
    processors:
      transformprocessor:
        log_statements:
          context: log
          statements:
            # set default value to unknown
            - set(attributes["foo"], "unknown") where attributes["foo"] == nil
            - set(attributes["bar"], "unknown") where attributes["foo"] == nil
            # set _sourceCategory as "%{foo}/constant/%{bar}"
            - set(resource.attributes["_sourceCategory"], Concat([attributes["foo"], "/constant/", attributes["bar"]], ""))
    

Configuration

This exporter supports sending logs and metrics data to Sumo Logic. Traces are exported using native otlphttp exporter as described here

Configuration is specified via the yaml in the following structure:

exporters:
  # ...
  sumologic:
    # unique URL generated for your HTTP Source, this is the address to send data to
    endpoint: <HTTP_Source_URL>
    # Compression encoding format, empty string means no compression, default = gzip
    compress_encoding: {gzip, deflate, ""}
    # max HTTP request body size in bytes before compression (if applied),
    # default = 1_048_576 (1MB)
    max_request_body_size: <max_request_body_size>

    # List of regexes for attributes which should be send as metadata
    # default = []
    #
    # This option is deprecated:
    # https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/sumologicexporter#migration-to-new-architecture
    metadata_attributes: [<regex>]

    # format to use when sending logs to Sumo Logic, default = json,
    log_format: {json, text}

    # format to use when sending metrics to Sumo Logic, default = prometheus,
    #
    # carbon2 and graphite are deprecated:
    # https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/sumologicexporter#migration-to-new-architecture
    metric_format: {carbon2, graphite, prometheus}

    # Template for Graphite format.
    # this option affects graphite format only
    # By default this is "%{_metric_}".
    #
    # Please regfer to Source temmplates for formatting explanation:
    # https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/sumologicexporter#source-templates
    #
    # This option is deprecated:
    # https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/sumologicexporter#migration-to-new-architecture
    graphite_template: <template>

    # Desired source category. Useful if you want to override the source category configured for the source.
    #
    # Please regfer to Source temmplates for formatting explanation:
    # https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/sumologicexporter#source-templates
    #
    # This option is deprecated:
    # https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/sumologicexporter#migration-to-new-architecture
    source_category: <template>

    # Desired source name. Useful if you want to override the source name configured for the source.
    #
    # Please regfer to Source temmplates for formatting explanation:
    # https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/sumologicexporter#source-templates
    #
    # This option is deprecated:
    # https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/sumologicexporter#migration-to-new-architecture
    source_name: <template>

    # Desired source host. Useful if you want to override the source hosy configured for the source.
    #
    # Please regfer to Source temmplates for formatting explanation:
    # https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/sumologicexporter#source-templates
    #
    # This option is deprecated:
    # https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/sumologicexporter#migration-to-new-architecture
    source_host: <template>

    # timeout is the timeout for every attempt to send data to the backend,
    # maximum connection timeout is 55s, default = 5s
    timeout: <timeout>

    # for below described queueing and retry related configuration please refer to:
    # https://github.com/open-telemetry/opentelemetry-collector/blob/main/exporter/exporterhelper/README.md#configuration

    retry_on_failure:
      # default = true
      enabled: {true, false}
      # time to wait after the first failure before retrying;
      # ignored if enabled is false, default = 5s
      initial_interval: <initial_interval>
      # is the upper bound on backoff; ignored if enabled is false, default = 30s
      max_interval: <max_interval>
      # is the maximum amount of time spent trying to send a batch;
      # ignored if enabled is false, default = 120s
      max_elapsed_time: <max_elapsed_time>

    sending_queue:
      # default = false
      enabled: {true, false}
      # number of consumers that dequeue batches; ignored if enabled is false,
      # default = 10
      num_consumers: <num_consumers>
      # when set, enables persistence and uses the component specified as a storage extension for the persistent queue
      # make sure to configure and add a `file_storage` extension in `service.extensions`.
      # default = None
      storage: <storage_name>
      # maximum number of batches kept in memory before data;
      # ignored if enabled is false, default = 1000
      #
      # user should calculate this as num_seconds * requests_per_second where:
      # num_seconds is the number of seconds to buffer in case of a backend outage,
      # requests_per_second is the average number of requests per seconds.
      queue_size: <queue_size>

Source Templates

You can specify a template with an attribute for source_category, source_name, source_host or graphite_template using %{attr_name}.

For example, when there is an attribute my_attr: my_value, metrics/%{my_attr} would be expanded to metrics/my_value.

For graphite_template, in addition to above, %{_metric_} is going to be replaced with metric name.

Example Configuration

exporters:
  sumologic:
    endpoint: http://localhost:3000
    compress_encoding: "gzip"
    max_request_body_size: "1_048_576"  # 1MB
    log_format: "text"
    metric_format: "prometheus"
    source_category: "custom category"
    source_name: "custom name"
    source_host: "custom host"
    metadata_attributes:
      - k8s.*

Documentation

Index

Constants

View Source
const (
	// TextFormat represents log_format: text
	TextFormat LogFormatType = "text"
	// JSONFormat represents log_format: json
	JSONFormat LogFormatType = "json"
	// GraphiteFormat represents metric_format: text
	GraphiteFormat MetricFormatType = "graphite"
	// Carbon2Format represents metric_format: json
	Carbon2Format MetricFormatType = "carbon2"
	// PrometheusFormat represents metric_format: json
	PrometheusFormat MetricFormatType = "prometheus"
	// GZIPCompression represents compress_encoding: gzip
	GZIPCompression CompressEncodingType = "gzip"
	// DeflateCompression represents compress_encoding: deflate
	DeflateCompression CompressEncodingType = "deflate"
	// NoCompression represents disabled compression
	NoCompression CompressEncodingType = ""
	// MetricsPipeline represents metrics pipeline
	MetricsPipeline PipelineType = "metrics"
	// LogsPipeline represents metrics pipeline
	LogsPipeline PipelineType = "logs"

	// DefaultCompress defines default Compress
	DefaultCompress bool = true
	// DefaultCompressEncoding defines default CompressEncoding
	DefaultCompressEncoding CompressEncodingType = "gzip"
	// DefaultMaxRequestBodySize defines default MaxRequestBodySize in bytes
	DefaultMaxRequestBodySize int = 1 * 1024 * 1024
	// DefaultLogFormat defines default LogFormat
	DefaultLogFormat LogFormatType = JSONFormat
	// DefaultMetricFormat defines default MetricFormat
	DefaultMetricFormat MetricFormatType = PrometheusFormat
	// DefaultSourceCategory defines default SourceCategory
	DefaultSourceCategory string = ""
	// DefaultSourceName defines default SourceName
	DefaultSourceName string = ""
	// DefaultSourceHost defines default SourceHost
	DefaultSourceHost string = ""
	// DefaultClient defines default Client
	DefaultClient string = "otelcol"
	// DefaultGraphiteTemplate defines default template for Graphite
	DefaultGraphiteTemplate string = "%{_metric_}"
)

Variables

This section is empty.

Functions

func NewFactory

func NewFactory() exporter.Factory

NewFactory returns a new factory for the sumologic exporter.

Types

type CompressEncodingType

type CompressEncodingType string

CompressEncodingType represents type of the pipeline

type Config

type Config struct {
	confighttp.ClientConfig      `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct.
	exporterhelper.QueueSettings `mapstructure:"sending_queue"`
	configretry.BackOffConfig    `mapstructure:"retry_on_failure"`

	// Compression encoding format, either empty string, gzip or deflate (default gzip)
	// Empty string means no compression
	CompressEncoding CompressEncodingType `mapstructure:"compress_encoding"`
	// Max HTTP request body size in bytes before compression (if applied).
	// By default 1MB is recommended.
	MaxRequestBodySize int `mapstructure:"max_request_body_size"`

	// Logs related configuration
	// Format to post logs into Sumo. (default json)
	//   * text - Logs will appear in Sumo Logic in text format.
	//   * json - Logs will appear in Sumo Logic in json format.
	LogFormat LogFormatType `mapstructure:"log_format"`

	// Metrics related configuration
	// The format of metrics you will be sending, either graphite or carbon2 or prometheus (Default is prometheus)
	// Possible values are `carbon2` and `prometheus`
	MetricFormat MetricFormatType `mapstructure:"metric_format"`
	// Graphite template.
	// Placeholders `%{attr_name}` will be replaced with attribute value for attr_name.
	GraphiteTemplate string `mapstructure:"graphite_template"`

	// List of regexes for attributes which should be send as metadata
	MetadataAttributes []string `mapstructure:"metadata_attributes"`

	// Sumo specific options
	// Desired source category.
	// Useful if you want to override the source category configured for the source.
	// Placeholders `%{attr_name}` will be replaced with attribute value for attr_name.
	SourceCategory string `mapstructure:"source_category"`
	// Desired source name.
	// Useful if you want to override the source name configured for the source.
	// Placeholders `%{attr_name}` will be replaced with attribute value for attr_name.
	SourceName string `mapstructure:"source_name"`
	// Desired host name.
	// Useful if you want to override the source host configured for the source.
	// Placeholders `%{attr_name}` will be replaced with attribute value for attr_name.
	SourceHost string `mapstructure:"source_host"`
	// Name of the client
	Client string `mapstructure:"client"`
}

Config defines configuration for Sumo Logic exporter.

func (*Config) Validate added in v0.45.0

func (cfg *Config) Validate() error

type LogFormatType

type LogFormatType string

LogFormatType represents log_format

type MetricFormatType

type MetricFormatType string

MetricFormatType represents metric_format

type PipelineType

type PipelineType string

PipelineType represents type of the pipeline

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL