feat(semantic-conventions): update semantic conventions to v1.29.0 (#5356)

Co-authored-by: Jamie Danielson <jamiedanielson@honeycomb.io>
This commit is contained in:
Trent Mick 2025-02-05 17:14:00 -08:00 committed by GitHub
parent d803022ba3
commit 2d4e1cac7c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 1488 additions and 180 deletions

View File

@ -1,2 +1,3 @@
opentelemetry-specification/
semantic-conventions/
tmp-changelog-gen/

382
scripts/semconv/changelog-gen.js Executable file
View File

@ -0,0 +1,382 @@
#!/usr/bin/env node
/**
* A script to generate a meaningful changelog entry for an update in
* semantic conventions version.
*
* Usage:
* vi scripts/semconv/generate.sh # Typically update SPEC_VERSION to latest.
* ./scripts/semconv/generate.sh # Re-generate the semconv package exports.
* ./scripts/semconv/changelog-gen.js [aVer [bVer]]
*
* Include the text from this script in "semantic-conventions/CHANGELOG.md",
* and perhaps also in the PR description.
*
* Arguments to the script:
* - `aVer` is the base version of `@opentelemetry/semantic-conventions`
* published to npm to which to compare, e.g. "1.27.0". This defaults to the
* latest version published to npm.
* - `bVer` is the version being compared against `aVer`. This defaults to
* "local", which uses the local build in "../../semantic-conventions" in this
* repo.
*
* Examples:
* ./scripts/semconv/changelog-gen.js # compare the local build to the latest in npm
* ./scripts/semconv/changelog-gen.js 1.27.0 1.28.0 # compare two versions in npm
*/
const fs = require('fs');
const path = require('path');
const globSync = require('glob').sync;
const {execSync} = require('child_process');
const rimraf = require('rimraf');
const TOP = path.resolve(__dirname, '..', '..');
const TMP_DIR = path.join(__dirname, 'tmp-changelog-gen');
/**
* Convert a string to an HTML anchor string, as Markdown does for headers.
*/
function slugify(s) {
const slug = s.trim().replace(/ /g, '-').replace(/[^\w-]/g, '')
return slug;
}
/**
* Given some JS `src` (typically from OTel build/esnext/... output), return
* whether the given export name `k` is marked `@deprecated`.
*
* Some of this parsing is shared with "contrib/scripts/gen-semconv-ts.js".
*
* @returns {boolean|string} `false` if not deprecated, a string deprecated
* message if deprecated and the message could be determined, otherwise
* `true` if marked deprecated.
*/
function isDeprecated(src, k) {
const re = new RegExp(`^export const ${k} = .*;$`, 'm')
const match = re.exec(src);
if (!match) {
throw new Error(`could not find the "${k}" export in semconv build/esnext/ source files`);
}
// Find a preceding block comment, if any.
const WHITESPACE_CHARS = [' ', '\t', '\n', '\r'];
let idx = match.index - 1;
while (idx >=1 && WHITESPACE_CHARS.includes(src[idx])) {
idx--;
}
if (src.slice(idx-1, idx+1) !== '*/') {
// There is not a block comment preceding the export.
return false;
}
idx -= 2;
while (idx >= 0) {
if (src[idx] === '/' && src[idx+1] === '*') {
// Found the start of the block comment.
const blockComment = src.slice(idx, match.index);
if (!blockComment.includes('@deprecated')) {
return false;
}
const deprecatedMsgMatch = /^\s*\*\s*@deprecated\s+(.*)$/m.exec(blockComment);
if (deprecatedMsgMatch) {
return deprecatedMsgMatch[1];
} else {
return true;
}
}
idx--;
}
return false;
}
function summarizeChanges({prev, curr, prevSrc, currSrc}) {
const prevNames = new Set(Object.keys(prev));
const currNames = new Set(Object.keys(curr));
const valChanged = (a, b) => {
if (typeof a !== typeof b) {
return true;
} else if (typeof a === 'function') {
return a.toString() !== b.toString();
} else {
return a !== b;
}
};
const isNewlyDeprecated = (k) => {
const isPrevDeprecated = prevNames.has(k) && isDeprecated(prevSrc, k);
const isCurrDeprecated = currNames.has(k) && isDeprecated(currSrc, k);
if (isPrevDeprecated && !isCurrDeprecated) {
throw new Error(`semconv export '${k}' was *un*-deprecated in this release!? Wassup?`);
}
return (!isPrevDeprecated && isCurrDeprecated);
};
// Determine changes.
const changes = [];
for (let k of Object.keys(curr)) {
if (!prevNames.has(k)) {
// 'ns' is the "namespace". The value here is wrong for "FEATURE_FLAG",
// "GEN_AI", etc. But good enough for the usage below.
const ns = /^(ATTR_|METRIC_|)?([^_]+)_/.exec(k)[2];
changes.push({type: 'added', k, v: curr[k], ns});
} else if (valChanged(curr[k], prev[k])) {
changes.push({type: 'changed', k, v: curr[k], prevV: prev[k]});
} else {
const deprecatedResult = isNewlyDeprecated(k);
if (deprecatedResult) {
changes.push({type: 'deprecated', k, v: curr[k], deprecatedResult});
}
}
}
for (let k of Object.keys(prev)) {
if (!currNames.has(k)) {
changes.push({change: 'removed', k, prevV: prev[k]});
}
}
// Create a set of summaries, one for each change type.
let haveChanges = changes.length > 0;
const summaryFromChangeType = {
removed: [],
changed: [],
deprecated: [],
added: [],
}
const execSummaryFromChangeType = {
removed: null,
changed: null,
deprecated: null,
added: null,
};
const removed = changes.filter(ch => ch.type === 'removed');
let summary = summaryFromChangeType.removed;
if (removed.length) {
execSummaryFromChangeType.removed = `${removed.length} removed exports`;
if (summary.length) { summary.push(''); }
let last;
const longest = removed.reduce((acc, ch) => Math.max(acc, ch.k.length), 0);
removed.forEach(ch => {
if (last && ch.ns !== last.ns) { summary.push(''); }
const cindent = ' '.repeat(longest - ch.k.length + 1);
const prevVRepr = ch.prevV.includes('_VALUE_') ? JSON.stringify(ch.prevV) : ch.prevV;
summary.push(`${ch.k}${cindent}// ${prevVRepr}`);
last = ch;
});
}
const changed = changes.filter(ch => ch.type === 'changed');
summary = summaryFromChangeType.changed;
if (changed.length) {
execSummaryFromChangeType.changed = `${changed.length} exported values changed`;
if (summary.length) { summary.push(''); }
let last;
const longest = changed.reduce((acc, ch) => Math.max(acc, ch.k.length), 0);
changed.forEach(ch => {
if (last && ch.ns !== last.ns) { summary.push(''); }
const cindent = ' '.repeat(longest - ch.k.length + 1);
const prevVRepr = ch.k.includes('_VALUE_') ? JSON.stringify(ch.prevV) : ch.prevV;
const vRepr = ch.k.includes('_VALUE_') ? JSON.stringify(ch.v) : ch.v;
summary.push(`${ch.k}${cindent}// ${prevVRepr} -> ${vRepr}`);
last = ch;
});
}
const deprecated = changes.filter(ch => ch.type === 'deprecated');
summary = summaryFromChangeType.deprecated;
if (deprecated.length) {
execSummaryFromChangeType.deprecated = `${deprecated.length} newly deprecated exports`;
if (summary.length) { summary.push(''); }
let last;
const longest = deprecated.reduce((acc, ch) => Math.max(acc, ch.k.length), 0);
deprecated.forEach(ch => {
if (last && ch.ns !== last.ns) { summary.push(''); }
const cindent = ' '.repeat(longest - ch.k.length + 1);
if (typeof ch.deprecatedResult === 'string') {
summary.push(`${ch.k}${cindent}// ${ch.v}: ${ch.deprecatedResult}`);
} else {
summary.push(ch.k)
}
last = ch;
});
}
const added = changes.filter(ch => ch.type === 'added');
summary = summaryFromChangeType.added;
if (added.length) {
execSummaryFromChangeType.added = `${added.length} added exports`;
let last, lastAttr;
const longest = added.reduce((acc, ch) => Math.max(acc, ch.k.length), 0);
added.forEach(ch => {
if (last && ch.ns !== last.ns) { summary.push(''); }
let indent = '';
if (lastAttr && ch.k.startsWith(lastAttr.k.slice('ATTR_'.length))) {
indent = ' ';
}
const cindent = ' '.repeat(longest - ch.k.length + 1);
const vRepr = ch.k.includes('_VALUE_') ? JSON.stringify(ch.v) : ch.v
summary.push(`${indent}${ch.k}${cindent}// ${vRepr}`);
last = ch;
if (ch.k.startsWith('ATTR_')) {
lastAttr = ch;
}
});
}
return {
haveChanges,
execSummaryFromChangeType,
summaryFromChangeType
};
}
function semconvChangelogGen(aVer=undefined, bVer=undefined) {
console.log(`Creating tmp working dir "${TMP_DIR}"`);
rimraf.sync(TMP_DIR);
fs.mkdirSync(TMP_DIR);
const localDir = path.join(TOP, 'semantic-conventions');
const pj = JSON.parse(fs.readFileSync(path.join(localDir, 'package.json')));
const pkgInfo = JSON.parse(execSync(`npm info -j ${pj.name}`))
let aDir;
if (!aVer) {
aVer = pkgInfo.version; // By default compare to latest published version.
}
aDir = path.join(TMP_DIR, aVer, 'package');
if (!fs.existsSync(aDir)) {
console.log(`Downloading and extracting @opentelemetry/semantic-conventions@${aVer}`)
const tarballUrl = `https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-${aVer}.tgz`;
fs.mkdirSync(path.dirname(aDir));
const cwd = path.dirname(aDir);
execSync(`curl -sf -o package.tgz ${tarballUrl}`, { cwd });
execSync(`tar xzf package.tgz`, { cwd });
}
let bDir, bSemconvVer;
if (!bVer) {
bVer = 'local' // By default comparison target is the local build.
bDir = localDir;
// Determine target spec ver.
const generateShPath = path.join(__dirname, 'generate.sh');
const specVerRe = /^SPEC_VERSION=(.*)$/m;
const specVerMatch = specVerRe.exec(fs.readFileSync(generateShPath));
if (!specVerMatch) {
throw new Error(`could not determine current semconv SPEC_VERSION: ${specVerRe} did not match in ${generateShPath}`);
}
bSemconvVer = specVerMatch[1].trim();
console.log('Target Semantic Conventions ver is:', bSemconvVer);
} else {
bSemconvVer = 'v' + bVer;
bDir = path.join(TMP_DIR, bVer, 'package');
console.log(`Downloading and extracting @opentelemetry/semantic-conventions@${bVer}`)
const tarballUrl = `https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-${bVer}.tgz`;
fs.mkdirSync(path.dirname(bDir));
const cwd = path.dirname(bDir);
execSync(`curl -sf -o package.tgz ${tarballUrl}`, { cwd });
execSync(`tar xzf package.tgz`, { cwd });
}
console.log(`Comparing exports between versions ${aVer} and ${bVer}`)
const stableChInfo = summarizeChanges({
// require('.../build/src/stable_*.js') from previous and current.
prev: Object.assign(...globSync(path.join(aDir, 'build/src/stable_*.js')).map(require)),
curr: Object.assign(...globSync(path.join(bDir, 'build/src/stable_*.js')).map(require)),
// Load '.../build/esnext/stable_*.js' sources to use for parsing jsdoc comments.
prevSrc: globSync(path.join(aDir, 'build/esnext/stable_*.js'))
.map(f => fs.readFileSync(f, 'utf8'))
.join('\n\n'),
currSrc: globSync(path.join(bDir, 'build/esnext/stable_*.js'))
.map(f => fs.readFileSync(f, 'utf8'))
.join('\n\n'),
});
const unstableChInfo = summarizeChanges({
prev: Object.assign(...globSync(path.join(aDir, 'build/src/experimental_*.js')).map(require)),
curr: Object.assign(...globSync(path.join(bDir, 'build/src/experimental_*.js')).map(require)),
prevSrc: globSync(path.join(aDir, 'build/esnext/experimental_*.js'))
.map(f => fs.readFileSync(f, 'utf8'))
.join('\n\n'),
currSrc: globSync(path.join(bDir, 'build/esnext/experimental_*.js'))
.map(f => fs.readFileSync(f, 'utf8'))
.join('\n\n'),
});
// Render the "change info" into a Markdown summary for the changelog.
const changeTypes = ['removed', 'changed', 'deprecated', 'added'];
let execSummaryFromChInfo = (chInfo) => {
const parts = changeTypes
.map(chType => chInfo.execSummaryFromChangeType[chType])
.filter(s => typeof(s) === 'string');
if (parts.length) {
return parts.join(', ');
} else {
return 'none';
}
}
const changelogEntry = [`
* feat: update semantic conventions to ${bSemconvVer} [#NNNN]
* Semantic Conventions ${bSemconvVer}:
[changelog](https://github.com/open-telemetry/semantic-conventions/blob/main/CHANGELOG.md#${slugify(bSemconvVer)}) |
[latest docs](https://opentelemetry.io/docs/specs/semconv/)
* \`@opentelemetry/semantic-conventions\` (stable) changes: *${execSummaryFromChInfo(stableChInfo)}*
* \`@opentelemetry/semantic-conventions/incubating\` (unstable) changes: *${execSummaryFromChInfo(unstableChInfo)}*
`];
if (stableChInfo.haveChanges) {
changelogEntry.push(`#### Stable changes in ${bSemconvVer}\n`);
for (let changeType of changeTypes) {
const summary = stableChInfo.summaryFromChangeType[changeType];
if (summary.length) {
changelogEntry.push(`<details open>
<summary>${stableChInfo.execSummaryFromChangeType[changeType]}</summary>
\`\`\`js
${summary.join('\n')}
\`\`\`
</details>
`);
}
}
}
if (unstableChInfo.haveChanges) {
changelogEntry.push(`#### Unstable changes in ${bSemconvVer}\n`);
for (let changeType of changeTypes) {
const summary = unstableChInfo.summaryFromChangeType[changeType];
if (summary.length) {
changelogEntry.push(`<details>
<summary>${unstableChInfo.execSummaryFromChangeType[changeType]}</summary>
\`\`\`js
${summary.join('\n')}
\`\`\`
</details>
`);
}
}
}
return changelogEntry.join('\n');
}
function main() {
const [aVer, bVer] = process.argv.slice(2);
const s = semconvChangelogGen(aVer, bVer);
console.log('The following could be added to the top "Enhancement" section of "semantic-conventions/CHANGELOG.md":');
console.log('\n- - -');
console.log(s)
console.log('- - -');
}
main();

View File

@ -7,11 +7,11 @@ ROOT_DIR="${SCRIPT_DIR}/../../"
# Get latest version by running `git tag -l --sort=version:refname | tail -1`
# ... in git@github.com:open-telemetry/semantic-conventions.git
SPEC_VERSION=v1.28.0
SPEC_VERSION=v1.29.0
# ... in git@github.com:open-telemetry/weaver.git
GENERATOR_VERSION=v0.10.0
# When running on windows and your are getting references to ";C" (like Telemetry;C)
# When running on windows and you are getting references to ";C" (like Telemetry;C)
# then this is an issue with the bash shell, so first run the following in your shell:
# export MSYS_NO_PATHCONV=1

View File

@ -16,12 +16,15 @@ comment_formats:
escape_backslashes: true
default_comment_format: jsdoc
# `exclude_stability` includes `"", null` to skip attributes that
# accidentally do not have a stability set (e.g. https://github.com/open-telemetry/semantic-conventions/issues/1777).
templates:
- pattern: attributes.ts.j2
# Remove file name prefix when per-pattern params are available https://github.com/open-telemetry/weaver/issues/288
# Switch from 'exclude_stability:["experimental",...]' to 'include_stability:["stable":...]' when available: https://github.com/open-telemetry/weaver/issues/569
filter: >
semconv_attributes({
"exclude_stability": ["experimental"]
"exclude_stability": ["experimental", "", null]
}) | {
stability: "stable",
attributes: .
@ -30,7 +33,7 @@ templates:
- pattern: attributes.ts.j2
filter: >
semconv_attributes({
"exclude_stability": ["stable"]
"exclude_stability": ["stable", "", null]
}) | {
stability: "experimental",
attributes: .
@ -39,7 +42,7 @@ templates:
- pattern: metrics.ts.j2
filter: >
semconv_metrics({
"exclude_stability": ["experimental"]
"exclude_stability": ["experimental", "", null]
}) | {
stability: "stable",
metrics: .
@ -48,7 +51,7 @@ templates:
- pattern: metrics.ts.j2
filter: >
semconv_metrics({
"exclude_stability": ["stable"]
"exclude_stability": ["stable", "", null]
}) | {
stability: "experimental",
metrics: .

View File

@ -9,6 +9,145 @@ All notable changes to the semantic-conventions package will be documented in th
### :rocket: (Enhancement)
* feat: update semantic conventions to v1.29.0 [#5356](https://github.com/open-telemetry/opentelemetry-js/pull/5356) @trentm
* Semantic Conventions v1.29.0:
[changelog](https://github.com/open-telemetry/semantic-conventions/blob/main/CHANGELOG.md#v1290) |
[latest docs](https://opentelemetry.io/docs/specs/semconv/)
* `@opentelemetry/semantic-conventions` (stable) changes: *none*
* `@opentelemetry/semantic-conventions/incubating` (unstable) changes: *8 newly deprecated exports, 95 added exports*
#### Unstable changes in v1.29.0
<details>
<summary>8 newly deprecated exports</summary>
```js
ATTR_DB_COSMOSDB_OPERATION_TYPE // db.cosmosdb.operation_type: No replacement at this time.
ATTR_DB_QUERY_PARAMETER // (key) => `db.query.parameter.${key}`: Replaced by `db.operation.parameter`.
ATTR_PROCESS_EXECUTABLE_BUILD_ID_PROFILING // process.executable.build_id.profiling: Replaced by `process.executable.build_id.htlhash`
ATTR_VCS_REPOSITORY_CHANGE_ID // vcs.repository.change.id: Deprecated, use `vcs.change.id` instead.
ATTR_VCS_REPOSITORY_CHANGE_TITLE // vcs.repository.change.title: Deprecated, use `vcs.change.title` instead.
ATTR_VCS_REPOSITORY_REF_NAME // vcs.repository.ref.name: Deprecated, use `vcs.ref.head.name` instead.
ATTR_VCS_REPOSITORY_REF_REVISION // vcs.repository.ref.revision: Deprecated, use `vcs.ref.head.revision` instead.
ATTR_VCS_REPOSITORY_REF_TYPE // vcs.repository.ref.type: Deprecated, use `vcs.ref.head.type` instead.
```
</details>
<details>
<summary>95 added exports</summary>
```js
METRIC_CONTAINER_UPTIME // container.uptime
METRIC_DB_CLIENT_COSMOSDB_ACTIVE_INSTANCE_COUNT // db.client.cosmosdb.active_instance.count
METRIC_DB_CLIENT_COSMOSDB_OPERATION_REQUEST_CHARGE // db.client.cosmosdb.operation.request_charge
METRIC_DB_CLIENT_RESPONSE_RETURNED_ROWS // db.client.response.returned_rows
METRIC_K8S_NODE_NETWORK_ERRORS // k8s.node.network.errors
METRIC_K8S_NODE_NETWORK_IO // k8s.node.network.io
METRIC_K8S_NODE_UPTIME // k8s.node.uptime
METRIC_K8S_POD_NETWORK_ERRORS // k8s.pod.network.errors
METRIC_K8S_POD_NETWORK_IO // k8s.pod.network.io
METRIC_K8S_POD_UPTIME // k8s.pod.uptime
METRIC_SYSTEM_UPTIME // system.uptime
METRIC_VCS_CHANGE_COUNT // vcs.change.count
METRIC_VCS_CHANGE_DURATION // vcs.change.duration
METRIC_VCS_CHANGE_TIME_TO_APPROVAL // vcs.change.time_to_approval
METRIC_VCS_CONTRIBUTOR_COUNT // vcs.contributor.count
METRIC_VCS_REF_COUNT // vcs.ref.count
METRIC_VCS_REF_LINES_DELTA // vcs.ref.lines_delta
METRIC_VCS_REF_REVISIONS_DELTA // vcs.ref.revisions_delta
METRIC_VCS_REF_TIME // vcs.ref.time
METRIC_VCS_REPOSITORY_COUNT // vcs.repository.count
ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL // db.cosmosdb.consistency_level
DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS // "BoundedStaleness"
DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX // "ConsistentPrefix"
DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL // "Eventual"
DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION // "Session"
DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG // "Strong"
ATTR_DB_COSMOSDB_REGIONS_CONTACTED // db.cosmosdb.regions_contacted
ATTR_DB_OPERATION_PARAMETER // (key) => `db.operation.parameter.${key}`
ATTR_DB_QUERY_SUMMARY // db.query.summary
ATTR_DB_RESPONSE_RETURNED_ROWS // db.response.returned_rows
ATTR_FEATURE_FLAG_CONTEXT_ID // feature_flag.context.id
ATTR_FEATURE_FLAG_EVALUATION_ERROR_MESSAGE // feature_flag.evaluation.error.message
ATTR_FEATURE_FLAG_EVALUATION_REASON // feature_flag.evaluation.reason
FEATURE_FLAG_EVALUATION_REASON_VALUE_CACHED // "cached"
FEATURE_FLAG_EVALUATION_REASON_VALUE_DEFAULT // "default"
FEATURE_FLAG_EVALUATION_REASON_VALUE_DISABLED // "disabled"
FEATURE_FLAG_EVALUATION_REASON_VALUE_ERROR // "error"
FEATURE_FLAG_EVALUATION_REASON_VALUE_SPLIT // "split"
FEATURE_FLAG_EVALUATION_REASON_VALUE_STALE // "stale"
FEATURE_FLAG_EVALUATION_REASON_VALUE_STATIC // "static"
FEATURE_FLAG_EVALUATION_REASON_VALUE_TARGETING_MATCH // "targeting_match"
FEATURE_FLAG_EVALUATION_REASON_VALUE_UNKNOWN // "unknown"
ATTR_FEATURE_FLAG_SET_ID // feature_flag.set.id
ATTR_FEATURE_FLAG_VERSION // feature_flag.version
ATTR_GEN_AI_OPENAI_RESPONSE_SYSTEM_FINGERPRINT // gen_ai.openai.response.system_fingerprint
GEN_AI_OPERATION_NAME_VALUE_EMBEDDINGS // "embeddings"
ATTR_GEN_AI_REQUEST_ENCODING_FORMATS // gen_ai.request.encoding_formats
GEN_AI_SYSTEM_VALUE_AWS_BEDROCK // "aws.bedrock"
GEN_AI_SYSTEM_VALUE_AZ_AI_INFERENCE // "az.ai.inference"
GEN_AI_SYSTEM_VALUE_IBM_WATSONX_AI // "ibm.watsonx.ai"
ATTR_GEO_CONTINENT_CODE // geo.continent.code
GEO_CONTINENT_CODE_VALUE_AF // "AF"
GEO_CONTINENT_CODE_VALUE_AN // "AN"
GEO_CONTINENT_CODE_VALUE_AS // "AS"
GEO_CONTINENT_CODE_VALUE_EU // "EU"
GEO_CONTINENT_CODE_VALUE_NA // "NA"
GEO_CONTINENT_CODE_VALUE_OC // "OC"
GEO_CONTINENT_CODE_VALUE_SA // "SA"
ATTR_GEO_COUNTRY_ISO_CODE // geo.country.iso_code
ATTR_GEO_LOCALITY_NAME // geo.locality.name
ATTR_GEO_LOCATION_LAT // geo.location.lat
ATTR_GEO_LOCATION_LON // geo.location.lon
ATTR_GEO_POSTAL_CODE // geo.postal_code
ATTR_GEO_REGION_ISO_CODE // geo.region.iso_code
ATTR_PROCESS_EXECUTABLE_BUILD_ID_HTLHASH // process.executable.build_id.htlhash
ATTR_PROCESS_LINUX_CGROUP // process.linux.cgroup
ATTR_USER_AGENT_SYNTHETIC_TYPE // user_agent.synthetic.type
USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT // "bot"
USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST // "test"
ATTR_VCS_CHANGE_ID // vcs.change.id
ATTR_VCS_CHANGE_STATE // vcs.change.state
VCS_CHANGE_STATE_VALUE_CLOSED // "closed"
VCS_CHANGE_STATE_VALUE_MERGED // "merged"
VCS_CHANGE_STATE_VALUE_OPEN // "open"
VCS_CHANGE_STATE_VALUE_WIP // "wip"
ATTR_VCS_CHANGE_TITLE // vcs.change.title
ATTR_VCS_LINE_CHANGE_TYPE // vcs.line_change.type
VCS_LINE_CHANGE_TYPE_VALUE_ADDED // "added"
VCS_LINE_CHANGE_TYPE_VALUE_REMOVED // "removed"
ATTR_VCS_REF_BASE_NAME // vcs.ref.base.name
ATTR_VCS_REF_BASE_REVISION // vcs.ref.base.revision
ATTR_VCS_REF_BASE_TYPE // vcs.ref.base.type
VCS_REF_BASE_TYPE_VALUE_BRANCH // "branch"
VCS_REF_BASE_TYPE_VALUE_TAG // "tag"
ATTR_VCS_REF_HEAD_NAME // vcs.ref.head.name
ATTR_VCS_REF_HEAD_REVISION // vcs.ref.head.revision
ATTR_VCS_REF_HEAD_TYPE // vcs.ref.head.type
VCS_REF_HEAD_TYPE_VALUE_BRANCH // "branch"
VCS_REF_HEAD_TYPE_VALUE_TAG // "tag"
ATTR_VCS_REF_TYPE // vcs.ref.type
VCS_REF_TYPE_VALUE_BRANCH // "branch"
VCS_REF_TYPE_VALUE_TAG // "tag"
ATTR_VCS_REVISION_DELTA_DIRECTION // vcs.revision_delta.direction
VCS_REVISION_DELTA_DIRECTION_VALUE_AHEAD // "ahead"
VCS_REVISION_DELTA_DIRECTION_VALUE_BEHIND // "behind"
```
</details>
### :bug: (Bug Fix)
### :books: (Refine Doc)

View File

@ -18,16 +18,6 @@
// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2
//----------------------------------------------------------------------------------------------------------
/**
* The ID of a running ECS task. The ID **MUST** be extracted from `task.arn`.
*
* @example 10838bed-421f-43ef-870a-f43feacbbb5b
* @example 23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_AWS_ECS_TASK_ID = 'aws.ecs.task.id' as const;
/**
* Uniquely identifies the framework API revision offered by a version (`os.version`) of the android operating system. More information can be found [here](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels).
*
@ -404,6 +394,16 @@ export const ATTR_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn' as const;
*/
export const ATTR_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family' as const;
/**
* The ID of a running ECS task. The ID **MUST** be extracted from `task.arn`.
*
* @example 10838bed-421f-43ef-870a-f43feacbbb5b
* @example 23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_AWS_ECS_TASK_ID = 'aws.ecs.task.id' as const;
/**
* The revision for the task definition used to create the ECS task.
*
@ -675,7 +675,7 @@ export const ATTR_CICD_PIPELINE_NAME = 'cicd.pipeline.name' as const;
export const ATTR_CICD_PIPELINE_RUN_ID = 'cicd.pipeline.run.id' as const;
/**
* The human readable name of a task within a pipeline. Task here most closely aligns with a [computing process](https://en.wikipedia.org/wiki/Pipeline_(computing)) in a pipeline. Other terms for tasks include commands, steps, and procedures.
* The human readable name of a task within a pipeline. Task here most closely aligns with a [computing process](https://wikipedia.org/wiki/Pipeline_(computing)) in a pipeline. Other terms for tasks include commands, steps, and procedures.
*
* @example Run GoLang Linter
* @example Go Build
@ -696,7 +696,7 @@ export const ATTR_CICD_PIPELINE_TASK_NAME = 'cicd.pipeline.task.name' as const;
export const ATTR_CICD_PIPELINE_TASK_RUN_ID = 'cicd.pipeline.task.run.id' as const;
/**
* The [URL](https://en.wikipedia.org/wiki/URL) of the pipeline run providing the complete address in order to locate and identify the pipeline run.
* The [URL](https://wikipedia.org/wiki/URL) of the pipeline run providing the complete address in order to locate and identify the pipeline run.
*
* @example https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763/job/26920038674?pr=1075
*
@ -1051,7 +1051,7 @@ export const ATTR_CLOUDFOUNDRY_APP_ID = 'cloudfoundry.app.id' as const;
* @example 0
* @example 1
*
* @note CloudFoundry defines the `instance_id` in the [Loggegator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope).
* @note CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope](https://github.com/cloudfoundry/loggregator-api#v2-envelope).
* It is used for logs and metrics emitted by CloudFoundry. It is
* supposed to contain the application instance index for applications
* deployed on the runtime.
@ -1648,8 +1648,13 @@ export const DB_CLIENT_CONNECTIONS_STATE_VALUE_USED = "used" as const;
* @example customers
*
* @note It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization.
* If the collection name is parsed from the query text, it **SHOULD** be the first collection name found in the query and it **SHOULD** match the value provided in the query text including any schema and database name prefix.
* For batch operations, if the individual operations are known to have the same collection name then that collection name **SHOULD** be used, otherwise `db.collection.name` **SHOULD NOT** be captured.
*
* The collection name **SHOULD NOT** be extracted from `db.query.text`,
* unless the query format is known to only ever have a single collection name present.
*
* For batch operations, if the individual operations are known to have the same collection name
* then that collection name **SHOULD** be used.
*
* This attribute has stability level RELEASE CANDIDATE.
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
@ -1693,6 +1698,44 @@ export const DB_COSMOSDB_CONNECTION_MODE_VALUE_DIRECT = "direct" as const;
*/
export const DB_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = "gateway" as const;
/**
* Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels).
*
* @example Eventual
* @example ConsistentPrefix
* @example BoundedStaleness
* @example Strong
* @example Session
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL = 'db.cosmosdb.consistency_level' as const;
/**
* Enum value "BoundedStaleness" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.
*/
export const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_BOUNDED_STALENESS = "BoundedStaleness" as const;
/**
* Enum value "ConsistentPrefix" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.
*/
export const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_CONSISTENT_PREFIX = "ConsistentPrefix" as const;
/**
* Enum value "Eventual" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.
*/
export const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_EVENTUAL = "Eventual" as const;
/**
* Enum value "Session" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.
*/
export const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_SESSION = "Session" as const;
/**
* Enum value "Strong" for attribute {@link ATTR_DB_COSMOSDB_CONSISTENCY_LEVEL}.
*/
export const DB_COSMOSDB_CONSISTENCY_LEVEL_VALUE_STRONG = "Strong" as const;
/**
* Deprecated, use `db.collection.name` instead.
*
@ -1705,9 +1748,11 @@ export const DB_COSMOSDB_CONNECTION_MODE_VALUE_GATEWAY = "gateway" as const;
export const ATTR_DB_COSMOSDB_CONTAINER = 'db.cosmosdb.container' as const;
/**
* Cosmos DB Operation Type.
* Deprecated, no replacement at this time.
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*
* @deprecated No replacement at this time.
*/
export const ATTR_DB_COSMOSDB_OPERATION_TYPE = 'db.cosmosdb.operation_type' as const;
@ -1787,7 +1832,18 @@ export const DB_COSMOSDB_OPERATION_TYPE_VALUE_REPLACE = "replace" as const;
export const DB_COSMOSDB_OPERATION_TYPE_VALUE_UPSERT = "upsert" as const;
/**
* RU consumed for that operation
* List of regions contacted during operation in the order that they were contacted. If there is more than one region listed, it indicates that the operation was performed on multiple regions i.e. cross-regional call.
*
* @example ["North Central US", "Australia East", "Australia Southeast"]
*
* @note Region name matches the format of `displayName` in [Azure Location API](https://learn.microsoft.com/rest/api/subscription/subscriptions/list-locations?view=rest-subscription-2021-10-01&tabs=HTTP#location)
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_DB_COSMOSDB_REGIONS_CONTACTED = 'db.cosmosdb.regions_contacted' as const;
/**
* Request units consumed for the operation.
*
* @example 46.18
* @example 1.0
@ -1797,7 +1853,7 @@ export const DB_COSMOSDB_OPERATION_TYPE_VALUE_UPSERT = "upsert" as const;
export const ATTR_DB_COSMOSDB_REQUEST_CHARGE = 'db.cosmosdb.request_charge' as const;
/**
* Request payload size in bytes
* Request payload size in bytes.
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
@ -1963,34 +2019,69 @@ export const ATTR_DB_OPERATION_BATCH_SIZE = 'db.operation.batch.size' as const;
* @example HMSET
* @example SELECT
*
* @note It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization.
* If the operation name is parsed from the query text, it **SHOULD** be the first operation name found in the query.
* For batch operations, if the individual operations are known to have the same operation name then that operation name **SHOULD** be used prepended by `BATCH `, otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database system specific term if more applicable.
* @note It is **RECOMMENDED** to capture the value as provided by the application
* without attempting to do any case normalization.
*
* The operation name **SHOULD NOT** be extracted from `db.query.text`,
* unless the query format is known to only ever have a single operation name present.
*
* For batch operations, if the individual operations are known to have the same operation name
* then that operation name **SHOULD** be used prepended by `BATCH `,
* otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database
* system specific term if more applicable.
*
* This attribute has stability level RELEASE CANDIDATE.
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_DB_OPERATION_NAME = 'db.operation.name' as const;
/**
* A database operation parameter, with `<key>` being the parameter name, and the attribute value being a string representation of the parameter value.
*
* @example someval
* @example 55
*
* @note If a parameter has no name and instead is referenced only by index, then `<key>` **SHOULD** be the 0-based index.
* If `db.query.text` is also captured, then `db.operation.parameter.<key>` **SHOULD** match up with the parameterized placeholders present in `db.query.text`.
* This attribute has stability level RELEASE CANDIDATE.
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_DB_OPERATION_PARAMETER = (key: string) => `db.operation.parameter.${key}`;
/**
* A query parameter used in `db.query.text`, with `<key>` being the parameter name, and the attribute value being a string representation of the parameter value.
*
* @example someval
* @example 55
*
* @note Query parameters should only be captured when `db.query.text` is parameterized with placeholders.
* If a parameter has no name and instead is referenced only by index, then `<key>` **SHOULD** be the 0-based index.
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*
* @deprecated Replaced by `db.operation.parameter`.
*/
export const ATTR_DB_QUERY_PARAMETER = (key: string) => `db.query.parameter.${key}`;
/**
* Low cardinality representation of a database query text.
*
* @example SELECT wuser_table
* @example INSERT shipping_details SELECT orders
* @example get user by id
*
* @note `db.query.summary` provides static summary of the query text. It describes a class of database queries and is useful as a grouping key, especially when analyzing telemetry for database calls involving complex queries.
* Summary may be available to the instrumentation through instrumentation hooks or other means. If it is not available, instrumentations that support query parsing **SHOULD** generate a summary following [Generating query summary](../../docs/database/database-spans.md#generating-a-summary-of-the-query-text) section.
* This attribute has stability level RELEASE CANDIDATE.
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_DB_QUERY_PARAMETER = (key: string) => `db.query.parameter.${key}`;
export const ATTR_DB_QUERY_SUMMARY = 'db.query.summary' as const;
/**
* The database query being executed.
*
* @example SELECT * FROM wuser_table where username = ?
* @example SET mykey "WuValue"
* @example SET mykey ?
*
* @note For sanitization see [Sanitization of `db.query.text`](../../docs/database/database-spans.md#sanitization-of-dbquerytext).
* For batch operations, if the individual operations are known to have the same query text then that query text **SHOULD** be used, otherwise all of the individual query texts **SHOULD** be concatenated with separator `; ` or some other database system specific separator if more applicable.
@ -2014,6 +2105,17 @@ export const ATTR_DB_QUERY_TEXT = 'db.query.text' as const;
*/
export const ATTR_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index' as const;
/**
* Number of rows returned by the operation.
*
* @example 10
* @example 30
* @example 1000
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_DB_RESPONSE_RETURNED_ROWS = 'db.response.returned_rows' as const;
/**
* Database response status code.
*
@ -2665,7 +2767,7 @@ export const ATTR_FAAS_DOCUMENT_TIME = 'faas.document.time' as const;
*
* @example 2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de
*
* @note * **AWS Lambda:** Use the (full) log stream name.
* @note - **AWS Lambda:** Use the (full) log stream name.
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
@ -2836,7 +2938,82 @@ export const FAAS_TRIGGER_VALUE_TIMER = "timer" as const;
export const ATTR_FAAS_VERSION = 'faas.version' as const;
/**
* The unique identifier of the feature flag.
* The unique identifier for the flag evaluation context. For example, the targeting key.
*
* @example 5157782b-2203-4c80-a857-dbbd5e7761db
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_FEATURE_FLAG_CONTEXT_ID = 'feature_flag.context.id' as const;
/**
* A message explaining the nature of an error occurring during flag evaluation.
*
* @example Flag `header-color` expected type `string` but found type `number`
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_FEATURE_FLAG_EVALUATION_ERROR_MESSAGE = 'feature_flag.evaluation.error.message' as const;
/**
* The reason code which shows how a feature flag value was determined.
*
* @example static
* @example targeting_match
* @example error
* @example default
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_FEATURE_FLAG_EVALUATION_REASON = 'feature_flag.evaluation.reason' as const;
/**
* Enum value "cached" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.
*/
export const FEATURE_FLAG_EVALUATION_REASON_VALUE_CACHED = "cached" as const;
/**
* Enum value "default" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.
*/
export const FEATURE_FLAG_EVALUATION_REASON_VALUE_DEFAULT = "default" as const;
/**
* Enum value "disabled" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.
*/
export const FEATURE_FLAG_EVALUATION_REASON_VALUE_DISABLED = "disabled" as const;
/**
* Enum value "error" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.
*/
export const FEATURE_FLAG_EVALUATION_REASON_VALUE_ERROR = "error" as const;
/**
* Enum value "split" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.
*/
export const FEATURE_FLAG_EVALUATION_REASON_VALUE_SPLIT = "split" as const;
/**
* Enum value "stale" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.
*/
export const FEATURE_FLAG_EVALUATION_REASON_VALUE_STALE = "stale" as const;
/**
* Enum value "static" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.
*/
export const FEATURE_FLAG_EVALUATION_REASON_VALUE_STATIC = "static" as const;
/**
* Enum value "targeting_match" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.
*/
export const FEATURE_FLAG_EVALUATION_REASON_VALUE_TARGETING_MATCH = "targeting_match" as const;
/**
* Enum value "unknown" for attribute {@link ATTR_FEATURE_FLAG_EVALUATION_REASON}.
*/
export const FEATURE_FLAG_EVALUATION_REASON_VALUE_UNKNOWN = "unknown" as const;
/**
* The lookup key of the feature flag.
*
* @example logo-color
*
@ -2845,7 +3022,7 @@ export const ATTR_FAAS_VERSION = 'faas.version' as const;
export const ATTR_FEATURE_FLAG_KEY = 'feature_flag.key' as const;
/**
* The name of the service provider that performs the flag evaluation.
* Identifies the feature flag provider.
*
* @example Flag Manager
*
@ -2854,7 +3031,18 @@ export const ATTR_FEATURE_FLAG_KEY = 'feature_flag.key' as const;
export const ATTR_FEATURE_FLAG_PROVIDER_NAME = 'feature_flag.provider_name' as const;
/**
* **SHOULD** be a semantic identifier for a value. If one is unavailable, a stringified version of the value can be used.
* The identifier of the [flag set](https://openfeature.dev/specification/glossary/#flag-set) to which the feature flag belongs.
*
* @example proj-1
* @example ab98sgs
* @example service1/dev
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_FEATURE_FLAG_SET_ID = 'feature_flag.set.id' as const;
/**
* A semantic identifier for an evaluated flag value.
*
* @example red
* @example true
@ -2864,14 +3052,20 @@ export const ATTR_FEATURE_FLAG_PROVIDER_NAME = 'feature_flag.provider_name' as c
* for referring to a value without including the value itself. This can
* provide additional context for understanding the meaning behind a value.
* For example, the variant `red` maybe be used for the value `#c05543`.
*
* A stringified version of the value can be used in situations where a
* semantic identifier is unavailable. String representation of the value
* should be determined by the implementer.
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_FEATURE_FLAG_VARIANT = 'feature_flag.variant' as const;
/**
* The version of the ruleset used during the evaluation. This may be any stable value which uniquely identifies the ruleset.
*
* @example 1
* @example 01ABCDEF
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_FEATURE_FLAG_VERSION = 'feature_flag.version' as const;
/**
* Time when the file was last accessed, in ISO 8601 format.
*
@ -3150,7 +3344,7 @@ export const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT_VALUE_TEXT = "text" as const;
export const ATTR_GEN_AI_OPENAI_REQUEST_SEED = 'gen_ai.openai.request.seed' as const;
/**
* The service tier requested. May be a specific tier, detault, or auto.
* The service tier requested. May be a specific tier, default, or auto.
*
* @example auto
* @example default
@ -3173,12 +3367,21 @@ export const GEN_AI_OPENAI_REQUEST_SERVICE_TIER_VALUE_DEFAULT = "default" as con
* The service tier used for the response.
*
* @example scale
* @example detault
* @example default
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_GEN_AI_OPENAI_RESPONSE_SERVICE_TIER = 'gen_ai.openai.response.service_tier' as const;
/**
* A fingerprint to track any eventual change in the Generative AI environment.
*
* @example fp_44709d6fcb
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_GEN_AI_OPENAI_RESPONSE_SYSTEM_FINGERPRINT = 'gen_ai.openai.response.system_fingerprint' as const;
/**
* The name of the operation being performed.
*
@ -3193,6 +3396,11 @@ export const ATTR_GEN_AI_OPERATION_NAME = 'gen_ai.operation.name' as const;
*/
export const GEN_AI_OPERATION_NAME_VALUE_CHAT = "chat" as const;
/**
* Enum value "embeddings" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.
*/
export const GEN_AI_OPERATION_NAME_VALUE_EMBEDDINGS = "embeddings" as const;
/**
* Enum value "text_completion" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}.
*/
@ -3209,6 +3417,18 @@ export const GEN_AI_OPERATION_NAME_VALUE_TEXT_COMPLETION = "text_completion" as
*/
export const ATTR_GEN_AI_PROMPT = 'gen_ai.prompt' as const;
/**
* The encoding formats requested in an embeddings operation, if specified.
*
* @example ["base64"]
* @example ["float", "binary"]
*
* @note In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request.
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_GEN_AI_REQUEST_ENCODING_FORMATS = 'gen_ai.request.encoding_formats' as const;
/**
* The frequency penalty setting for the GenAI request.
*
@ -3333,11 +3553,26 @@ export const ATTR_GEN_AI_SYSTEM = 'gen_ai.system' as const;
*/
export const GEN_AI_SYSTEM_VALUE_ANTHROPIC = "anthropic" as const;
/**
* Enum value "aws.bedrock" for attribute {@link ATTR_GEN_AI_SYSTEM}.
*/
export const GEN_AI_SYSTEM_VALUE_AWS_BEDROCK = "aws.bedrock" as const;
/**
* Enum value "az.ai.inference" for attribute {@link ATTR_GEN_AI_SYSTEM}.
*/
export const GEN_AI_SYSTEM_VALUE_AZ_AI_INFERENCE = "az.ai.inference" as const;
/**
* Enum value "cohere" for attribute {@link ATTR_GEN_AI_SYSTEM}.
*/
export const GEN_AI_SYSTEM_VALUE_COHERE = "cohere" as const;
/**
* Enum value "ibm.watsonx.ai" for attribute {@link ATTR_GEN_AI_SYSTEM}.
*/
export const GEN_AI_SYSTEM_VALUE_IBM_WATSONX_AI = "ibm.watsonx.ai" as const;
/**
* Enum value "openai" for attribute {@link ATTR_GEN_AI_SYSTEM}.
*/
@ -3408,6 +3643,103 @@ export const ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = 'gen_ai.usage.output_tokens' as c
*/
export const ATTR_GEN_AI_USAGE_PROMPT_TOKENS = 'gen_ai.usage.prompt_tokens' as const;
/**
* Two-letter code representing continents name.
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_GEO_CONTINENT_CODE = 'geo.continent.code' as const;
/**
* Enum value "AF" for attribute {@link ATTR_GEO_CONTINENT_CODE}.
*/
export const GEO_CONTINENT_CODE_VALUE_AF = "AF" as const;
/**
* Enum value "AN" for attribute {@link ATTR_GEO_CONTINENT_CODE}.
*/
export const GEO_CONTINENT_CODE_VALUE_AN = "AN" as const;
/**
* Enum value "AS" for attribute {@link ATTR_GEO_CONTINENT_CODE}.
*/
export const GEO_CONTINENT_CODE_VALUE_AS = "AS" as const;
/**
* Enum value "EU" for attribute {@link ATTR_GEO_CONTINENT_CODE}.
*/
export const GEO_CONTINENT_CODE_VALUE_EU = "EU" as const;
/**
* Enum value "NA" for attribute {@link ATTR_GEO_CONTINENT_CODE}.
*/
export const GEO_CONTINENT_CODE_VALUE_NA = "NA" as const;
/**
* Enum value "OC" for attribute {@link ATTR_GEO_CONTINENT_CODE}.
*/
export const GEO_CONTINENT_CODE_VALUE_OC = "OC" as const;
/**
* Enum value "SA" for attribute {@link ATTR_GEO_CONTINENT_CODE}.
*/
export const GEO_CONTINENT_CODE_VALUE_SA = "SA" as const;
/**
* Two-letter ISO Country Code ([ISO 3166-1 alpha2](https://wikipedia.org/wiki/ISO_3166-1#Codes)).
*
* @example CA
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_GEO_COUNTRY_ISO_CODE = 'geo.country.iso_code' as const;
/**
* Locality name. Represents the name of a city, town, village, or similar populated place.
*
* @example Montreal
* @example Berlin
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_GEO_LOCALITY_NAME = 'geo.locality.name' as const;
/**
* Latitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84).
*
* @example 45.505918
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_GEO_LOCATION_LAT = 'geo.location.lat' as const;
/**
* Longitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84).
*
* @example -73.61483
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_GEO_LOCATION_LON = 'geo.location.lon' as const;
/**
* Postal code associated with the location. Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country.
*
* @example 94040
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_GEO_POSTAL_CODE = 'geo.postal_code' as const;
/**
* Region ISO code ([ISO 3166-2](https://wikipedia.org/wiki/ISO_3166-2)).
*
* @example CA-QC
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_GEO_REGION_ISO_CODE = 'geo.region.iso_code' as const;
/**
* The type of memory.
*
@ -5845,6 +6177,17 @@ export const ATTR_PROCESS_EXECUTABLE_BUILD_ID_GO = 'process.executable.build_id.
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_PROCESS_EXECUTABLE_BUILD_ID_HTLHASH = 'process.executable.build_id.htlhash' as const;
/**
* "Deprecated, use `process.executable.build_id.htlhash` instead."
*
* @example 600DCAFE4A110000F2BF38C493F5FB92
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*
* @deprecated Replaced by `process.executable.build_id.htlhash`
*/
export const ATTR_PROCESS_EXECUTABLE_BUILD_ID_PROFILING = 'process.executable.build_id.profiling' as const;
/**
@ -5899,6 +6242,18 @@ export const ATTR_PROCESS_GROUP_LEADER_PID = 'process.group_leader.pid' as const
*/
export const ATTR_PROCESS_INTERACTIVE = 'process.interactive' as const;
/**
* The control group associated with the process.
*
* @example 1:name=systemd:/user.slice/user-1000.slice/session-3.scope
* @example 0::/user.slice/user-1000.slice/user@1000.service/tmux-spawn-0267755b-4639-4a27-90ed-f19f88e53748.scope
*
* @note Control groups (cgroups) are a kernel feature used to organize and manage process resources. This attribute provides the path(s) to the cgroup(s) associated with the process, which should match the contents of the [/proc/<PID>/cgroup](https://man7.org/linux/man-pages/man7/cgroups.7.html) file.
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_PROCESS_LINUX_CGROUP = 'process.linux.cgroup' as const;
/**
* The username of the user that owns the process.
*
@ -6494,7 +6849,7 @@ export const RPC_SYSTEM_VALUE_JAVA_RMI = "java_rmi" as const;
*
* UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is
* needed. Similar to what can be seen in the man page for the
* [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/machine-id.html) file, the underlying
* [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying
* data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it
* or not via another resource attribute.
*
@ -6975,7 +7330,7 @@ export const ATTR_TELEMETRY_DISTRO_NAME = 'telemetry.distro.name' as const;
export const ATTR_TELEMETRY_DISTRO_VERSION = 'telemetry.distro.version' as const;
/**
* The fully qualified human readable name of the [test case](https://en.wikipedia.org/wiki/Test_case).
* The fully qualified human readable name of the [test case](https://wikipedia.org/wiki/Test_case).
*
* @example org.example.TestCase1.test1
* @example example/tests/TestCase1.test1
@ -7006,7 +7361,7 @@ export const TEST_CASE_RESULT_STATUS_VALUE_FAIL = "fail" as const;
export const TEST_CASE_RESULT_STATUS_VALUE_PASS = "pass" as const;
/**
* The human readable name of a [test suite](https://en.wikipedia.org/wiki/Test_suite).
* The human readable name of a [test suite](https://wikipedia.org/wiki/Test_suite).
*
* @example TestSuite1
*
@ -7514,6 +7869,25 @@ export const ATTR_USER_ROLES = 'user.roles' as const;
*/
export const ATTR_USER_AGENT_NAME = 'user_agent.name' as const;
/**
* Specifies the category of synthetic traffic, such as tests or bots.
*
* @note This attribute **MAY** be derived from the contents of the `user_agent.original` attribute. Components that populate the attribute are responsible for determining what they consider to be synthetic bot or test traffic. This attribute can either be set for self-identification purposes, or on telemetry detected to be generated as a result of a synthetic request. This attribute is useful for distinguishing between genuine client traffic and synthetic traffic generated by bots or tests.
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_USER_AGENT_SYNTHETIC_TYPE = 'user_agent.synthetic.type' as const;
/**
* Enum value "bot" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.
*/
export const USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = "bot" as const;
/**
* Enum value "test" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.
*/
export const USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = "test" as const;
/**
* Version of the user-agent extracted from original. Usually refers to the browser's version
*
@ -7588,16 +7962,47 @@ export const V8JS_HEAP_SPACE_NAME_VALUE_NEW_SPACE = "new_space" as const;
export const V8JS_HEAP_SPACE_NAME_VALUE_OLD_SPACE = "old_space" as const;
/**
* The ID of the change (pull request/merge request) if applicable. This is usually a unique (within repository) identifier generated by the VCS system.
* The ID of the change (pull request/merge request/changelist) if applicable. This is usually a unique (within repository) identifier generated by the VCS system.
*
* @example 123
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_VCS_REPOSITORY_CHANGE_ID = 'vcs.repository.change.id' as const;
export const ATTR_VCS_CHANGE_ID = 'vcs.change.id' as const;
/**
* The human readable title of the change (pull request/merge request). This title is often a brief summary of the change and may get merged in to a ref as the commit summary.
* The state of the change (pull request/merge request/changelist).
*
* @example open
* @example closed
* @example merged
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_VCS_CHANGE_STATE = 'vcs.change.state' as const;
/**
* Enum value "closed" for attribute {@link ATTR_VCS_CHANGE_STATE}.
*/
export const VCS_CHANGE_STATE_VALUE_CLOSED = "closed" as const;
/**
* Enum value "merged" for attribute {@link ATTR_VCS_CHANGE_STATE}.
*/
export const VCS_CHANGE_STATE_VALUE_MERGED = "merged" as const;
/**
* Enum value "open" for attribute {@link ATTR_VCS_CHANGE_STATE}.
*/
export const VCS_CHANGE_STATE_VALUE_OPEN = "open" as const;
/**
* Enum value "wip" for attribute {@link ATTR_VCS_CHANGE_STATE}.
*/
export const VCS_CHANGE_STATE_VALUE_WIP = "wip" as const;
/**
* The human readable title of the change (pull request/merge request/changelist). This title is often a brief summary of the change and may get merged in to a ref as the commit summary.
*
* @example Fixes broken thing
* @example feat: add my new feature
@ -7605,7 +8010,27 @@ export const ATTR_VCS_REPOSITORY_CHANGE_ID = 'vcs.repository.change.id' as const
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_VCS_REPOSITORY_CHANGE_TITLE = 'vcs.repository.change.title' as const;
export const ATTR_VCS_CHANGE_TITLE = 'vcs.change.title' as const;
/**
* The type of line change being measured on a branch or change.
*
* @example added
* @example removed
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_VCS_LINE_CHANGE_TYPE = 'vcs.line_change.type' as const;
/**
* Enum value "added" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}.
*/
export const VCS_LINE_CHANGE_TYPE_VALUE_ADDED = "added" as const;
/**
* Enum value "removed" for attribute {@link ATTR_VCS_LINE_CHANGE_TYPE}.
*/
export const VCS_LINE_CHANGE_TYPE_VALUE_REMOVED = "removed" as const;
/**
* The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository.
@ -7615,7 +8040,7 @@ export const ATTR_VCS_REPOSITORY_CHANGE_TITLE = 'vcs.repository.change.title' as
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_VCS_REPOSITORY_REF_NAME = 'vcs.repository.ref.name' as const;
export const ATTR_VCS_REF_BASE_NAME = 'vcs.ref.base.name' as const;
/**
* The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN.
@ -7631,13 +8056,13 @@ export const ATTR_VCS_REPOSITORY_REF_NAME = 'vcs.repository.ref.name' as const;
* not necessarily have to be a hash; it can simply define a
* [revision number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html)
* which is an integer that is monotonically increasing. In cases where
* it is identical to the `ref.name`, it **SHOULD** still be included. It is
* it is identical to the `ref.base.name`, it **SHOULD** still be included. It is
* up to the implementer to decide which value to set as the revision
* based on the VCS system and situational context.
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_VCS_REPOSITORY_REF_REVISION = 'vcs.repository.ref.revision' as const;
export const ATTR_VCS_REF_BASE_REVISION = 'vcs.ref.base.revision' as const;
/**
* The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository.
@ -7647,6 +8072,150 @@ export const ATTR_VCS_REPOSITORY_REF_REVISION = 'vcs.repository.ref.revision' as
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_VCS_REF_BASE_TYPE = 'vcs.ref.base.type' as const;
/**
* Enum value "branch" for attribute {@link ATTR_VCS_REF_BASE_TYPE}.
*/
export const VCS_REF_BASE_TYPE_VALUE_BRANCH = "branch" as const;
/**
* Enum value "tag" for attribute {@link ATTR_VCS_REF_BASE_TYPE}.
*/
export const VCS_REF_BASE_TYPE_VALUE_TAG = "tag" as const;
/**
* The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository.
*
* @example my-feature-branch
* @example tag-1-test
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_VCS_REF_HEAD_NAME = 'vcs.ref.head.name' as const;
/**
* The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN.
*
* @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc
* @example main
* @example 123
* @example HEAD
*
* @note The revision can be a full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf),
* of the recorded change to a ref within a repository pointing to a
* commit [commit](https://git-scm.com/docs/git-commit) object. It does
* not necessarily have to be a hash; it can simply define a
* [revision number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html)
* which is an integer that is monotonically increasing. In cases where
* it is identical to the `ref.head.name`, it **SHOULD** still be included. It is
* up to the implementer to decide which value to set as the revision
* based on the VCS system and situational context.
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_VCS_REF_HEAD_REVISION = 'vcs.ref.head.revision' as const;
/**
* The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository.
*
* @example branch
* @example tag
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_VCS_REF_HEAD_TYPE = 'vcs.ref.head.type' as const;
/**
* Enum value "branch" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}.
*/
export const VCS_REF_HEAD_TYPE_VALUE_BRANCH = "branch" as const;
/**
* Enum value "tag" for attribute {@link ATTR_VCS_REF_HEAD_TYPE}.
*/
export const VCS_REF_HEAD_TYPE_VALUE_TAG = "tag" as const;
/**
* The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository.
*
* @example branch
* @example tag
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_VCS_REF_TYPE = 'vcs.ref.type' as const;
/**
* Enum value "branch" for attribute {@link ATTR_VCS_REF_TYPE}.
*/
export const VCS_REF_TYPE_VALUE_BRANCH = "branch" as const;
/**
* Enum value "tag" for attribute {@link ATTR_VCS_REF_TYPE}.
*/
export const VCS_REF_TYPE_VALUE_TAG = "tag" as const;
/**
* Deprecated, use `vcs.change.id` instead.
*
* @example 123
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*
* @deprecated Deprecated, use `vcs.change.id` instead.
*/
export const ATTR_VCS_REPOSITORY_CHANGE_ID = 'vcs.repository.change.id' as const;
/**
* Deprecated, use `vcs.change.title` instead.
*
* @example Fixes broken thing
* @example feat: add my new feature
* @example [chore] update dependency
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*
* @deprecated Deprecated, use `vcs.change.title` instead.
*/
export const ATTR_VCS_REPOSITORY_CHANGE_TITLE = 'vcs.repository.change.title' as const;
/**
* Deprecated, use `vcs.ref.head.name` instead.
*
* @example my-feature-branch
* @example tag-1-test
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*
* @deprecated Deprecated, use `vcs.ref.head.name` instead.
*/
export const ATTR_VCS_REPOSITORY_REF_NAME = 'vcs.repository.ref.name' as const;
/**
* Deprecated, use `vcs.ref.head.revision` instead.
*
* @example 9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc
* @example main
* @example 123
* @example HEAD
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*
* @deprecated Deprecated, use `vcs.ref.head.revision` instead.
*/
export const ATTR_VCS_REPOSITORY_REF_REVISION = 'vcs.repository.ref.revision' as const;
/**
* Deprecated, use `vcs.ref.head.type` instead.
*
* @example branch
* @example tag
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*
* @deprecated Deprecated, use `vcs.ref.head.type` instead.
*/
export const ATTR_VCS_REPOSITORY_REF_TYPE = 'vcs.repository.ref.type' as const;
/**
@ -7660,7 +8229,7 @@ export const VCS_REPOSITORY_REF_TYPE_VALUE_BRANCH = "branch" as const;
export const VCS_REPOSITORY_REF_TYPE_VALUE_TAG = "tag" as const;
/**
* The [URL](https://en.wikipedia.org/wiki/URL) of the repository providing the complete address in order to locate and identify the repository.
* The [URL](https://wikipedia.org/wiki/URL) of the repository providing the complete address in order to locate and identify the repository.
*
* @example https://github.com/opentelemetry/open-telemetry-collector-contrib
* @example https://gitlab.com/my-org/my-project/my-projects-project/repo
@ -7669,6 +8238,26 @@ export const VCS_REPOSITORY_REF_TYPE_VALUE_TAG = "tag" as const;
*/
export const ATTR_VCS_REPOSITORY_URL_FULL = 'vcs.repository.url.full' as const;
/**
* The type of revision comparison.
*
* @example ahead
* @example behind
*
* @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const ATTR_VCS_REVISION_DELTA_DIRECTION = 'vcs.revision_delta.direction' as const;
/**
* Enum value "ahead" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}.
*/
export const VCS_REVISION_DELTA_DIRECTION_VALUE_AHEAD = "ahead" as const;
/**
* Enum value "behind" for attribute {@link ATTR_VCS_REVISION_DELTA_DIRECTION}.
*/
export const VCS_REVISION_DELTA_DIRECTION_VALUE_BEHIND = "behind" as const;
/**
* Additional description of the web engine (e.g. detailed version and edition information).
*

View File

@ -63,6 +63,16 @@ export const METRIC_CONTAINER_MEMORY_USAGE = 'container.memory.usage' as const;
*/
export const METRIC_CONTAINER_NETWORK_IO = 'container.network.io' as const;
/**
* The time the container has been running
*
* @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.
* The actual accuracy would depend on the instrumentation and operating system.
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_CONTAINER_UPTIME = 'container.uptime' as const;
/**
* The number of connections that are currently in state described by the `state` attribute
*
@ -207,6 +217,20 @@ export const METRIC_DB_CLIENT_CONNECTIONS_USE_TIME = 'db.client.connections.use_
*/
export const METRIC_DB_CLIENT_CONNECTIONS_WAIT_TIME = 'db.client.connections.wait_time' as const;
/**
* Number of active client instances
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_DB_CLIENT_COSMOSDB_ACTIVE_INSTANCE_COUNT = 'db.client.cosmosdb.active_instance.count' as const;
/**
* [Request charge](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the operation
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_DB_CLIENT_COSMOSDB_OPERATION_REQUEST_CHARGE = 'db.client.cosmosdb.operation.request_charge' as const;
/**
* Duration of database client operations.
*
@ -216,6 +240,13 @@ export const METRIC_DB_CLIENT_CONNECTIONS_WAIT_TIME = 'db.client.connections.wai
*/
export const METRIC_DB_CLIENT_OPERATION_DURATION = 'db.client.operation.duration' as const;
/**
* The actual number of records returned by the database operation.
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_DB_CLIENT_RESPONSE_RETURNED_ROWS = 'db.client.response.returned_rows' as const;
/**
* Measures the time taken to perform a DNS lookup.
*
@ -770,6 +801,30 @@ export const METRIC_K8S_NODE_CPU_USAGE = 'k8s.node.cpu.usage' as const;
*/
export const METRIC_K8S_NODE_MEMORY_USAGE = 'k8s.node.memory.usage' as const;
/**
* Node network errors
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_K8S_NODE_NETWORK_ERRORS = 'k8s.node.network.errors' as const;
/**
* Network bytes for the Node
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_K8S_NODE_NETWORK_IO = 'k8s.node.network.io' as const;
/**
* The time the Node has been running
*
* @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.
* The actual accuracy would depend on the instrumentation and operating system.
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_K8S_NODE_UPTIME = 'k8s.node.uptime' as const;
/**
* Total CPU time consumed
*
@ -797,6 +852,30 @@ export const METRIC_K8S_POD_CPU_USAGE = 'k8s.pod.cpu.usage' as const;
*/
export const METRIC_K8S_POD_MEMORY_USAGE = 'k8s.pod.memory.usage' as const;
/**
* Pod network errors
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_K8S_POD_NETWORK_ERRORS = 'k8s.pod.network.errors' as const;
/**
* Network bytes for the Pod
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_K8S_POD_NETWORK_IO = 'k8s.pod.network.io' as const;
/**
* The time the Pod has been running
*
* @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.
* The actual accuracy would depend on the instrumentation and operating system.
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_K8S_POD_UPTIME = 'k8s.pod.uptime' as const;
/**
* Number of messages that were delivered to the application.
*
@ -1042,7 +1121,9 @@ export const METRIC_PROCESS_THREAD_COUNT = 'process.thread.count' as const;
/**
* The time the process has been running.
*
* @note Instrumentations **SHOULD** use counter with type `double` and measure uptime with at least millisecond precision
* @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.
* The actual accuracy would depend on the instrumentation and operating system.
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_PROCESS_UPTIME = 'process.uptime' as const;
@ -1391,6 +1472,16 @@ export const METRIC_SYSTEM_PROCESS_COUNT = 'system.process.count' as const;
*/
export const METRIC_SYSTEM_PROCESS_CREATED = 'system.process.created' as const;
/**
* The time the system has been running
*
* @note Instrumentations **SHOULD** use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.
* The actual accuracy would depend on the instrumentation and operating system.
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_SYSTEM_UPTIME = 'system.uptime' as const;
/**
* Garbage collection duration.
*
@ -1436,3 +1527,73 @@ export const METRIC_V8JS_MEMORY_HEAP_LIMIT = 'v8js.memory.heap.limit' as const;
*/
export const METRIC_V8JS_MEMORY_HEAP_USED = 'v8js.memory.heap.used' as const;
/**
* The number of changes (pull requests/merge requests/changelists) in a repository, categorized by their state (e.g. open or merged)
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_VCS_CHANGE_COUNT = 'vcs.change.count' as const;
/**
* The time duration a change (pull request/merge request/changelist) has been in a given state.
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_VCS_CHANGE_DURATION = 'vcs.change.duration' as const;
/**
* The amount of time since its creation it took a change (pull request/merge request/changelist) to get the first approval
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_VCS_CHANGE_TIME_TO_APPROVAL = 'vcs.change.time_to_approval' as const;
/**
* The number of unique contributors to a repository
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_VCS_CONTRIBUTOR_COUNT = 'vcs.contributor.count' as const;
/**
* The number of refs of type branch or tag in a repository
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_VCS_REF_COUNT = 'vcs.ref.count' as const;
/**
* The number of lines added/removed in a ref (branch) relative to the ref from the `vcs.ref.base.name` attribute
*
* @note This metric should be reported for each `vcs.line_change.type` value. For example if a ref added 3 lines and removed 2 lines,
* instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers).
* If number of lines added/removed should be calculated from the start of time, then `vcs.ref.base.name` **SHOULD** be set to an empty string.
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_VCS_REF_LINES_DELTA = 'vcs.ref.lines_delta' as const;
/**
* The number of revisions (commits) a ref (branch) is ahead/behind the branch from the `vcs.ref.base.name` attribute
*
* @note This metric should be reported for each `vcs.revision_delta.direction` value. For example if branch `a` is 3 commits behind and 2 commits ahead of `trunk`,
* instrumentation **SHOULD** report two measurements: 3 and 2 (both positive numbers) and `vcs.ref.base.name` is set to `trunk`.
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_VCS_REF_REVISIONS_DELTA = 'vcs.ref.revisions_delta' as const;
/**
* Time a ref (branch) created from the default branch (trunk) has existed. The `ref.type` attribute will always be `branch`
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_VCS_REF_TIME = 'vcs.ref.time' as const;
/**
* The number of repositories in an organization
*
* @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
*/
export const METRIC_VCS_REPOSITORY_COUNT = 'vcs.repository.count' as const;

View File

@ -18,127 +18,6 @@
// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2
//----------------------------------------------------------------------------------------------------------
/**
* Rate-limiting result, shows whether the lease was acquired or contains a rejection reason
*
* @example acquired
* @example request_canceled
*/
export const ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result' as const;
/**
* Enum value "acquired" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.
*/
export const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = "acquired" as const;
/**
* Enum value "endpoint_limiter" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.
*/
export const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = "endpoint_limiter" as const;
/**
* Enum value "global_limiter" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.
*/
export const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = "global_limiter" as const;
/**
* Enum value "request_canceled" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.
*/
export const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = "request_canceled" as const;
/**
* The language of the telemetry SDK.
*/
export const ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language' as const;
/**
* Enum value "cpp" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_CPP = "cpp" as const;
/**
* Enum value "dotnet" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = "dotnet" as const;
/**
* Enum value "erlang" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = "erlang" as const;
/**
* Enum value "go" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_GO = "go" as const;
/**
* Enum value "java" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = "java" as const;
/**
* Enum value "nodejs" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = "nodejs" as const;
/**
* Enum value "php" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_PHP = "php" as const;
/**
* Enum value "python" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = "python" as const;
/**
* Enum value "ruby" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = "ruby" as const;
/**
* Enum value "rust" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_RUST = "rust" as const;
/**
* Enum value "swift" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = "swift" as const;
/**
* Enum value "webjs" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = "webjs" as const;
/**
* The name of the telemetry SDK as defined above.
*
* @example opentelemetry
*
* @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`.
* If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the
* `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point
* or another suitable identifier depending on the language.
* The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case.
* All custom identifiers **SHOULD** be stable across different versions of an implementation.
*/
export const ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name' as const;
/**
* The version string of the telemetry SDK.
*
* @example 1.2.3
*/
export const ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version' as const;
/**
* Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception.
*
* @example Contoso.MyHandler
*/
export const ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type' as const;
/**
* ASP.NET Core exception middleware handling result
*
@ -167,6 +46,13 @@ export const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = "skipped" a
*/
export const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = "unhandled" as const;
/**
* Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception.
*
* @example Contoso.MyHandler
*/
export const ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type' as const;
/**
* Rate limiting policy name.
*
@ -176,6 +62,34 @@ export const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = "unhandle
*/
export const ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy' as const;
/**
* Rate-limiting result, shows whether the lease was acquired or contains a rejection reason
*
* @example acquired
* @example request_canceled
*/
export const ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result' as const;
/**
* Enum value "acquired" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.
*/
export const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = "acquired" as const;
/**
* Enum value "endpoint_limiter" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.
*/
export const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = "endpoint_limiter" as const;
/**
* Enum value "global_limiter" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.
*/
export const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = "global_limiter" as const;
/**
* Enum value "request_canceled" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.
*/
export const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = "request_canceled" as const;
/**
* Flag indicating if request was handled by the application pipeline.
*
@ -565,7 +479,7 @@ export const ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address' as const;
export const ATTR_NETWORK_PEER_PORT = 'network.peer.port' as const;
/**
* [OSI application layer](https://osi-model.com/application-layer/) or non-OSI equivalent.
* [OSI application layer](https://wikipedia.org/wiki/Application_layer) or non-OSI equivalent.
*
* @example amqp
* @example http
@ -586,7 +500,7 @@ export const ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name' as const;
export const ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version' as const;
/**
* [OSI transport layer](https://osi-model.com/transport-layer/) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication).
* [OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication).
*
* @example tcp
* @example udp
@ -625,7 +539,7 @@ export const NETWORK_TRANSPORT_VALUE_UDP = "udp" as const;
export const NETWORK_TRANSPORT_VALUE_UNIX = "unix" as const;
/**
* [OSI network layer](https://osi-model.com/network-layer/) or non-OSI equivalent.
* [OSI network layer](https://wikipedia.org/wiki/Network_layer) or non-OSI equivalent.
*
* @example ipv4
* @example ipv6
@ -765,6 +679,92 @@ export const SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = "server_sent_events" a
*/
export const SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = "web_sockets" as const;
/**
* The language of the telemetry SDK.
*/
export const ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language' as const;
/**
* Enum value "cpp" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_CPP = "cpp" as const;
/**
* Enum value "dotnet" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = "dotnet" as const;
/**
* Enum value "erlang" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = "erlang" as const;
/**
* Enum value "go" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_GO = "go" as const;
/**
* Enum value "java" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = "java" as const;
/**
* Enum value "nodejs" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = "nodejs" as const;
/**
* Enum value "php" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_PHP = "php" as const;
/**
* Enum value "python" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = "python" as const;
/**
* Enum value "ruby" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = "ruby" as const;
/**
* Enum value "rust" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_RUST = "rust" as const;
/**
* Enum value "swift" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = "swift" as const;
/**
* Enum value "webjs" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.
*/
export const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = "webjs" as const;
/**
* The name of the telemetry SDK as defined above.
*
* @example opentelemetry
*
* @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`.
* If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the
* `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point
* or another suitable identifier depending on the language.
* The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case.
* All custom identifiers **SHOULD** be stable across different versions of an implementation.
*/
export const ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name' as const;
/**
* The version string of the telemetry SDK.
*
* @example 1.2.3
*/
export const ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version' as const;
/**
* The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component
*
@ -778,9 +778,29 @@ export const ATTR_URL_FRAGMENT = 'url.fragment' as const;
* @example https://www.foo.bar/search?q=OpenTelemetry#SemConv
* @example //localhost
*
* @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless.
* `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`.
* `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed). Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it.
* @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment
* is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless.
*
* `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`.
* In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`.
*
* `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed).
*
* Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it.
*
*
* Query string values for the following keys **SHOULD** be redacted by default and replaced by the
* value `REDACTED`:
*
* - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)
* - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)
* - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token)
* - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls)
*
* This list is subject to change over time.
*
* When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.
* `https://www.example.com/path?color=blue&sig=REDACTED`.
*/
export const ATTR_URL_FULL = 'url.full' as const;
@ -799,6 +819,19 @@ export const ATTR_URL_PATH = 'url.path' as const;
* @example q=OpenTelemetry
*
* @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it.
*
*
* Query string values for the following keys **SHOULD** be redacted by default and replaced by the value `REDACTED`:
*
* - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)
* - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)
* - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token)
* - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls)
*
* This list is subject to change over time.
*
* When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.
* `q=OpenTelemetry&sig=REDACTED`.
*/
export const ATTR_URL_QUERY = 'url.query' as const;