Services · 0 reporting
Add your first service
Instrument an app and its latency, errors and request rate show up here, usually within a few minutes of it getting traffic.
- 1Pick a language
- 2Run the agent
- 3See your data
What is your service written in?
JvJavaJava 8+, Kotlin, Scala GoGoSDK, or zero-code with eBPF PyPythonDjango, Flask, FastAPI JSNode.jsExpress, Nest, Fastify C#.NETASP.NET Core, .NET 6+ { }Something elseAny OpenTelemetry SDK
Running on Kubernetes?Instrument every service in a namespace at once, no code changes.
Use the Kubernetes integration → Once a service reports, it appears here
Servicep95 latencyError rateRequests
← Change language 1 2 3
Instrument a Java service
Three steps. We fill in your stack's endpoint and credentials for you.
Create an access token
Scoped to write metrics, logs and traces. You can revoke it any time in Access policies.
Run your app with the agent
Uses the OpenTelemetry Java agent. Auto-instruments HTTP, JDBC, gRPC, Kafka and more. Prefer manual instrumentation?
Send some traffic
Listening for
cart_serviceHit any endpoint on your app. This updates on its own when the first span lands.Nothing after a few minutes?
- Check the app can reach the OTLP endpoint over HTTPS.
- Make sure the token is in the headers, not the URL.
- Restart the app after setting the variables.
Services
Environment AllAdd Alert+ Add Service| Name | Namespace | Duration (p95) | Errors | Rate |
|---|---|---|---|---|
| cart_service | payment | 20.2ms | 28.2req/s | 10.9req/s |
cart_service
Environment AllAdd Alert+ Add ServiceHealth Indicators
- 90 ms
- 72 ms
- 54 ms
- 36 ms
- 18 ms
- 0 ms
- 08:15
- 08:20
- 08:25
- 08:30
- 08:35
- 08:40
- p95
- p99
- average
- hour before
- 5%
- 4%
- 3%
- 2%
- 1%
- 0%
- 08:15
- 08:20
- 08:25
- 08:30
- 08:35
- 08:40
- errors
- hour before
- 50
- 40
- 30
- 20
- 10
- 0
- 08:15
- 08:20
- 08:25
- 08:30
- 08:35
- 08:40
- rate
- hour before
- 10 ms
- 100 ms
- 1000 ms
Downstream & Databases
| Name | Requests | Errors | Rate |
|---|---|---|---|
| redis | |||
| checkoutservice | |||
| postgres |
Upstream
| frontend | |||
| couponcalculator | |||
| invoiceservice |
Operations
| Name | Duration, p95 | Errors | Rate |
|---|---|---|---|
| POST /order | 28.2 req/s | ||
| GET /cart | 28.2 req/s | ||
| adservice | 28.2 req/s | ||
| redis | 28.2 req/s |
- 0μs
- 127.39ms
- 274.39ms
- 382.17ms
- 509.56ms
- Adservice-requester requester..
- Adservice-requester GET /:endpoint
- Adservice-requester GET /:endpoint ..
- Adservice-requester GET /:endpoint ...
- Adservice-requester GET /:endpoint ...
- Adservice-requester GET /:endpoint ...
- Adservice-requester GET /:endpoint ...
- Adservice-requester GET /:endpoint ...
- Adservice-requester GET /:endpoint
- cartservice GET /cart
- cartservice redis GET
- cartservice postgres SELECT
- 10:00
- 12:00
- 14:00
- 16:00
- 18:00
- 20:00
- 22:00
- 26 Jan
- 08:00
Dedup
Common labels: OTLP 6 · Line limit: 1000 (12 returned) · Total bytes processed: 49.8 kb
- 2023-01-26 08:42:41 {"body":{"MESSAGE":"Window manager warning: Last user time (11233) is greater than comparison timestamp (11233). This most likely represents a buggy client sending inaccurate timestamps in messages such as _NET_ACTIVE_WINDOW."}}
- 2023-01-26 08:42:38 {"body":{"MESSAGE":"Window manager warning: Last user time (11233) is greater than comparison timestamp (11233). This most likely represents a buggy client sending inaccurate timestamps in messages such as _NET_ACTIVE_WINDOW."}}
- 2023-01-26 08:43:35 {"body":{"MESSAGE":"Window manager warning: Last user time (11233) is greater than comparison timestamp (11233). This most likely represents a buggy client sending inaccurate timestamps in messages such as _NET_ACTIVE_WINDOW."}}
- 2023-01-26 08:43:32 {"body":{"MESSAGE":"Window manager warning: Last user time (11233) is greater than comparison timestamp (11233). This most likely represents a buggy client sending inaccurate timestamps in messages such as _NET_ACTIVE_WINDOW."}}
- 2023-01-26 08:44:29 {"body":{"MESSAGE":"Window manager warning: Last user time (11233) is greater than comparison timestamp (11233). This most likely represents a buggy client sending inaccurate timestamps in messages such as _NET_ACTIVE_WINDOW."}}
- 2023-01-26 08:44:26 {"body":{"MESSAGE":"Window manager warning: Last user time (11233) is greater than comparison timestamp (11233). This most likely represents a buggy client sending inaccurate timestamps in messages such as _NET_ACTIVE_WINDOW."}}
- 2023-01-26 08:45:23 {"body":{"MESSAGE":"Window manager warning: Last user time (11233) is greater than comparison timestamp (11233). This most likely represents a buggy client sending inaccurate timestamps in messages such as _NET_ACTIVE_WINDOW."}}
- 2023-01-26 08:45:20 {"body":{"MESSAGE":"Window manager warning: Last user time (11233) is greater than comparison timestamp (11233). This most likely represents a buggy client sending inaccurate timestamps in messages such as _NET_ACTIVE_WINDOW."}}
- 2023-01-26 08:46:17 {"body":{"MESSAGE":"Window manager warning: Last user time (11233) is greater than comparison timestamp (11233). This most likely represents a buggy client sending inaccurate timestamps in messages such as _NET_ACTIVE_WINDOW."}}
- 2023-01-26 08:46:14 {"body":{"MESSAGE":"Window manager warning: Last user time (11233) is greater than comparison timestamp (11233). This most likely represents a buggy client sending inaccurate timestamps in messages such as _NET_ACTIVE_WINDOW."}}
- 2023-01-26 08:47:11 {"body":{"MESSAGE":"Window manager warning: Last user time (11233) is greater than comparison timestamp (11233). This most likely represents a buggy client sending inaccurate timestamps in messages such as _NET_ACTIVE_WINDOW."}}
- 2023-01-26 08:47:08 {"body":{"MESSAGE":"Window manager warning: Last user time (11233) is greater than comparison timestamp (11233). This most likely represents a buggy client sending inaccurate timestamps in messages such as _NET_ACTIVE_WINDOW."}}
- Missing service.versionDeploys can’t be compared without it. Add
-Dotel.resource.attributes=service.version=… - Spans without status codes12% of server spans don’t set a status, so errors are undercounted.
- Logs not correlatedLog lines don’t carry the trace ID. Enable the logback appender to jump from a trace to its logs.