You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit b432018
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: README.md
+76-3Lines changed: 76 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,17 +1,22 @@
1
1
# Tero Edge
2
2
3
-
Tero Edge is a lightweight, high-performance telemetry proxy that enables efficient telemetry processing via a set of policies. The repository is structured as modular packages that can be composed to enable multiple use cases and scenarios.
3
+
Tero Edge is a lightweight, high-performance telemetry proxy that enables efficient telemetry processing via a set of policies. The repository is structured as modular packages that can be composed to enable multiple use cases and scenarios. The proxy demonstrates how to implement the policy spec described in [this OTEP](https://github.com/open-telemetry/opentelemetry-specification/pull/4738). This project is not meant to replace the opentelemetry collector but rather work in tandem with it, providing a lightweight alternative for solely applying policies. It's expected that a follow up to this project will be a collector processor Policy implementation.
4
4
5
5
## Current Configurations
6
6
7
7
1.**Edge data proxy** - Receives data in a gateway or sidecar configuration, processes the data through its policy engine, and forwards it to the next destination.
8
8
9
+
2.**OTLP (OpenTelemetry) proxy** - Receives OpenTelemetry logs via the `/v1/logs` endpoint, applies policy-based filtering (DROP/KEEP), and forwards to OTLP-compatible backends.
10
+
11
+
2.**Datadog proxy** - Receives OpenTelemetry logs via the `/api/v2/logs` endpoint, applies policy-based filtering (DROP/KEEP), and forwards to Datadog.
12
+
9
13
## Repository Structure
10
14
11
15
```
12
16
src/
13
17
├── main.zig # Default distribution entry point
14
18
├── datadog_main.zig # Datadog-focused distribution entry point
19
+
├── otlp_main.zig # OTLP-focused distribution entry point
15
20
├── root.zig # Library root (public API exports)
16
21
│
17
22
├── policy/ # Policy management package
@@ -105,6 +110,7 @@ Protocol-specific request processing modules that plug into the proxy infrastruc
105
110
-`ProxyModule` - Vtable interface for request processing
The OTLP module handles OpenTelemetry log ingestion with policy-based filtering. It processes the standard OTLP JSON format (`ExportLogsServiceRequest`).
149
+
150
+
**Supported filter match cases:**
151
+
-`log_body` - Match against log message body
152
+
-`log_severity_text` - Match against severity text (INFO, DEBUG, ERROR, etc.)
153
+
-`log_severity_number` - Match against severity number (1-24)
154
+
-`log_attribute` - Match against log record attributes
155
+
-`resource_attribute` - Match against resource attributes (e.g., `service.name`)
156
+
-`scope_name` - Match against instrumentation scope name
157
+
-`scope_version` - Match against instrumentation scope version
158
+
-`scope_attribute` - Match against scope attributes
159
+
160
+
**Routes:**
161
+
-`POST /v1/logs` - OTLP log ingestion endpoint
139
162
140
163
---
141
164
@@ -255,6 +278,19 @@ Focused distribution for Datadog log ingestion with:
255
278
256
279
Build: `zig build` (default) or `zig build datadog`
257
280
281
+
### OTLP (`otlp_main.zig`)
282
+
Focused distribution for OpenTelemetry Protocol (OTLP) log ingestion with:
283
+
- Handles `/v1/logs` endpoint (OTLP JSON format)
284
+
- Policy-based log filtering (DROP/KEEP) on log body, severity, attributes
285
+
- Support for resource attributes, scope attributes, and log attributes
286
+
- Fail-open behavior (errors pass logs through unchanged)
287
+
- Lock-free policy updates via atomic snapshots
288
+
- Graceful shutdown with signal handling
289
+
- Compatible with any OTLP-receiving backend (Datadog, Jaeger, etc.)
290
+
291
+
Build: `zig build otlp`
292
+
Run: `zig build run-otlp` or `./zig-out/bin/edge-otlp [config-file]`
293
+
258
294
## Building
259
295
260
296
```bash
@@ -266,16 +302,53 @@ zig build test
266
302
267
303
# Build specific distribution
268
304
zig build datadog
305
+
zig build otlp
306
+
307
+
# Run specific distribution
308
+
zig build run-datadog
309
+
zig build run-otlp
269
310
```
270
311
271
312
## Configuration
272
313
273
-
See `config.json` for example configuration. Key settings:
314
+
See `config.json` for the Datadog distribution or `config-otlp.json` for the OTLP distribution.
315
+
316
+
### Key settings:
274
317
-`listen_address` / `listen_port` - Server bind address
275
318
-`upstream_url` - Default upstream destination
319
+
-`workspace_id` - Workspace identifier for policy sync
0 commit comments