signoz-otel-collector

module
v0.144.9 Latest Latest
Warning

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

Go to latest
Published: Aug 18, 2026 License: AGPL-3.0

README

SigNoz

SigNoz OpenTelemetry Collector

GitHub Release Go Version GitHub issues Slack

One agent for all your telemetry, and the front door to SigNoz.

SigNoz's distribution of the OpenTelemetry Collector receives, processes, and exports your logs, metrics, and traces.

DocumentationSigNoz CloudSlackWebsite

Overview

This repository builds the OpenTelemetry Collector distribution that powers SigNoz.

It combines a curated set of upstream OpenTelemetry Collector and Collector-Contrib components with SigNoz's own components: receivers, processors, exporters, connectors, and an extension.

Like any Collector, where your telemetry goes is decided by the exporters in your pipeline. The SigNoz exporters write to ClickHouse, the store behind SigNoz. You can run the collector from a static config file, or manage it remotely over OpAMP (Open Agent Management Protocol).

About SigNoz

SigNoz is an open-source observability platform built on OpenTelemetry, with logs, metrics, traces, alerts, and dashboards in one place. This collector is the ingestion layer that feeds it.

Why SigNoz OpenTelemetry Collector?

Here are a few reasons teams run this collector:

  • Built on OpenTelemetry: works with standard OTLP sources and the upstream Collector components you already know.
  • Everything SigNoz needs in one build: upstream Collector and Contrib components alongside SigNoz's own receivers, processors, exporters, connectors, and an extension.
  • Fast storage: the SigNoz exporters write to ClickHouse, an extremely fast and highly optimized store for observability data.
  • Runs your way: from a static config file, or managed remotely over OpAMP.

Getting Started

The easiest way to run SigNoz, including this collector, is with Foundry, the SigNoz deployment tool, which installs and configures the collector for you. You can also build and run the collector from source for local development or custom images.

Prerequisites: Go 1.25+.

Build the collector:

make build

Run it against a config file:

make run
# make run uses ./config/default-config.yaml. To pass your own:
go run ./cmd/signozotelcollector --config ./config/default-config.yaml

On success the collector starts and accepts telemetry on the OTLP (OpenTelemetry Protocol) endpoints declared by its receivers, HTTP on 4318 and gRPC on 4317 by default. See example/example-config.yaml for a complete pipeline.

Build the container image:

make build-signoz-collector

Configuration

The collector reads a standard OpenTelemetry Collector configuration: receivers, processors, exporters, connectors, extensions, and a service block of pipelines. See config/default-config.yaml and example/example-config.yaml.

You can supply configuration in one of two ways:

  • Static file: pass --config <path-to-config>. The collector reads the file at startup.
  • Managed (OpAMP): pass --manager-config <path-to-manager-config> (see config/default-manager-config.yaml). The collector fetches its configuration from a remote OpAMP server, and copies the active config to --copy-path (default /etc/otel/signozcol-config.yaml).

CLI reference

signoz-otel-collector [flags]

Flags:
  --config string           Path to the collector configuration file
  --manager-config string   Path to the OpAMP agent manager configuration (enables managed mode)
  --copy-path string        Where the active config is written in managed mode
                            (default "/etc/otel/signozcol-config.yaml")
  --feature-gates string    Comma-delimited feature gate identifiers; prefix with '-' to disable,
                            '+' or no prefix to enable

Commands:
  migrate                   Run schema migrations for the telemetry store

Run signoz-otel-collector <command> --help for a command's subcommands and flags.

Components

This distribution bundles upstream OpenTelemetry Collector and Collector-Contrib components together with SigNoz-specific receivers, processors, exporters, connectors, and an extension. See components/components.go for the full list of registered components.

Development

make build           # build the collector
make test            # go test with the race detector and coverage
make fmt             # gofmt
make lint            # golangci-lint
make test-and-lint   # test + fmt + lint (default target)

Contributing

We ❤️ contributions big or small. Open an issue or a pull request to get started. Not sure where to begin? Just ping us on #contributing in our Slack community.

