revert individual settings for metrics, now only enable/disable
This commit is contained in:
@@ -1,31 +1,3 @@
|
||||
import { IsBoolean } from 'class-validator';
|
||||
|
||||
// TODO I feel like it must be possible to generate those from MetricsServerInfo and MetricsAssetCount
|
||||
export class MetricServerInfoConfig {
|
||||
@IsBoolean()
|
||||
cpuCount!: boolean;
|
||||
|
||||
@IsBoolean()
|
||||
cpuModel!: boolean;
|
||||
|
||||
@IsBoolean()
|
||||
memory!: boolean;
|
||||
|
||||
@IsBoolean()
|
||||
version!: boolean;
|
||||
}
|
||||
|
||||
export class MetricsAssetCountConfig {
|
||||
@IsBoolean()
|
||||
image!: boolean;
|
||||
|
||||
@IsBoolean()
|
||||
video!: boolean;
|
||||
|
||||
@IsBoolean()
|
||||
total!: boolean;
|
||||
}
|
||||
|
||||
class MetricsServerInfo {
|
||||
cpuCount!: number;
|
||||
cpuModel!: string;
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import _ from 'lodash';
|
||||
import { serverVersion } from '../domain.constant';
|
||||
import { JobName } from '../job';
|
||||
import { ISystemConfigRepository } from '../repositories';
|
||||
import { IJobRepository } from '../repositories/job.repository';
|
||||
import { IMetricsRepository } from '../repositories/metrics.repository';
|
||||
import { FeatureFlag, SystemConfigCore, SystemConfigMetricsDto } from '../system-config';
|
||||
import { Metrics, MetricsDto } from './metrics.dto';
|
||||
import { FeatureFlag, SystemConfigCore } from '../system-config';
|
||||
import { MetricsDto } from './metrics.dto';
|
||||
|
||||
@Injectable()
|
||||
export class MetricsService {
|
||||
@@ -27,15 +26,14 @@ export class MetricsService {
|
||||
}
|
||||
|
||||
async handleSendMetrics() {
|
||||
const metricsConfig = await this.configCore.getConfig().then((config) => config.metrics);
|
||||
const metrics = await this.getMetrics(metricsConfig);
|
||||
const metrics = await this.getMetrics();
|
||||
|
||||
await this.repository.sendMetrics(metrics);
|
||||
return true;
|
||||
}
|
||||
|
||||
async getMetrics(config: SystemConfigMetricsDto) {
|
||||
const metrics: Metrics = new MetricsDto();
|
||||
async getMetrics() {
|
||||
const metrics = new MetricsDto();
|
||||
|
||||
metrics.serverInfo = {
|
||||
cpuCount: this.repository.getCpuCount(),
|
||||
@@ -50,22 +48,6 @@ export class MetricsService {
|
||||
total: await this.repository.getAssetCount(),
|
||||
};
|
||||
|
||||
return _.pick(metrics, this.getKeys(config));
|
||||
}
|
||||
|
||||
private getKeys(config: SystemConfigMetricsDto) {
|
||||
const result = [];
|
||||
const keys = _.keys(config) as Array<keyof SystemConfigMetricsDto>;
|
||||
for (const key of keys) {
|
||||
const subConfig = _.get(config, key);
|
||||
if (typeof subConfig === 'boolean') {
|
||||
continue;
|
||||
}
|
||||
|
||||
const keys = _.keys(_.pickBy(subConfig)).map((value) => `${key}.${value}`);
|
||||
result.push(...keys);
|
||||
}
|
||||
|
||||
return result;
|
||||
return metrics;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,5 +9,5 @@ export interface IMetricsRepository {
|
||||
getMemory(): number;
|
||||
getImageCount(): Promise<number>;
|
||||
getVideoCount(): Promise<number>;
|
||||
sendMetrics(payload: Partial<MetricsDto>): Promise<void>;
|
||||
sendMetrics(payload: MetricsDto): Promise<void>;
|
||||
}
|
||||
|
||||
@@ -1,18 +1,6 @@
|
||||
import { MetricServerInfoConfig, MetricsAssetCountConfig } from '@app/domain';
|
||||
import { Type } from 'class-transformer';
|
||||
import { IsBoolean, IsObject, ValidateNested } from 'class-validator';
|
||||
import { IsBoolean } from 'class-validator';
|
||||
|
||||
export class SystemConfigMetricsDto {
|
||||
@IsBoolean()
|
||||
enabled!: boolean;
|
||||
|
||||
@Type(() => MetricServerInfoConfig)
|
||||
@ValidateNested()
|
||||
@IsObject()
|
||||
serverInfo!: MetricServerInfoConfig;
|
||||
|
||||
@Type(() => MetricsAssetCountConfig)
|
||||
@ValidateNested()
|
||||
@IsObject()
|
||||
assetCount!: MetricsAssetCountConfig;
|
||||
}
|
||||
|
||||
@@ -84,17 +84,6 @@ export const defaults = Object.freeze<SystemConfig>({
|
||||
},
|
||||
metrics: {
|
||||
enabled: false,
|
||||
serverInfo: {
|
||||
cpuCount: true,
|
||||
cpuModel: true,
|
||||
memory: true,
|
||||
version: true,
|
||||
},
|
||||
assetCount: {
|
||||
image: true,
|
||||
video: true,
|
||||
total: true,
|
||||
},
|
||||
},
|
||||
reverseGeocoding: {
|
||||
enabled: true,
|
||||
|
||||
Reference in New Issue
Block a user