Skip to content

Commit f9faadf

Browse files
committed
Automatically add version metadata to Resource attribute.
1 parent 76fb3b2 commit f9faadf

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

.changeset/proud-pots-tap.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@microlabs/otel-cf-workers': patch
3+
---
4+
5+
Add support to automatically extract version information from the VersionMeta binding

examples/worker/wrangler.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,6 @@ bindings = [
1515
[[migrations]]
1616
tag = "v1" # Should be unique for each entry
1717
new_classes = ["TestOtelDO"]
18+
19+
[version_metadata]
20+
binding = "CF_VERSION_METADATA"

src/sdk.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,18 @@ export function isAlarm(trigger: Trigger): trigger is 'do-alarm' {
4444
return trigger === 'do-alarm'
4545
}
4646

47-
const createResource = (config: ResolvedTraceConfig): Resource => {
47+
function findVersionMeta(): WorkerVersionMetadata | undefined {
48+
return Object.values(env).find((binding: any) => {
49+
return (
50+
Object.getPrototypeOf(binding).constructor.name === 'Object' &&
51+
binding.id !== undefined &&
52+
binding.tag !== undefined
53+
)
54+
})
55+
}
56+
57+
const createResource = (config: ResolvedTraceConfig, versionMeta?: WorkerVersionMetadata): Resource => {
58+
console.log({ versionMeta })
4859
const workerResourceAttrs = {
4960
'cloud.provider': 'cloudflare',
5061
'cloud.platform': 'cloudflare.workers',
@@ -54,6 +65,9 @@ const createResource = (config: ResolvedTraceConfig): Resource => {
5465
'telemetry.sdk.name': '@microlabs/otel-cf-workers',
5566
'telemetry.sdk.version': versions['@microlabs/otel-cf-workers'],
5667
'telemetry.sdk.build.node_version': versions['node'],
68+
'cf.worker.version.id': versionMeta?.id,
69+
'cf.worker.version.tag': versionMeta?.tag,
70+
'cf.worker.version.timestamp': versionMeta?.timestamp,
5771
}
5872
const serviceResource = resourceFromAttributes({
5973
'service.name': config.service.name,
@@ -75,6 +89,7 @@ function init(config: ResolvedTraceConfig): void {
7589
}
7690
propagation.setGlobalPropagator(config.propagator)
7791
const resource = createResource(config)
92+
const resource = createResource(config, findVersionMeta())
7893

7994
const provider = new WorkerTracerProvider(config.spanProcessors, resource)
8095
provider.register()

0 commit comments

Comments
 (0)