Span Operations
Span operations are a short code identifying the type of operation the span is measuring. Span operations are low cardinality attributes - they should be as general as possible while still being human readable and useful. They should avoid including high cardinality data like IDs and URLs.
Operations are expected to follow OpenTelemetry's semantic conventions as much as possible.
It's important to keep categories consistent between SDKs and integrations as they are used by Sentry in the Operations Breakdown feature. For example, both db.init
and db.query
will be categorized as database operations (db
). The default operations breakdown config can be seen here.
Note
Span operations should be lower case and use snake_case
The following tables contain examples of operations used by the SDKs and Sentry product. The usage column in the table contains examples of using that operation category, but are not hard recommendations for operation usage. As long as categories stay consistent, SDK developers are free to choose actions and identifiers that best match the use case they are instrumenting.
If a span operation is not provided, the value of default
is set by Relay. The value default
can also be set by SDKs, for example, to avoid breaking changes when no longer requiring op
to be set on TransactionContext
.
Category | Usage | Description |
---|---|---|
mark | A general point-in-time span (span with 0 duration) | |
function | The time it took for a general function to execute |
Category | Usage | Description |
---|---|---|
pageload | A full page load of a web application. | |
navigation | Client-side browser history change in a web application. | |
resource | Resource as per Performance Resource Timing. Defaults to resource.other if resource cannot be indentified. | |
resource.script | ||
resource.link | ||
resource.css | ||
resource.img | ||
browser | Usage of browser APIs or functionality | |
browser.paint | ||
measure | Usage of performance.measure() API | |
ui | ||
ui.task | A task that is taken on the main UI thread. Typically used to indicate to users about things like the Long Tasks API. | |
ui.render | Time it takes to render a UI element | |
ui.update | Time it takes to update a UI element | |
ui.action | A user interaction | |
ui.action.click | ||
http | ||
http.client | ||
http.graphql.query | ||
http.graphql.mutation | ||
http.graphql.subscription | ||
serialize | Serialization of data |
JS Frameworks should be prepended with the ui
category for operations related to UI components.
Category | Usage | Description |
---|---|---|
ui.react | Spans related to React components | |
ui.react.render | ||
ui.react.update | ||
ui.react.mount | ||
ui.vue | Spans related to Vue.js components | |
ui.vue.activate | ||
ui.vue.create | ||
ui.vue.destroy | ||
ui.vue.mount | ||
ui.vue.update | ||
ui.svelte | Spans related to Svelte components | |
ui.svelte.init | ||
ui.svelte.update | ||
ui.angular | Spans related to Angular components | |
ui.angular.init | ||
ui.angular.routing | ||
ui.angular.[methodName] | Created when a method wrapped with TraceMethodDecorator was called | |
ui.ember | Spans related to EmberJS components | |
ui.ember.route.before_model | ||
ui.ember.route.model | ||
ui.ember.route.after_model | ||
ui.ember.route.setup_controller | ||
ui.livewire | Spans related to Livewire | |
components | ||
ui.livewire.component |
Web server related spans should aim to follow OpenTelemetry's HTTP and RPC semantic conventions when possible.
Category | Usage | Description |
---|---|---|
http | Spans related to http operations | |
http.client | ||
http.server | ||
websocket | ||
websocket.server | ||
rpc | Spans related to remote procedure calls (RPC) | |
grpc | Usage of the gRPC framework | |
graphql | a GraphQL operation | |
graphql.execute | ||
graphql.parse | ||
graphql.resolve | ||
graphql.request | ||
graphql.query | ||
graphql.mutation | ||
graphql.subscription | ||
graphql.validate | ||
subprocess | Creating new processes | |
subprocess.wait | ||
subprocess.communicate | ||
middleware | Usage of webserver middlewares | |
middleware.express | ||
middleware.handle | ||
middleware.starlette | ||
middleware.django | ||
view | Rendering of a view | |
view.process_action.action_controller | ||
view.render | ||
template | ||
template.init | ||
template.parse | ||
template.render | ||
template.django.render | ||
template.render_template.action_view | ||
event | ||
event.django | Spans related to Django signals | |
function | ||
function.remix | Spans related to Remix data fetchers | |
function.remix.document_request | ||
function.remix.action | ||
function.remix.loader | ||
function.nextjs | Spans related to NextJS data fetchers | |
serialize | Serialization of data | |
console | Accessing web servers through the command line (ex. Rails console) | |
console.command | ||
file | Operations on the file system (internal or external) | |
app | ||
app.bootstrap | ||
app.php.autoload |
Databased related spans are expected to follow OpenTelemetry's Database semantic conventions when possible.
Category | Usage | Description |
---|---|---|
db | An operation on a database | |
db.query | ||
db.sql.query | ||
db.sql.prisma | ||
db.redis | ||
db.sql.active_record | ||
db.sql.execute | ||
db.sql.transaction | ||
cache | ||
cache.get_item | ||
cache.clear | ||
cache.delete_item | ||
cache.save |
Serverless related spans are expected to follow OpenTelemetry's Function as a Service (FaaS) semantic conventions when possible.
Category | Usage | Description |
---|---|---|
http | ||
http.client | ||
http.client.stream | ||
grpc | ||
grpc.client | ||
function.gcp | Invocations of a GCP function | |
function.gcp.event | ||
function.gcp.cloud_event | ||
function.gcp.http | ||
function.aws | Invocations of an AWS Lambda function | |
function.azure | Invocations of an Azure serverless function |
Category | Usage | Description |
---|---|---|
app | Data about the mobile app | |
app.start | ||
app.start.warm | ||
app.start.cold | ||
ui | An operation on a mobile UI | |
ui.load | ||
ui.load.initial_display | ||
ui.load.full_display | ||
ui.action | ||
ui.action.click | ||
ui.action.swipe | ||
ui.action.scroll | ||
navigation | Navigating to another screen | |
file | Operations on the file system | |
file.read | ||
file.write | ||
file.copy | ||
file.delete | ||
file.open | ||
file.rename | ||
serialize | Serialization of data | |
http | ||
http.client | ||
http.graphql.query | ||
http.graphql.mutation | ||
http.graphql.subscription |
Category | Usage | Description |
---|---|---|
app | Data about the desktop app | |
app.start | ||
app.start.warm | ||
app.start.cold | ||
ui | An operation on a desktop UI | |
ui.load | ||
ui.action | ||
ui.action.click | ||
ui.action.swipe | ||
ui.action.scroll | ||
serialize | Serialization of data | |
http | ||
http.client | ||
http.graphql.query | ||
http.graphql.mutation | ||
http.graphql.subscription |
Messages/Queue spans are expected follow OpenTelemetry's Messaging semantic conventions when possible.
Category | Usage | Description |
---|---|---|
topic | ||
topic.send | ||
topic.receive | ||
topic.process | ||
queue | ||
queue.task | ||
queue.task.celery | ||
queue.task.rq | ||
queue.task.delayed_job | ||
queue.task.active_job | ||
queue.submit | ||
queue.submit.celery | ||
queue.resque | ||
queue.sidekiq |
Category | Description |
---|---|
ai | |
app | |
browser | |
console | |
db | |
file | |
function | |
graphql | |
graphql | |
grpc | |
http | |
mark | |
measure | |
middleware | |
navigation | |
pageload | |
queue | |
resource | |
rpc | |
serialize | |
socket | |
subprocess | |
template | |
topic | |
ui | |
view | |
websocket |
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").