Architecture
Logs, metrics, and traces use typed Parquet streams in the same object-storage data plane. Profile metadata uses the same organization and query model while pprof blobs remain in object storage.Node roles
Roles are selected with the
[node].roles config (or MS_NODE.ROLES). Only the intake holds
local state — a WAL within the flush window — so every other role scales freely.
Deployment options
- Docker Compose
- Kubernetes
The repo ships two profiles:The checked-in Compose file publishes
5080 and internal 5082, but not external OTLP gRPC
4317. To send OTLP gRPC from the host, add a 4317:4317 mapping to the standalone or
intake service. Do not use 5082 as a substitute.Dependencies
- Postgres — metadata, IAM, streams, alerts, reports, Agent resources, and cluster state.
- Object store —
local,s3(and S3-compatible: MinIO, R2, Aliyun OSS),azure, orgcs.
Operations
- Single binary, same image for all roles.
- Prometheus
/metricswith fixed-cardinality cache, object-store, intake, query, alerting, and self-observability metrics. - Health probes —
/api/v1/readyzgates traffic on WAL replay;/api/v1/healthzseparately reports subsystem degradation, including object-storage probes. - TLS + ACME — optional automatic certificates via
[http.tls](HTTP-01 challenge, Let’s Encrypt). - External protocols — HTTP
5080, OTLP gRPC4317, optional Flight SQL5083; keep internal gRPC5082private.