Pulsegrid / Platform
Platform
Three parts: an agent that runs on each host, a columnar store, and a query layer that speaks SQL. This page describes what each one does and what it does not.
The agent
A single static binary, about 34MB, no runtime dependencies. It runs as a systemd unit or a DaemonSet and needs read access to /proc and the container socket.
| Runtime | Auto-instrumented | Method |
|---|---|---|
| Go 1.21+ | HTTP, gRPC, database/sql | eBPF uprobes, no rebuild |
| Node 18+ | HTTP, Express, Fastify, pg, Redis | Loader hook, no code change |
| Python 3.9+ | Django, Flask, FastAPI, psycopg, requests | sitecustomize injection |
| Java 11+ | Servlet, Spring, JDBC, Kafka | JVM agent, one flag |
| Ruby 3.0+ | Rails, Sidekiq, ActiveRecord | Gem, one require |
| .NET 6+ | ASP.NET Core, HttpClient, EF Core | CLR profiler |
| Anything else | Via OpenTelemetry OTLP | Point your exporter at the agent |
Agent overhead measured on our own production fleet is 0.4% to 1.1% CPU and roughly 90MB resident, depending on trace volume.
Storage and retention
| Signal | Resolution | Solo | Team | Scale |
|---|---|---|---|---|
| Metrics, raw | 10 second | 2 days | 15 days | 30 days |
| Metrics, rolled up | 1 minute | 7 days | 90 days | 13 months |
| Traces, sampled | Full fidelity | 7 days | 30 days | 90 days |
| Traces, errored | Always kept | 7 days | 90 days | 13 months |
| Logs | Full text | 3 days | 30 days | 90 days |
| Deploy and event markers | Full fidelity | 90 days | 13 months | Indefinite |
Retention is per signal, not a shared quota, and there is no ingest cap on any tier. Extended retention beyond 13 months is available on Scale at $0.02 per host per day.
Querying
Everything is stored in tables. The console is a SQL editor with autocomplete over your own schema, and the same tables are reachable over the Postgres wire protocol.
-- slowest endpoints in the last hour, p99 by route SELECT route, count(*) AS n, quantile(0.99)(duration_ms) AS p99 FROM traces WHERE service = 'checkout' AND ts > now() - interval '1 hour' GROUP BY route ORDER BY p99 DESC LIMIT 20;
ClickHouse SQL. Standard SELECT, JOIN, CTEs, window functions and the ClickHouse aggregate functions including quantile, uniqExact and topK. Writes are not permitted through the query layer.
Yes. Use the ClickHouse datasource with the read-only credentials from Settings, Query access. Metabase, Superset and anything speaking the Postgres wire protocol also work.
No. There is a concurrency limit of 8 queries per organisation on Team and 32 on Scale, and a 60 second statement timeout. Beyond that, query as much as you like.
What Pulsegrid does not do
There is no browser SDK and no session replay. We cover the server side. If you need RUM, run it alongside from another vendor and correlate on trace ID, which we expose in the response headers.
No uptime probes from external locations. Most teams pair us with a cheap dedicated checker. We will accept the results as an event stream if you want them on the same timeline.
We alert, we do not run the on-call rota. Alerts go to PagerDuty, Opsgenie, Slack or a webhook and the rota lives there. We would rather integrate with the rota tool you already pay for.
Retention tops out at 13 months. If you need seven year retention for audit, export to your own object storage in Parquet, which we support on a schedule, and query it there.