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
Bering builds a resilience model artifact from trace artifacts. The output artifact is `bering-model.json` in `BeringResilienceModel` v1.0.0 format. Use it in any downstream tooling or analytics pipeline.
3
+
Bering is a discovery and publishing layer for service topology and endpoint contracts.
4
4
5
-
## Contract
5
+
It supports two operating modes:
6
6
7
-
Bering pins `metadata.schema` exactly:
7
+
- deterministic batch discovery from trace files and directories
8
+
- long-running runtime discovery that accepts OTLP/HTTP spans and publishes rolling snapshot envelopes for observability consumers
9
+
10
+
Bering owns discovery and discovery-side public contracts. It does not own simulation, gating, chaos execution, or policy decisions.
11
+
12
+
## Public Artifacts
13
+
14
+
Bering currently publishes two versioned JSON artifact types.
go run ./cmd/bering serve --config configs/serve.sample.yaml
98
+
```
75
99
76
-
Bering output is deterministic for identical inputs and flags:
100
+
The runtime service exposes:
101
+
102
+
-`POST /v1/traces` for OTLP/HTTP trace ingest
103
+
-`GET /healthz`
104
+
-`GET /readyz`
105
+
-`GET /metrics`
106
+
107
+
The primary integration path is standard OpenTelemetry Collector or SDK exporters sending spans to Bering over OTLP/HTTP. No custom Collector build is required.
Batch output remains deterministic for identical inputs and flags:
77
133
78
134
- services sorted by `id`
79
135
- edges sorted by `(from,to,kind,blocking)`
80
136
- endpoints sorted by `id`
81
-
- stable IDs for services/edges/endpoints
82
-
- canonical JSON writer with recursive object-key ordering (future-safe for map fields)
137
+
- canonical JSON output with stable object-key ordering
83
138
- optional `--discovered-at` for reproducible timestamps
84
139
85
-
## Supported trace formats (MVP)
140
+
Runtime mode is intentionally bounded, not lossless:
141
+
142
+
- one active tumbling window is retained in memory
143
+
- the previous emitted snapshot is retained for diffs and carry-forward runtime timestamps
144
+
-`runtime.max_in_memory_spans` bounds retained spans per active window
145
+
- late spans follow `drop` or `current_window` policy
146
+
- spans beyond the configured in-memory cap are dropped and surfaced via metrics/logs
147
+
- empty windows are advanced without emitting empty snapshots
148
+
149
+
## Discovery overlays
150
+
151
+
Discovery overlays are additive metadata inputs with explicit precedence by file order. They are intended for discovery-side enrichment, not policy evaluation.
152
+
153
+
Supported examples include:
154
+
155
+
- service labels and failure-eligibility labels
156
+
- endpoint predicate references
157
+
- workload or endpoint weights
158
+
- SLO references or tags
159
+
- replica overrides
86
160
87
-
- Normalized JSON: `{"spans": [...]}` payload with canonical span fields.
88
-
- Raw OTel JSON: `resourceSpans/scopeSpans/spans` payload.
161
+
See [configs/discovery.overlay.sample.yaml](configs/discovery.overlay.sample.yaml).
0 commit comments