Skip to content

Commit f9e0089

Browse files
[stefexporter] Improve STEF exporter and receiver docs (#40408)
Added more details to exporter documentation, included benchmarks, a disclaimer of instability and explained interoperability expectations.
1 parent 9a7fa09 commit f9e0089

File tree

4 files changed

+64
-11
lines changed

4 files changed

+64
-11
lines changed

exporter/stefexporter/README.md

Lines changed: 59 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,67 @@
1313
[contrib]: https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-contrib
1414
<!-- end autogenerated section -->
1515

16-
Export data via gRPC using
17-
[Otel/STEF format](https://github.com/splunk/stef/tree/main/go/otel) format.
16+
## Overview
1817

19-
## Getting Started
18+
Exports data via gRPC using
19+
[Otel/STEF format](https://github.com/splunk/stef/tree/main/go/otel).
20+
Otel/STEF is a compact and fast telemetry format. It is currently the fastest
21+
benchmarked metric format in the Collector. Here are recent
22+
[benchmarking results](https://github.com/open-telemetry/opentelemetry-collector-contrib/actions/runs/15381307862/job/43272589155),
23+
comparing CPU usage when using a few different formats (lower is better):
24+
25+
| Test | CPU Avg% | CPU Max% |
26+
|-------------------------|---------:|---------:|
27+
| Metric10kDPS/Carbon | 174.9 | 179.3 |
28+
| Metric10kDPS/OpenCensus | 59.2 | 61.3 |
29+
| Metric10kDPS/OTLP | 44.8 | 45.7 |
30+
| Metric10kDPS/OTLP-HTTP | 33.5 | 34.0 |
31+
| Metric10kDPS/SignalFx | 78.9 | 88.0 |
32+
| Metric10kDPS/STEF | 20.7 | 21.7 |
33+
34+
STEF in this benchmark outperforms all other formats, including OTLP, which was previously
35+
known as the fastest format in the Collector.
36+
37+
STEF is also very compact on the wire. In uncompressed mode, it typically yields payloads
38+
that are more than 10x smaller than OTLP payloads. In compressed mode, STEF is
39+
typically 5-7 times more compact than OTLP.
40+
41+
Here are some
42+
[STEF benchmark results](https://splunk.github.io/stef/benchmarks/results/benchmarks.html),
43+
comparing STEF and OTLP payload sizes for a few sample payloads produced by Collector:
44+
45+
<img src="images/astronomymetricssize.png">
46+
47+
<img src="images/astronomymetricssize.png">
48+
49+
(This exporter implementation uses unsorted STEF format, labeled "STEF Unsorted" in
50+
charts above).
51+
52+
There are currently no known formats that match STEF's compactness and performance.
53+
54+
STEF exporter can be used to send metrics from the Collector to any STEF-compatible
55+
backend. STEF can also be used to send metric data between Collector instances, in which
56+
case on the receiving side a [STEF receiver](../../receiver/stefreceiver/README.md)
57+
should be used.
58+
59+
STEF format, STEF exporter and receiver implementations are currently in alpha
60+
stage of development, during which **the format may undergo breaking changes.**
61+
To ensure interoperability between sending and receiving Collectors make sure
62+
you are using versions of exporter and receiver that are compiled with the same
63+
version of STEF library.
64+
65+
Feedback about STEF format and implementation is welcome in the form of issues
66+
in this repository or in [STEF repository](https://github.com/splunk/stef/issues).
67+
68+
## Configuration
2069

2170
The following settings are required:
2271

2372
- `endpoint` (no default): host:port to which the exporter is going to send STEF metric data,
2473
using the STEF/gRPC protocol. The valid syntax is described
25-
[here](https://github.com/grpc/grpc/blob/master/doc/naming.md).
74+
[here](https://github.com/grpc/grpc/blob/master/doc/naming.md). When sending to
75+
another Collector you will typically use `<hostname>:4320` as the endpoint, since
76+
port 4320 is the default port used by STEF receiver.
2677
If a scheme of `https` is used then client transport security is enabled and overrides the `insecure` setting.
2778
- `tls`: see [TLS Configuration Settings](https://github.com/open-telemetry/opentelemetry-collector/blob/main/config/configtls/README.md)
2879
for the full set of available options.
@@ -43,7 +94,7 @@ exporters:
4394
```
4495
4596
By default, no compression is enabled. The only supported compression method is zstd.
46-
To enable, configure as follows:
97+
To enable compression, configure as follows:
4798
4899
```yaml
49100
exporters:
@@ -52,15 +103,15 @@ exporters:
52103
compression: zstd
53104
```
54105
55-
## Advanced Configuration
106+
## Advanced Settings
56107
57-
Several helper files are leveraged to provide additional capabilities automatically:
108+
STEF exporter supports the following advanced settings:
58109
59110
- [gRPC settings](https://github.com/open-telemetry/opentelemetry-collector/blob/main/config/configgrpc/README.md)
60111
- [TLS and mTLS settings](https://github.com/open-telemetry/opentelemetry-collector/blob/main/config/configtls/README.md)
61112
- Queuing, timeout and retry settings, particularly:
62113
- The `timeout` setting controls how long the exporter waits for ACK of a data sent
63-
over STEF/gRPC stream.
114+
over STEF/gRPC stream. Increase this value if you see timeouts in the logs.
64115
- The `num_consumers` setting defines how many unacknowledged batches can be in-flight.
65116
If the destination is slow to acknowledge then increasing this
66117
number can help increase the throughput.
Loading
Loading

receiver/stefreceiver/README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,16 @@
1313
[contrib]: https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-contrib
1414
<!-- end autogenerated section -->
1515

16-
The STEF receiver runs a gRPC server accepting data using the Sequential Tabular Encoding Format (STEF).
16+
Receives data via gRPC in Otel/STEF format. Otel/STEF is a compact and
17+
fast telemetry format. For more about Otel/STEF, see
18+
[STEF exporter docs](../../exporter/stefexporter/README.md).
1719

1820
## Configuration
1921

2022
- `endpoint` (default = localhost:4320 for grpc protocol):
2123
host:port on which the receiver is going to receive data. Refer to
2224
[naming documentation](https://github.com/grpc/grpc/blob/master/doc/naming.md)
23-
for valid syntax.
25+
for valid syntax for host part.
2426
- `ack_interval` (default: 10ms). The periodical interval of time when sending acknowledgements back to the client.
2527

2628
Example:
@@ -30,7 +32,7 @@ stef:
3032
endpoint: 0.0.0.0:4320
3133
```
3234
33-
Several common configuration structures provide additional capabilities automatically:
35+
STEF receiver supports the following advanced settings:
3436
3537
- [gRPC settings](https://github.com/open-telemetry/opentelemetry-collector/blob/main/config/configgrpc/README.md)
3638
- [TLS and mTLS settings](https://github.com/open-telemetry/opentelemetry-collector/blob/main/config/configtls/README.md)

0 commit comments

Comments
 (0)