Community

Come say Hi to us on Slack 👋 to talk observability, OpenTelemetry, and SigNoz, and to connect with other users and contributors. If you have ideas, questions, or feedback, share them on GitHub Discussions.

License

Licensed under the GNU Affero General Public License v3.0.

Directories

Path Synopsis
cmd
config
connectors
exporter
signozkafkaexporter
package signozkafkaexporter exports trace data to Kafka.
package signozkafkaexporter exports trace data to Kafka.
signozkafkaexporter/internal/awsmsk
Package msk implements the required IAM auth used by AWS' managed Kafka platform to be used with the Surama kafka producer.
Package msk implements the required IAM auth used by AWS' managed Kafka platform to be used with the Surama kafka producer.
extension
healthcheckextension
Package healthcheckextension implements an extension that enables an HTTP endpoint that can be used to check the overall health and status of the service.
Package healthcheckextension implements an extension that enables an HTTP endpoint that can be used to check the overall health and status of the service.
internal
kafka/awsmsk
Package msk implements the required IAM auth used by AWS' managed Kafka platform to be used with the Surama kafka producer.
Package msk implements the required IAM auth used by AWS' managed Kafka platform to be used with the Surama kafka producer.
sharedcomponent
Package sharedcomponent exposes util functionality for receivers and exporters that need to share state between different signal types instances such as net.Listener or os.File.
Package sharedcomponent exposes util functionality for receivers and exporters that need to share state between different signal types instances such as net.Listener or os.File.
pkg
pdatagen module
processor
signozlogspipelineprocessor
Brought in as is from logstransform processor in opentelemetry-collector-contrib
Brought in as is from logstransform processor in opentelemetry-collector-contrib
signozlogspipelineprocessor/stanza/adapter
Register copies of stanza operators dedicated to signoz logs pipelines
Register copies of stanza operators dedicated to signoz logs pipelines
signozlogspipelineprocessor/stanza/entry
brought in as-is from opentelemetry-collector-contrib with changes to Get() to enable reading fields inside JSON body directly
brought in as-is from opentelemetry-collector-contrib with changes to Get() to enable reading fields inside JSON body directly
signozlogspipelineprocessor/stanza/operator/helper
brought in as is from "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/helper" with minor changes to use signozstanzaentry.Field instead of entry.Field
brought in as is from "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/helper" with minor changes to use signozstanzaentry.Field instead of entry.Field
signozlogspipelineprocessor/stanza/operator/operators/remove
Brought in as is from opentelemetry-collector-contrib
Brought in as is from opentelemetry-collector-contrib
signozlogspipelineprocessor/stanza/operator/operatortest
Brought in as is from opentelemetry-collector-contrib with anyOpConfig implementation updated to use operator config in logspipelineprocessor
Brought in as is from opentelemetry-collector-contrib with anyOpConfig implementation updated to use operator config in logspipelineprocessor
signoztailsampler
package signoztailsampler contains the logic to execute telemetry transform based on the OpenTelemetry Transformation Language.
package signoztailsampler contains the logic to execute telemetry transform based on the OpenTelemetry Transformation Language.
signoztailsampler/internal/idbatcher
Package idbatcher defines a pipeline of fixed size in which the elements are batches of ids.
Package idbatcher defines a pipeline of fixed size in which the elements are batches of ids.
signoztailsampler/internal/sampling
Package sampling contains the interfaces and data types used to implement the various sampling policies.
Package sampling contains the interfaces and data types used to implement the various sampling policies.
signoztransformprocessor
package signoztransformprocessor contains the logic to execute telemetry transform based on the OpenTelemetry Transformation Language.
package signoztransformprocessor contains the logic to execute telemetry transform based on the OpenTelemetry Transformation Language.
receiver
signozkafkareceiver
Package kafkareceiver receives traces from Kafka.
Package kafkareceiver receives traces from Kafka.

Jump to

Keyboard shortcuts

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