@sophonz/semantic-conventions
v1.1.0
Published
Readme
@sophonz/semantic-conventions
OpenTelemetry semantic convention constants, plus the Sophonz attributes.
Re-exports everything from @opentelemetry/semantic-conventions and adds the
attribute keys the Sophonz agents emit for RUM, browser, screen, session and
service metadata. Import the constants rather than typing the strings — several
of these keys have changed value, and the constant is what stays correct.
Part of the Sophonz OpenTelemetry suite.
Install
bun add @sophonz/semantic-conventions
# or
pnpm add @sophonz/semantic-conventions
# or
npm install @sophonz/semantic-conventionsUsage
import {
ATTR_SERVICE_NAME,
ATTR_SOPHONZ_SESSION_ID,
ATTR_SOPHONZ_SCREEN_NAME,
} from '@sophonz/semantic-conventions';
span.setAttribute(ATTR_SERVICE_NAME, 'my-app');
span.setAttribute(ATTR_SOPHONZ_SESSION_ID, sessionId);
span.setAttribute(ATTR_SOPHONZ_SCREEN_NAME, 'checkout-page');Sophonz attributes
Identity
| Constant | Value |
|----------|-------|
| ATTR_SOPHONZ_SESSION_ID | session.id |
| ATTR_SOPHONZ_USER_ID | user.id |
| ATTR_SOPHONZ_DEVICE_ID | device.id |
| ATTR_SOPHONZ_AREA_CODE | area.code |
App and service
| Constant | Value |
|----------|-------|
| ATTR_SOPHONZ_SERVICE_KEY | service.key |
| ATTR_SOPHONZ_SERVICE_NAMESPACE | service.namespace (alias of ATTR_SERVICE_NAMESPACE) |
| ATTR_SOPHONZ_CLIENT_PLATFORM | client.platform |
| ATTR_SOPHONZ_SERVICE_TYPE | client.platform (same key as above) |
| ATTR_SOPHONZ_DEPLOYMENT_ENVIRONMENT | deployment.environment |
| ATTR_SOPHONZ_ENVIRONMENT | environment |
| ATTR_SOPHONZ_AGENT_VERSION | sophonz.agent.version |
| ATTR_SOPHONZ_RUM_VERSION | rum.version |
| ATTR_SOPHONZ_RUM_AGENT_VERSION | sophonz.rum.version |
| ATTR_SOPHONZ_WEB_VERSION | web.version |
| ATTR_SOPHONZ_RUM_SCRIPT_INSTANCE | rum.scriptInstance |
| ATTR_SOPHONZ_RUM_COMPONENT | component |
| ATTR_SOPHONZ_SPAN_TYPE | app.span.type |
The browser SDK's project, appName, appVersion and appKey options map to
service.namespace, service.name, service.version and service.key.
Screen
| Constant | Value |
|----------|-------|
| ATTR_SOPHONZ_SCREEN_ID | app.screen.id |
| ATTR_SOPHONZ_SCREEN_NAME | app.screen.name |
| ATTR_SOPHONZ_SCREEN_TYPE | app.screen.type |
| ATTR_SOPHONZ_SCREEN_GROUP_ID | app.screen.group.id |
| ATTR_SOPHONZ_SCREEN_GROUP_NAME | app.screen.group.name |
Browser and platform
| Constant | Value |
|----------|-------|
| ATTR_SOPHONZ_BROWSER_NAME | sophonz.browser.name |
| ATTR_SOPHONZ_BROWSER_VERSION | sophonz.browser.version |
| ATTR_SOPHONZ_BROWSER_VERSION_MAJOR | sophonz.browser.version_major |
| ATTR_SOPHONZ_BROWSER_DEVICE | sophonz.browser.device |
| ATTR_SOPHONZ_BROWSER_LOCATION_HREF | location.href |
| ATTR_OS_NAME | os.name |
| ATTR_OS_VERSION | os.version |
Standard OTel user-agent client hints resource attributes, declared here because
upstream only exports them from its /incubating entry point, which this package
cannot resolve:
| Constant | Value |
|----------|-------|
| ATTR_BROWSER_BRANDS | browser.brands |
| ATTR_BROWSER_PLATFORM | browser.platform |
| ATTR_BROWSER_MOBILE | browser.mobile |
| ATTR_BROWSER_LANGUAGE | browser.language |
Errors
| Constant | Value |
|----------|-------|
| ATTR_SOPHONZ_ERROR | error |
| ATTR_SOPHONZ_ERROR_MESSAGE | error.message |
| ATTR_SOPHONZ_ERROR_OBJECT | error.object |
Logs
| Constant | Value |
|----------|-------|
| ATTR_SOPHONZ_LOG_LEVEL | level |
| ATTR_SOPHONZ_LOG_MESSAGE | message |
Console
@sophonz/instrumentation-console emits a browser.console log event alongside
its span:
| Constant | Value |
|----------|-------|
| EVENT_BROWSER_CONSOLE | browser.console |
| ATTR_BROWSER_CONSOLE_METHOD | browser.console.method |
User interaction
| Constant | Value |
|----------|-------|
| ATTR_SOPHONZ_TARGET_ELEMENT | target_element |
| ATTR_SOPHONZ_TARGET_XPATH | target_xpath |
| ATTR_SOPHONZ_ELEMENT_TAG | target_element_tag |
| ATTR_SOPHONZ_ELEMENT_ID | target_element_id |
| ATTR_SOPHONZ_ELEMENT_CLASS | target_element_class |
| ATTR_SOPHONZ_ELEMENT_TEXT | target_element_text |
| ATTR_SOPHONZ_USER_INTERACTION_PREV_HREF | prev.href |
| ATTR_SOPHONZ_ROUTE_CURRENT_HREF | sophonz.route.current_href |
Web Vitals
@sophonz/instrumentation-webvitals no longer emits the web-vital.* attributes
below — they are deprecated and kept only because removing an export from this
published package would be breaking:
| Constant | Value | Deprecated in favor of |
|----------|-------|-------------------------|
| ATTR_SOPHONZ_WEBVITAL_NAME | web-vital.name | ATTR_BROWSER_WEB_VITAL_NAME |
| ATTR_SOPHONZ_WEBVITAL_VALUE | web-vital.value | ATTR_BROWSER_WEB_VITAL_VALUE |
| ATTR_SOPHONZ_WEBVITAL_DELTA | web-vital.delta | ATTR_BROWSER_WEB_VITAL_DELTA |
| ATTR_SOPHONZ_WEBVITAL_RATING | web-vital.rating | ATTR_BROWSER_WEB_VITAL_RATING |
| ATTR_SOPHONZ_WEBVITAL_NAVIGATION_TYPE | web-vital.navigation_type | ATTR_BROWSER_WEB_VITAL_NAVIGATION_TYPE |
It emits only the merged OpenTelemetry browser.web_vital event and its
attributes instead:
| Constant | Value |
|----------|-------|
| EVENT_BROWSER_WEB_VITAL | browser.web_vital |
| ATTR_BROWSER_WEB_VITAL_NAME | browser.web_vital.name |
| ATTR_BROWSER_WEB_VITAL_VALUE | browser.web_vital.value |
| ATTR_BROWSER_WEB_VITAL_DELTA | browser.web_vital.delta |
| ATTR_BROWSER_WEB_VITAL_ID | browser.web_vital.id |
| ATTR_BROWSER_WEB_VITAL_NAVIGATION_TYPE | browser.web_vital.navigation_type |
| ATTR_BROWSER_WEB_VITAL_RATING | browser.web_vital.rating |
BROWSER_WEB_VITAL_NAME_VALUES, BROWSER_WEB_VITAL_RATING_VALUES and
BROWSER_WEB_VITAL_NAVIGATION_TYPE_VALUES enumerate the allowed values for
name, rating and navigation_type.
Long tasks
| Constant | Value |
|----------|-------|
| ATTR_SOPHONZ_LONGTASK_NAME | longtask.name |
| ATTR_SOPHONZ_LONGTASK_ENTRY_TYPE | longtask.entry_type |
| ATTR_SOPHONZ_LONGTASK_DURATION | longtask.duration |
Document and network
| Constant | Value |
|----------|-------|
| ATTR_SOPHONZ_DOCUMENT_REFERRER | document.referrer |
| ATTR_SOPHONZ_DOCUMENT_SCREEN_XY | screen.xy |
| ATTR_SOPHONZ_PAGE_VISIBILITY_HIDDEN | hidden |
| ATTR_SOPHONZ_CONNECTIVITY_ONLINE | online |
| ATTR_SOPHONZ_HTTP_REQUEST_BODY | http.request.body |
| ATTR_SOPHONZ_HTTP_RESPONSE_BODY | http.response.body |
| ATTR_SOPHONZ_LINK_TRACE_ID | link.traceId |
| ATTR_SOPHONZ_LINK_SPAN_ID | link.spanId |
Re-exports
Everything from @opentelemetry/semantic-conventions — HTTP, RPC, DB, exception, resource and the rest — is re-exported, so one import covers both sets.
Peer Dependencies
@opentelemetry/semantic-conventions@^1.40.0
License
See LICENSE in this package.
Part of sophonz-js.
