Comments (3)
So there are questions you can ask Tempo using TraceQL to get an understanding of what is creating your enormous trace. These features are in main now.
{ trace:id = "foo" } | by(resource.service.name) | select(trace:rootService, trace:rootName)
{ trace:id = "foo" } | rate() by(resource.service.name, name)
The above can help, but what I'd really like to do is create a /api/v2/traces/<id>
endpoint that returns the trace nested one layer deep. This would allow us to return something like:
{
trace: {...},
warning: "trace exceeds max size. partial trace returned."
}
There is currently no good way to tell a client that we are returning only part of the trace. HTTP status code 206
is kind of similar and may also be an option, but i'd prefer revving the endpoint and having a way to pass detailed messages back to the client.
from tempo.
Thanks for your response @joe-elliott. Having the endpoint you described sounds like a good long-term direction; but I was still surprised that there's any query-level enforcement of trace size limits, given that #1225 is still open (I see it was just closed). Was this delivered through a different issue, or was it always the case that trace size limits were enforced in queries? If this is expected behavior, does my request to have the configuration for ingest-level vs query-level trace limit enforcement sound reasonable, even with the endpoint you described?
{ trace:id = "foo" } | by(resource.service.name) | select(trace:rootService, trace:rootName) { trace:id = "foo" } | rate() by(resource.service.name, name)
These features are in main now.
Thanks for sharing these! I'm excited to try them out. Are these currently scoped to (or exist in some form in) a release?
from tempo.
The primary reason to enforce this on the query path is to prevent instability from parsing and combining 100s of MBs of trace data. Thank you for pointing out that issue! As you noticed I closed it :).
If this is expected behavior, does my request to have the configuration for ingest-level vs query-level trace limit enforcement sound reasonable, even with the endpoint you described?
I think splitting this limit into two is a fine idea. We would definitely accept that PR.
Are these currently scoped to (or exist in some form in) a release?
I think we are in luck. They should be doable in 2.5. I thought perhaps trace:id
did not make the cutoff but it did.
from tempo.
Related Issues (20)
- Overrides Configuration Is Not Working HOT 12
- Documentation feedback: /docs/sources/tempo/configuration/_index.md - Cache allowed roles is missing options HOT 3
- Trace by ID: JSON response does not align with OTLP JSON format HOT 3
- TraceQL Metrics: { false } | rate() returns data HOT 1
- Add semver version to api/status/buildinfo endpoint HOT 5
- Endpoint does not follow ip address or domain name standards for grafana tempo HOT 11
- Tempo mixin: alert and recording rules make range interval configurable HOT 1
- Module path needs to be updated with '/v2' HOT 1
- [DOC] Update overrides content to clarify configuration for new, legacy
- unable to add data source to tempo with URL HOT 3
- Grafana tempo not getting traces after helm deploy HOT 1
- Use a non-retryable HTTP status code for unrecoverable rate limit errors
- Are there plans to open outgoing ports to support custom storage backends
- Use connect-go to serve streaming endpoints
- [DOC] Upload images from repo to storage area for docs
- `metrics-generator` idle and no traces are generated using Tempo 2.5.0 HOT 11
- Logger customization to avoid parse error HOT 1
- Support Zone Aware Replication cli Flags HOT 2
- getting field role_arn not found in type s3.Config (error to add role_arn for garfana tempo-distributed ) HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tempo.