Files
AFFiNE-Mirror/packages/backend/server/src/plugins/gcloud/metrics.ts
T
DarkSky 40f3337d45 feat: bump deps (#14076)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Chores**
* Updated core dependencies, developer tooling and Rust toolchain to
newer stable versions across the repo
* Upgraded Storybook to v10 and improved ESM path resolution for
storybook tooling
* Broadened native binding platform/architecture support and
strengthened native module version validation, loading and WASI handling

* **New Features**
* Exposed an additional native text export for consumers (enhanced
JS/native surface)

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-12-10 03:52:14 +08:00

51 lines
1.4 KiB
TypeScript

import { TraceExporter } from '@google-cloud/opentelemetry-cloud-trace-exporter';
import { GcpDetectorSync } from '@google-cloud/opentelemetry-resource-util';
import { Global, Injectable, Module, Provider } from '@nestjs/common';
import {
type Resource,
resourceFromAttributes,
} from '@opentelemetry/resources';
import { SpanExporter } from '@opentelemetry/sdk-trace-node';
import {
ATTR_CONTAINER_NAME,
ATTR_K8S_POD_NAME,
} from '@opentelemetry/semantic-conventions/incubating';
import { OpentelemetryOptionsFactory } from '../../base/metrics';
@Injectable()
export class GCloudOpentelemetryOptionsFactory extends OpentelemetryOptionsFactory {
override getResource(): Resource {
const envAttrs: Record<string, string> = {};
if (process.env.HOSTNAME) {
envAttrs[ATTR_K8S_POD_NAME] = process.env.HOSTNAME;
}
if (process.env.CONTAINER_NAME) {
envAttrs[ATTR_CONTAINER_NAME] = process.env.CONTAINER_NAME;
}
const detected = new GcpDetectorSync().detect();
return super
.getResource()
.merge(resourceFromAttributes(envAttrs))
.merge(resourceFromAttributes(detected.attributes ?? {}));
}
override getSpanExporter(): SpanExporter {
return new TraceExporter();
}
}
const FactorProvider: Provider = {
provide: OpentelemetryOptionsFactory,
useClass: GCloudOpentelemetryOptionsFactory,
};
@Global()
@Module({
providers: [FactorProvider],
exports: [FactorProvider],
})
export class GCloudMetrics {}