tags : Infrastructure, Observability
Concerns with sentry
- The way we’re using sentry is per project which is fine for error tracking
- But when distributed tracing is in play, it crosses project-boundaries. Which seems to be a business plan feature. So you can’t really do distributed tracing across your different projects in sentry unless you’ve a business plan?
- The sentry performance UI expects each project to have a
Frontend,BackendandMobilefilter. Which doesn’t fit nicely into how we’ve structured our services. - Discover page has limitations with the team plan
Some terms specific to sentry
Some of these terms are specific to sentry, some are general distributed tracing terms. See this for sentry specific definition of these terms. Following is summary.
- Trace
- identifier:
trace_id - Contains
Transaction
- identifier:
- Transaction
- identifier:
transaction_name(Eg.api/v2/users/<user_id>/) - Contains
spans
- identifier:
- Spans
- Contained in a
Transaction
- Contained in a
Cheetsheet
See https://docs.sentry.io/product/discover-queries/query-builder/
Writing Query (Discover page)
ORcannot be applied across aggregated and non-aggregated filters- If we want to match multiple values in a query we can use
[] - You can click on tags (facet box/map) in the side to add them to the query
- With
transactionbased on your search criteria and sample rate, result events may be limited. - Concepts
- Graph options
- Interval: How you
groupthings within the date/time range selected. - Display
Top Period&Top Dailyneed an aggregation function likep95to be applied. When we use this, we get another option to setlimitTotal Period, ~
- Interval: How you
- Graph options
Gotchas
- Avoid using multiple project view that sentry allows us to do from the UI. This gets confusing because we use different
- With some projects we have fields such as
user_organd in other sentry project that field might be missing. SoDiscover Pagequeries don’t span across orgs. - Because of how we’ve been instrumenting things historically, we’ll need to have to have dashboards of the name
<org_name>:<service_name>:<env_name> - At the service level, we have distinction of the same services with
<service_name>-pocand<service_name>-production.- While we can differentiate them in sentry, we choose not to do so. We’ll always split at the highest tenant when organizing queries in sentry, which is the customer in this case.
Project specific issues
- Different healthchecks endpoint naming convention (Prefer to use /healthz)
- Different ports, some allow config some don’t
- The key for project env is different for diff projects, some have MANHATTAN_ENV, some have PROJECT_ENV etc.
- In some projects it’s DATABASE_NAME, in some projects its POSTGRES_DB_NAME etc.