Skip to content

Commit edbb79b

Browse files
committed
Optimize telemetry pipeline and improve batching
1 parent 3ecd1e6 commit edbb79b

File tree

324 files changed

+1563
-10398
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

324 files changed

+1563
-10398
lines changed

codecov.yaml renamed to .github/codecov.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,7 @@ component_management:
2323
name: "syslog_cef_receivers"
2424
paths:
2525
- "rust/experimental/syslog-cef-receivers/"
26+
- component_id: "otel_arrow_go"
27+
name: "otel-arrow-go"
28+
paths:
29+
- "go/"

.github/repository-settings.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@ Maintainers are expected to maintain this log. This is required as per
44
[OpenTelemetry Community
55
guidelines](https://github.com/open-telemetry/community/blob/main/docs/how-to-configure-new-repository.md#collaborators-and-teams).
66

7+
## 2025-05-12
8+
9+
- Configure branch protection for `main` branch to 'Require' certain checks:
10+
- Go-CI
11+
- `pkg\otel` component
12+
- test_and_coverage (renamed from build_test)
13+
- gen_otelarrowcol
14+
715
## 2025-05-07
816

917
- Configure branch protection for `main` branch to 'Require' certain checks:

.github/workflows/go-ci.yml

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,40 @@ on: [push, pull_request]
66

77
jobs:
88

9-
build_test:
9+
test_and_coverage:
10+
strategy:
11+
fail-fast: false
12+
matrix:
13+
folder:
14+
- pkg/otel
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
18+
with:
19+
submodules: true
20+
- uses: actions/setup-go@0aaccfd150d50ccaeb58ebd88d36e91967a5f35b # v5.4.0
21+
with:
22+
go-version: "1.23"
23+
- name: Run tests with coverage
24+
run: go test -cover -coverprofile=coverage.txt -covermode=atomic ./${{ matrix.folder}}/...
25+
working-directory: ./go
26+
- name: Upload to codecov.io
27+
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
28+
env:
29+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
30+
with:
31+
fail_ci_if_error: true
32+
33+
gen_otelarrowcol:
34+
runs-on: ubuntu-latest
35+
steps:
36+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
37+
with:
38+
submodules: true
39+
- name: Build the test collector
40+
run: make otelarrowcol
41+
42+
codeql:
1043
permissions:
1144
# needed for codeql
1245
security-events: write
@@ -19,9 +52,5 @@ jobs:
1952
- uses: github/codeql-action/init@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13
2053
with:
2154
languages: go
22-
- name: make build
23-
run: make build
24-
- name: make test
25-
run: make test
2655
- uses: github/codeql-action/analyze@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13
2756
timeout-minutes: 60

.github/workflows/pipeline-perf-test.yml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,20 @@ jobs:
3131
pip install -r tools/pipeline_perf_test/orchestrator/requirements.txt
3232
pip install -r tools/pipeline_perf_test/load_generator/requirements.txt
3333
34-
- name: Run pipeline performance tests
34+
- name: Run pipeline performance test with default configuration
3535
run: |
3636
cd tools/pipeline_perf_test
37-
python orchestrator/orchestrator.py --collector-config system_under_test/otel-collector/collector-config.yaml --duration 30
37+
python orchestrator/orchestrator.py --collector-config system_under_test/otel-collector/collector-config.yaml --duration 30 --results-dir ./results/default
38+
39+
- name: Run pipeline performance test with batch processor configuration
40+
run: |
41+
cd tools/pipeline_perf_test
42+
python orchestrator/orchestrator.py --collector-config system_under_test/otel-collector/collector-config-with-batch-processor.yaml --duration 30 --results-dir ./results/batch-processor
43+
44+
- name: Upload performance test results
45+
uses: actions/upload-artifact@v4
46+
with:
47+
name: performance-test-results
48+
path: tools/pipeline_perf_test/results/
3849

3950

.github/workflows/rust-ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ jobs:
3131
toolchain: stable
3232
- name: install cargo-llvm-cov
3333
uses: taiki-e/install-action@5075451c95db43b063f20f0c8fef04c04d5bf0ba # cargo-llvm-cov
34+
- name: Build the test collector
35+
run: make otelarrowcol
3436
- name: Run tests with coverage
3537
run: cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info
3638
working-directory: ./rust/${{ matrix.folder }}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,4 @@ coverage.html
5353

5454
# Collector test binary
5555
collector/cmd/otelarrowcol/otelarrowcol
56+
tools/pipeline_perf_test/load_generator/loadgen-manifest.yaml.tmp

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ Versioning](https://semver.org/spec/v2.0.0.html).
99

1010
## Unreleased
1111

12+
- Remove `concurrentbatch` and `obfuscation` processors. [#409](https://github.com/open-telemetry/otel-arrow/pull/409)
13+
1214
## [0.35.0](https://github.com/open-telemetry/otel-arrow/releases/tag/v0.35.0) - 2025-04-07
1315

1416
- Upgrade to v0.123.x of collector dependencies.

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ gotidy:
3232
for dir in $(GODIRS); do (cd $${dir}; GOWORK="off" $(GOCMD) mod tidy) || exit 1; done
3333

3434
doc:
35-
$(GOCMD) run tools/data_model_gen/main.go
35+
$(GOCMD) run go/tools/data_model_gen/main.go
3636

3737
# Multimod can be installed using:
3838
#

README.md

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,22 @@
44
[![Go-CI](https://github.com/open-telemetry/otel-arrow/actions/workflows/go-ci.yml/badge.svg)](https://github.com/open-telemetry/otel-arrow/actions/workflows/go-ci.yml)
55
[![Rust-CI](https://github.com/open-telemetry/otel-arrow/actions/workflows/rust-ci.yml/badge.svg)](https://github.com/open-telemetry/otel-arrow/actions/workflows/rust-ci.yml)
66
[![OpenSSF Scorecard for otel-arrow](https://api.scorecard.dev/projects/github.com/open-telemetry/otel-arrow/badge)](https://scorecard.dev/viewer/?uri=github.com/open-telemetry/otel-arrow)
7+
[![codecov](https://codecov.io/gh/open-telemetry/otel-arrow/graph/badge.svg?token=7u3gFLH54G)](https://codecov.io/gh/open-telemetry/otel-arrow)
78

8-
The [OpenTelemetry Protocol with Apache
9+
The [OpenTelemetry with Apache
910
Arrow](https://github.com/open-telemetry/otel-arrow) project is an
1011
effort within [OpenTelemetry](https://opentelemetry.io/) to use
1112
[Apache Arrow](https://arrow.apache.org/) libraries for bulk data
12-
transport in OpenTelemetry pipelines. This repository is
13-
the home of the OpenTelemetry Protocol with Apache Arrow protocol,
14-
which we refer to as "OTAP", and reference implementations.
13+
transport in OpenTelemetry pipelines. This repository is the home of
14+
the OpenTelemetry Protocol with Apache Arrow protocol, which we refer
15+
to as "OTAP", and reference implementations in Golang and Rust.
16+
17+
The [OpenTelemetry Arrow project has an OpenTelemetry SIG with weekly
18+
meetings][PROJECTDEF]. Find our [meeting schedule on the OpenTelemetry
19+
calendar][OTELCAL].
20+
21+
[PROJECTDEF]: https://github.com/open-telemetry/community/blob/main/projects/otelarrow.md
22+
[OTELCAL]: https://github.com/open-telemetry/community/blob/main/README.md#calendar
1523

1624
## Quick start
1725

@@ -22,6 +30,10 @@ for details.
2230
The [examples](./collector/examples/README.md) in this repository use
2331
a test collector named `otelarrowcol`, see [collector/BUILDING.md](./collector/BUILDING.md).
2432

33+
[Phase 2 of the project is being actively developed](#phase-2). We are
34+
building an end-to-end OpenTelemetry Arrow pipeline in Rust. Find us
35+
in the CNCF Slack `#otel-arrow` channel.
36+
2537
[RECEIVER]: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/otelarrowreceiver/README.md
2638
[EXPORTER]: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/otelarrowexporter/README.md
2739

@@ -229,12 +241,12 @@ you're more than welcome to participate!
229241

230242
- [Joshua MacDonald](https://github.com/jmacd), Microsoft
231243
- [Laurent Quérel](https://github.com/lquerel), F5
244+
- [Drew Relmas](https://github.com/drewrelmas), Microsoft
232245

233246
[Approvers](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#approver)
234247
([@open-telemetry/arrow-approvers](https://github.com/orgs/open-telemetry/teams/arrow-approvers)):
235248

236249
- [Alex Boten](https://github.com/codeboten), Honeycomb
237-
- [Drew Relmas](https://github.com/drewrelmas), Microsoft
238250
- [Moh Osman](https://github.com/moh-osman3), ServiceNow
239251

240252
### Thanks to all the people who have contributed

collector/README.md

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,26 +19,6 @@ official OpenTelemetry Collector-Contrib release images since v0.105.0.
1919

2020
See [Building][BUILDING].
2121

22-
## Components included in this repository
23-
24-
Several components were developed to facilitate testing and debugging the
25-
primary OpenTelemetry Protocol with Apache Arrow components. Most importantly,
26-
these tools can be used to report problematic data to the maintainers. These
27-
components are:
28-
29-
### For production use
30-
31-
- [`processor/concurrentbatchprocessor`][CONCURRENTBATCHPROCESSOR]: Derived from
32-
the upstream [batchprocessor][UPSTREAMBATCHPROCESSOR], this component is
33-
enhanced with the ability to send batches concurrently, with an overall
34-
in-flight-bytes limit.
35-
36-
### For research and validation
37-
38-
- [`processor/obfuscationprocessor`][OBFUSCATIONPROCESSOR]: Supports obfuscation
39-
of OpenTelemetry data using a [Feistel
40-
cipher](https://en.wikipedia.org/wiki/Feistel_cipher).
41-
4222
## Other components built into `otelarrowcol`
4323

4424
Several Collector-Contrib extensions are included in the build:
@@ -57,22 +37,43 @@ use the upstream [fileexporter][FILEEXPORTER] and
5737

5838
From the core collector repository:
5939

60-
- [otelhttpexporter][UPSTREAMHTTPOTLP]: Useful for debugging, sends standard
40+
- [otlphttpexporter][UPSTREAMHTTPOTLP]: Useful for debugging, sends standard
6141
OTLP over HTTP
42+
- [otlpexporter][UPSTREAMOTLP]: Useful for testing and validation, the
43+
core OTLP exporter
6244
- [debugexporter][UPSTREAMDEBUG]: Useful for debugging, prints OTLP data to
6345
the console
6446

47+
## Phase 1 components (removed)
48+
49+
During Phase 1 of the project, several components were built that
50+
could not be maintained given the pace of OpenTelemetry Collector
51+
development. Notable former components:
52+
53+
- **Concurrent Batch Processor**: This component was at the time an
54+
improvement on the OpenTelemetry core `batchprocessor`. Today we
55+
recommend the `exporterhelper` built-in support for batching,
56+
configurable after the queue sender. [Removed.][PHASE1REMOVAL1]
57+
- **Obfuscation Processor**: This component applied a Feistel cipher to all
58+
string fields of the OpenTelemetry data model. This could be revived as
59+
a Collector-Contrib component. [Removed.][PHASE1REMOVAL1]
60+
- **Validation Connector**: This component routed telemetry in two
61+
ways such that a collector could self-validate an OTel-Arrow
62+
bridge. It was difficult to make ensure reliable connector ordering
63+
at startup, required changes in the core Collector libraries.
64+
[Removed.][PHASE1REMOVAL3]
65+
- **Protobuf/JSON file exporter and receiver**: These components had
66+
support for reading compressed protocol buffers, matching data that
67+
we used in Phase 1. Today we recommend the Collector-Contrib
68+
`fileexporter` and `otlpjsonfilereceiver`. [Removed.][PHASE1REMOVAL2]
69+
6570
[BUILDING]: ./BUILDING.md
6671
[COLLECTORCONTRIB]:
6772
https://github.com/open-telemetry/opentelemetry-collector-contrib
6873
[ARROWEXPORTER]:
6974
https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/otelarrowexporter/README.md
7075
[ARROWRECEIVER]:
7176
https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/otelarrowreceiver/README.md
72-
[UPSTREAMBATCHPROCESSOR]:
73-
https://github.com/open-telemetry/opentelemetry-collector/blob/main/processor/batchprocessor/README.md
74-
[CONCURRENTBATCHPROCESSOR]: ./processor/concurrentbatchprocessor/README.md
75-
[OBFUSCATIONPROCESSOR]: ./processor/obfuscationprocessor/README.md
7677
[FILEEXPORTER]:
7778
https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/fileexporter/README.md
7879
[FILERECEIVER]:
@@ -85,5 +86,10 @@ From the core collector repository:
8586
https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/extension/pprofextension/README.md
8687
[UPSTREAMHTTPOTLP]:
8788
https://github.com/open-telemetry/opentelemetry-collector/blob/main/exporter/otlphttpexporter/README.md
89+
[UPSTREAMOTLP]:
90+
https://github.com/open-telemetry/opentelemetry-collector/blob/main/exporter/otlpexporter/README.md
8891
[UPSTREAMDEBUG]:
8992
https://github.com/open-telemetry/opentelemetry-collector/blob/main/exporter/debugexporter/README.md
93+
[PHASE1REMOVAL1]: https://github.com/open-telemetry/otel-arrow/pull/409
94+
[PHASE1REMOVAL2]: https://github.com/open-telemetry/otel-arrow/pull/278
95+
[PHASE1REMOVAL3]: https://github.com/open-telemetry/otel-arrow/pull/252

0 commit comments

Comments
 (0)