Help us shape the future of Go! Take the 2026 Go Developer Survey

fusescope-otel-collector

module
v0.145.0 Latest Latest
Warning

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

Go to latest
Published: Oct 16, 2026 License: AGPL-3.0

README

FuseScope

FuseScope OpenTelemetry Collector

Go Version

The ingestion layer of FuseScope: an OpenTelemetry Collector distribution that receives logs, metrics and traces and writes them to ClickHouse, plus the ClickHouse schema migrator.

Overview

This repository builds the OpenTelemetry Collector distribution that powers FuseScope.

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

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

About this fork

This is a hard fork of SigNoz/signoz-otel-collector, maintained by FuseOne for FuseScope. It owns the ClickHouse schema that FuseScope reads. Component type names used in collector configuration (for example signozlogspipeline or clickhousetraces) are kept unchanged for compatibility.

Why this 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 FuseScope needs in one build: upstream Collector and Contrib components alongside the FuseScope receivers, processors, exporters, connectors, and an extension inherited from SigNoz.
  • Fast storage: the FuseScope 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 FuseScope, including this collector, is with the FuseScope Helm charts. 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-collector   # → ghcr.io/fuseone-io/fusescope-otel-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

fusescope-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 fusescope-otel-collector <command> --help for a command's subcommands and flags.

Components

This distribution bundles upstream OpenTelemetry Collector and Collector-Contrib components together with FuseScope-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

Open an issue or a pull request to get started.

License

Licensed under the GNU Affero General Public License v3.0. Originally developed by SigNoz Inc.; modified by FuseOne — see NOTICE.

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
tagdedup
Package tagdedup provides per-batch deduplication of rows written to the ClickHouse tag tables, so identical rows are written at most once per batch.
Package tagdedup provides per-batch deduplication of rows written to the ClickHouse tag tables, so identical rows are written at most once per batch.
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