mirror of
https://github.com/immich-app/immich.git
synced 2025-07-08 18:54:18 -04:00
queue metrics job every 24 hours
This commit is contained in:
parent
e9197cde67
commit
db997f9173
@ -5,6 +5,7 @@ import pkg from 'src/../../package.json';
|
||||
|
||||
export const AUDIT_LOG_MAX_DURATION = Duration.fromObject({ days: 100 });
|
||||
export const ONE_HOUR = Duration.fromObject({ hours: 1 });
|
||||
export const TWENTY_FOUR_HOURS = Duration.fromObject({ hours: 24 });
|
||||
|
||||
export interface IVersion {
|
||||
major: number;
|
||||
|
@ -1,13 +1,24 @@
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import { serverVersion } from '../domain.constant';
|
||||
import { JobName } from '../job';
|
||||
import { IJobRepository } from '../repositories/job.repository';
|
||||
import { IMetricsRepository, SharedMetrics } from '../repositories/metrics.repository';
|
||||
import { MetricsDto } from './metrics.dto';
|
||||
|
||||
@Injectable()
|
||||
export class MetricsService {
|
||||
constructor(@Inject(IMetricsRepository) private repository: IMetricsRepository) {}
|
||||
constructor(
|
||||
@Inject(IJobRepository) private jobRepository: IJobRepository,
|
||||
@Inject(IMetricsRepository) private repository: IMetricsRepository,
|
||||
) {}
|
||||
|
||||
async shareMetrics(metrics: SharedMetrics) {
|
||||
async handleQueueMetrics() {
|
||||
// TODO config for what metrics should be fetched and if any at all
|
||||
|
||||
await this.jobRepository.queue({ name: JobName.METRICS, data: { assetCount: true, serverInfo: true } });
|
||||
}
|
||||
|
||||
async handleMetrics(metrics: SharedMetrics) {
|
||||
const metricsPayload = new MetricsDto();
|
||||
if (metrics.serverInfo) {
|
||||
metricsPayload.serverInfo.version = serverVersion.toString();
|
||||
|
@ -3,12 +3,14 @@ import {
|
||||
DatabaseService,
|
||||
JobService,
|
||||
LibraryService,
|
||||
MetricsService,
|
||||
ONE_HOUR,
|
||||
OpenGraphTags,
|
||||
ServerInfoService,
|
||||
SharedLinkService,
|
||||
StorageService,
|
||||
SystemConfigService,
|
||||
TWENTY_FOUR_HOURS,
|
||||
WEB_ROOT_PATH,
|
||||
} from '@app/domain';
|
||||
import { ImmichLogger } from '@app/infra/logger';
|
||||
@ -46,6 +48,7 @@ export class AppService {
|
||||
private configService: SystemConfigService,
|
||||
private jobService: JobService,
|
||||
private libraryService: LibraryService,
|
||||
private metricsService: MetricsService,
|
||||
private serverService: ServerInfoService,
|
||||
private sharedLinkService: SharedLinkService,
|
||||
private storageService: StorageService,
|
||||
@ -57,6 +60,11 @@ export class AppService {
|
||||
await this.serverService.handleVersionCheck();
|
||||
}
|
||||
|
||||
@Interval(TWENTY_FOUR_HOURS.as('milliseconds'))
|
||||
async onMetricsSend() {
|
||||
await this.metricsService.handleQueueMetrics();
|
||||
}
|
||||
|
||||
@Cron(CronExpression.EVERY_DAY_AT_MIDNIGHT)
|
||||
async onNightlyJob() {
|
||||
await this.jobService.handleNightlyJobs();
|
||||
|
@ -8,6 +8,7 @@ import {
|
||||
LibraryService,
|
||||
MediaService,
|
||||
MetadataService,
|
||||
MetricsService,
|
||||
PersonService,
|
||||
SmartInfoService,
|
||||
StorageService,
|
||||
@ -15,7 +16,6 @@ import {
|
||||
SystemConfigService,
|
||||
UserService,
|
||||
} from '@app/domain';
|
||||
import { MetricsService } from '@app/domain/metrics';
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
@Injectable()
|
||||
@ -62,7 +62,7 @@ export class AppService {
|
||||
[JobName.VIDEO_CONVERSION]: (data) => this.mediaService.handleVideoConversion(data),
|
||||
[JobName.QUEUE_METADATA_EXTRACTION]: (data) => this.metadataService.handleQueueMetadataExtraction(data),
|
||||
[JobName.METADATA_EXTRACTION]: (data) => this.metadataService.handleMetadataExtraction(data),
|
||||
[JobName.METRICS]: (data) => this.metricsService.shareMetrics(data),
|
||||
[JobName.METRICS]: (data) => this.metricsService.handleMetrics(data),
|
||||
[JobName.LINK_LIVE_PHOTOS]: (data) => this.metadataService.handleLivePhotoLinking(data),
|
||||
[JobName.QUEUE_RECOGNIZE_FACES]: (data) => this.personService.handleQueueRecognizeFaces(data),
|
||||
[JobName.RECOGNIZE_FACES]: (data) => this.personService.handleRecognizeFaces(data),
|
||||
|
Loading…
x
Reference in New Issue
Block a user