Compare commits

...

2 Commits

Author SHA1 Message Date
Jason Rasmussen
cfdfbbd92b fix: apiMetrics 2026-04-16 13:13:34 -04:00
renovate[bot]
c515a5fe51 fix(deps): update dependency nestjs-otel to v8 2026-04-16 13:36:07 +00:00
5 changed files with 24 additions and 36 deletions

38
pnpm-lock.yaml generated
View File

@@ -509,8 +509,8 @@ importers:
specifier: 3.1.2
version: 3.1.2(@nestjs/common@11.1.17(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.18)(kysely@0.28.15)(reflect-metadata@0.2.2)
nestjs-otel:
specifier: ^7.0.0
version: 7.0.1(@nestjs/common@11.1.17(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.18)
specifier: ^8.0.0
version: 8.0.2(@nestjs/common@11.1.17(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.18)
nestjs-zod:
specifier: ^5.3.0
version: 5.3.0(@nestjs/common@11.1.17(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/swagger@11.2.6(@nestjs/common@11.1.17(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.18)(class-transformer@0.5.1)(reflect-metadata@0.2.2))(rxjs@7.8.2)(zod@4.3.6)
@@ -3705,8 +3705,8 @@ packages:
peerDependencies:
'@opentelemetry/api': ^1.0.0
'@opentelemetry/host-metrics@0.36.2':
resolution: {integrity: sha512-eMdea86cfIqx3cdFpcKU3StrjqFkQDIVp7NANVnVWO8O6hDw/DBwGwu4Gi1wJCuoQ2JVwKNWQxUTSRheB6O29Q==}
'@opentelemetry/host-metrics@0.38.3':
resolution: {integrity: sha512-8iSOA8VPGoB5p/RIC8n/dcSe4cluCEWoznWENZfXR8sWQOQvergFu7v798xp7S5WQlZo1zfn1nVXx8dbyQ9m6Q==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
@@ -9377,9 +9377,9 @@ packages:
kysely: 0.x
reflect-metadata: ^0.1.13 || ^0.2.2
nestjs-otel@7.0.1:
resolution: {integrity: sha512-NKce9aAJ263rcqaj3etHmv5KE+VALBqjGkPmZYvaesIb7AT7WBA3YXiEXmkJdKsnF2ZwmNFUJXCQWPn91Hrc8A==}
engines: {node: '>= 20'}
nestjs-otel@8.0.2:
resolution: {integrity: sha512-IQZ4MRb54WqRPooFPWrbqdOt+RckwaBjPoQy+axm9Jtri0DlOM6B3mSfzKHAJOwjj6YFaq10DXLOcYrqI8IsXA==}
engines: {node: '>= 22'}
peerDependencies:
'@nestjs/common': '>= 11 < 12'
'@nestjs/core': '>= 11 < 12'
@@ -10752,10 +10752,6 @@ packages:
engines: {node: '>= 0.4'}
hasBin: true
response-time@2.3.4:
resolution: {integrity: sha512-fiyq1RvW5/Br6iAtT8jN1XrNY8WPu2+yEypLbaijWry8WDZmn12azG9p/+c+qpEebURLlQmqCB8BNSu7ji+xQQ==}
engines: {node: '>= 0.8.0'}
responselike@3.0.0:
resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==}
engines: {node: '>=14.16'}
@@ -11428,8 +11424,8 @@ packages:
resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==}
engines: {node: ^14.18.0 || >=16.0.0}
systeminformation@5.23.8:
resolution: {integrity: sha512-Osd24mNKe6jr/YoXLLK3k8TMdzaxDffhpCxgkfgBHcapykIkd50HXThM3TCEuHO2pPuCsSx2ms/SunqhU5MmsQ==}
systeminformation@5.31.5:
resolution: {integrity: sha512-5SyLdip4/3alxD4Kh+63bUQTJmu7YMfYQTC+koZy7X73HgNqZSD2P4wOZQWtUncvPvcEmnfIjCoygN4MRoEejQ==}
engines: {node: '>=8.0.0'}
os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android]
hasBin: true
@@ -16033,10 +16029,10 @@ snapshots:
'@opentelemetry/sdk-trace-base': 2.6.1(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.40.0
'@opentelemetry/host-metrics@0.36.2(@opentelemetry/api@1.9.0)':
'@opentelemetry/host-metrics@0.38.3(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
systeminformation: 5.23.8
systeminformation: 5.31.5
'@opentelemetry/instrumentation-http@0.214.0(@opentelemetry/api@1.9.0)':
dependencies:
@@ -22515,13 +22511,12 @@ snapshots:
reflect-metadata: 0.2.2
tslib: 2.8.1
nestjs-otel@7.0.1(@nestjs/common@11.1.17(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.18):
nestjs-otel@8.0.2(@nestjs/common@11.1.17(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.18):
dependencies:
'@nestjs/common': 11.1.17(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nestjs/core': 11.1.18(@nestjs/common@11.1.17(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.17)(@nestjs/websockets@11.1.17)(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@opentelemetry/api': 1.9.0
'@opentelemetry/host-metrics': 0.36.2(@opentelemetry/api@1.9.0)
response-time: 2.3.4
'@opentelemetry/host-metrics': 0.38.3(@opentelemetry/api@1.9.0)
tslib: 2.8.1
nestjs-zod@5.3.0(@nestjs/common@11.1.17(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/swagger@11.2.6(@nestjs/common@11.1.17(class-transformer@0.5.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.18)(class-transformer@0.5.1)(reflect-metadata@0.2.2))(rxjs@7.8.2)(zod@4.3.6):
@@ -24040,11 +24035,6 @@ snapshots:
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
response-time@2.3.4:
dependencies:
depd: 2.0.0
on-headers: 1.1.0
responselike@3.0.0:
dependencies:
lowercase-keys: 3.0.0
@@ -24959,7 +24949,7 @@ snapshots:
dependencies:
'@pkgr/core': 0.2.9
systeminformation@5.23.8: {}
systeminformation@5.31.5: {}
tabbable@6.4.0: {}

View File

@@ -95,7 +95,7 @@
"nest-commander": "^3.16.0",
"nestjs-cls": "^6.0.0",
"nestjs-kysely": "3.1.2",
"nestjs-otel": "^7.0.0",
"nestjs-otel": "^8.0.0",
"nodemailer": "^8.0.0",
"nestjs-zod": "^5.3.0",
"openid-client": "^6.3.3",

View File

@@ -9,7 +9,7 @@ import { CLS_ID, ClsModuleOptions } from 'nestjs-cls';
import { OpenTelemetryModuleOptions } from 'nestjs-otel/lib/interfaces';
import { readFileSync } from 'node:fs';
import { join } from 'node:path';
import { citiesFile, excludePaths, IWorker } from 'src/constants';
import { citiesFile, IWorker } from 'src/constants';
import { Telemetry } from 'src/decorators';
import { EnvSchema } from 'src/dtos/env.dto';
import {
@@ -334,10 +334,6 @@ const getEnv = (): EnvData => {
otel: {
metrics: {
hostMetrics: telemetries.has(ImmichTelemetry.Host),
apiMetrics: {
enable: telemetries.has(ImmichTelemetry.Api),
ignoreRoutes: excludePaths,
},
},
},

View File

@@ -14,7 +14,7 @@ import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic
import { snakeCase, startCase } from 'lodash';
import { MetricService } from 'nestjs-otel';
import { copyMetadataFromFunctionToFunction } from 'nestjs-otel/lib/opentelemetry.utils';
import { serverVersion } from 'src/constants';
import { excludePaths, serverVersion } from 'src/constants';
import { ImmichTelemetry, MetadataKey } from 'src/enum';
import { ConfigRepository } from 'src/repositories/config.repository';
import { LoggingRepository } from 'src/repositories/logging.repository';
@@ -60,6 +60,9 @@ export const bootstrapTelemetry = (port: number) => {
if (instance) {
throw new Error('OpenTelemetry SDK already started');
}
const { telemetry } = new ConfigRepository().getEnv();
instance = new NodeSDK({
resource: resourceFromAttributes({
[ATTR_SERVICE_NAME]: `immich`,
@@ -68,7 +71,10 @@ export const bootstrapTelemetry = (port: number) => {
metricReader: new PrometheusExporter({ port }),
contextManager: new AsyncLocalStorageContextManager(),
instrumentations: [
new HttpInstrumentation(),
new HttpInstrumentation({
enabled: telemetry.metrics.has(ImmichTelemetry.Api),
ignoreIncomingRequestHook: (request) => excludePaths.some((item) => request.url?.startsWith(item)),
}),
new IORedisInstrumentation(),
new NestInstrumentation(),
new PgInstrumentation(),

View File

@@ -55,10 +55,6 @@ const envData: EnvData = {
otel: {
metrics: {
hostMetrics: false,
apiMetrics: {
enable: false,
ignoreRoutes: [],
},
},
},