Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add AR query time to breadcrumbs #2283

Open
sobrinho opened this issue Mar 28, 2024 · 4 comments
Open

Add AR query time to breadcrumbs #2283

sobrinho opened this issue Mar 28, 2024 · 4 comments

Comments

@sobrinho
Copy link
Contributor

Describe the idea

We have breadcrumbs with the query like:

{
  name: Employee Pluck,
  sql: SELECT DISTINCT "employees"."person_id" FROM "employees" WHERE "employees"."company_id" IN ('x', 'y', 'z'),
  statement_name: null
}

Would be helpful to have the timing of that query together with the breadcrumb:

{
  name: Employee Pluck,
  sql: SELECT DISTINCT "employees"."person_id" FROM "employees" WHERE "employees"."company_id" IN ('x', 'y', 'z'),
  statement_name: null,
  duration: 5.1234 // ms
}

Why do you think it's beneficial to most of the users

That will help with exceptions that might be caused due to slow endpoints such as graphql timeout middleware, rack-timeout and etc.

Possible implementation

https://github.com/getsentry/sentry-ruby/blob/master/sentry-rails/lib/sentry/rails/breadcrumb/active_support_logger.rb#L14-L18

Could be something like:

crumb = Sentry::Breadcrumb.new(
  data: data,
  category: name,
  timestamp: started.to_i,
  duration: started - finished
)
@sl0thentr0py
Copy link
Member

yep i can add, but also you can probably try out our Performance product and you'll get much more visibility into such things :)
https://docs.sentry.io/platforms/ruby/performance/
https://docs.sentry.io/platforms/ruby/performance/instrumentation/automatic-instrumentation/

@sobrinho
Copy link
Contributor Author

sobrinho commented Apr 3, 2024

Indeed but the point here is to track times from a very specific exception.

So, if a Rack::Timeout exception happens for instance, I can see the exception and go straight to the query that took too long to execute.

@sl0thentr0py
Copy link
Member

we connect errors and traces together, so you can neatly go from a particular exception to the span waterfall for that entire request and can see the query immediately.

@sobrinho
Copy link
Contributor Author

sobrinho commented Apr 3, 2024

Every error is traced on the performance? What happens with the sampling in that case?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: No status
Development

No branches or pull requests

2 participants