Proteus
Proteus generates synthetic observability telemetry for a distributed system that does not exist, and injects it into Amazon CloudWatch over OTLP.
Proteus builds a believable distributed system that does not exist, then sends its telemetry — metrics, logs, traces and RUM — into Amazon CloudWatch. You get a populated service map, real traces and correlated logs to demonstrate CloudWatch Omni and the AWS DevOps Agent against, without needing a production estate.
The data is synthetic. The shape of it is the point: services that call each other, tenants that share infrastructure, a daily traffic curve, and faults that land where a real one would.
Why OTLP and not PutMetricData#
A metric can name a node. Only a trace can name an edge.
PutMetricData does carry service identity: an EntityMetricData entry takes an
Entity whose KeyAttributes accept Type, ResourceType, Identifier, Name and
Environment, and two datapoints sharing those key attributes are treated as the same
entity. What the call has no field for is a second endpoint. Across the three shapes
there are thirteen fields — nine on MetricDatum, two on Dimension, two on Entity —
and none of them means peer, parent, caller, callee or dependency. An entity identifies
one thing, never a pair.
A span carries the pair explicitly. Proteus sets peer.service and parent_span_id on
every outbound call, so a dependency is stated rather than inferred. That is why the tool
speaks OTLP instead of pushing counters: the choice is not identity against nothing, it is
nodes against nodes and edges. Overview explains the pipeline.
Note What CloudWatch Omni does with an entity attached to a metric is not documented here, because nobody working on Proteus has Omni access to test it against. The claim above is about the shape of the API, not about what a console draws.
Cost Injecting telemetry costs real money — it is ordinary CloudWatch ingestion, billed to your account. A 14-day seed of the 18-service default estate that
proteus plangives you is estimated at about $153, list price inus-west-2. A larger estate costs more. Under the default policy, every command that sends data projects the cost and asks you to confirm it first. See the cost guard.
Start here#
| If you want to | Read |
|---|---|
| Get telemetry into CloudWatch now | Quick Start |
| Understand what it does before you run it | Overview |
| Extend it, or read the contracts between layers | Diving Deep |
| Follow a worked example, CLI or GUI | Operations |
| Fix something that is not working | Troubleshooting |
| Look up a workload type, fault kind or env var | Appendix |
What you need#
- Python 3.12 or newer.
- AWS credentials for an account you are willing to spend money in.
- A region where CloudWatch Omni is available:
us-east-1,us-west-2oreu-west-1.proteus doctorwarns you if you pick another one.
About#
Proteus is MIT-licensed, written by Jeremy Hall — jeremyfhall.com. Dependencies, licenses and the tools it was built with are listed in Thank Yous, License and Tools.
Everything Proteus emits is fabricated. Nothing in it describes a real system.