Platform · CosmoEdge
One binary. No configuration file. A report of what it could not reach.
CosmoEdge is the part of CosmoTrace that lives on your node, so it is the part we expect you to judge us on. This page says what it needs from you, what it does to data before that data leaves, what it recognises, what it does with the rest, and where it draws its limits.
What happens on the node
Discover, parse, mask, buffer, ship — and report
Where it runs
Any node that produces data
- Store
- Point-of-sale and retail back-office boxes with little CPU to spare. The half-core figures below are for these.
- Plant
- OT gateways and industrial hosts where the link to the datacenter is slow or intermittent. The disk buffer is for these.
- Tower
- Telco far-edge sites: many small nodes, one operator, no one on site. Coverage reporting is for these.
- Kubernetes node
- A DaemonSet. Discovers pods and their metadata as they come and go.
- Host
- A VM or bare metal under systemd. The plain case.
What it needs from you
Three things
- A way to run it
- A statically linked binary under systemd, or a DaemonSet. There is no configuration file to write; the environment it lands in is the configuration.
- Outbound 443
- To your stream endpoint — ours in a region you pick, or yours on your network. No inbound ports. No ingress rules.
- Read access to what you want covered
- It does not need root. Whatever it cannot read is listed in the coverage report as refused, with the path and the permission it lacked, so the fix is one line in your provisioning.
Discovery and parsing
What it recognises, and what it does with the rest
On start the agent walks the node: files under the usual log paths, journald, container
runtime output, Kubernetes pod metadata when present, the authentication and privilege trail
(sshd, sudo, exec), and the live process tree. It keeps walking; a service that appears
at 3 a.m. is discovered at 3 a.m.
For each source it recognises the format, it parses fields on the node so that class and masking can be applied before the event leaves. Formats recognised at launch:
| Family | Formats | | --- | --- | | Structured | JSON lines · logfmt · journald fields · CRI and Docker JSON-file container logs | | System | syslog RFC 3164 and RFC 5424 · auth and sudo logs · kernel ring buffer | | Web servers | Apache and Nginx combined and error logs | | Runtimes | glog / klog · multi-line Java and Python stack traces joined into one event | | Databases | PostgreSQL CSV and stderr logs |
The opaque fallback. Anything else is kept as a line — unmodified, with time, source path, node and the full hierarchy attached. It is searchable as text, it counts toward coverage, and it is never dropped for being unfamiliar. When a format is added later, historical opaque lines from that source are re-parsed in the lake; nothing was lost in the meantime.
Coverage
Refusal, sampling and loss are visible, not silent
Every agent ships a coverage report alongside its data, and the console shows it beside the node it came from. It has three sections and each entry names a cause and a fix.
- Refused
- A source exists and the agent could not read it. The path and the missing permission are recorded. The event count is zero and you know why.
- Sampled
- A source exceeded the budget you set for its class. The rate and the rule applied are recorded; evidence-class sources are never sampled, so you are told when a policy would have sampled them and did not.
- Lost
- The disk buffer filled or the link stayed down past the buffer's horizon. The window and the count are recorded. Loss is a number in your report, not a gap you find during an incident.
Limits
Measured ceilings
You set a CPU and memory cap; the agent stays under it and reports sampling if the cap was the reason. These are the numbers we have measured on a fixed event shape. We will not quote a number for your estate until we have replayed the same test on your node.
- 110kevents/s
- 1 vCPU
- 25kevents/s
- 0.5 vCPU
- 0OOM kills
- 150 MB cap
- <100MB
- Binary and resident memory
Under 100 MB resident. Parse, mask and classify on.
50 MB resident. Sort and mask on.
Half-core run, full duration.
One statically linked executable.
Measurements are first-party. Third-party comparisons are not published here; if you want them, ask and we will show you the runs.
Put CosmoEdge on one node.
A design-partner run replays these figures on your event shape, with masking on, and leaves your current agent in place.