Skip to content

Commit 60c496d

Browse files
author
arthosofteq
authored
Merge pull request #521 from RedisInsight/feature/RI-1348-profiler-log-file
initial backend implementation
2 parents f117aa7 + 8cfb16e commit 60c496d

File tree

63 files changed

+2014
-781
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+2014
-781
lines changed

redisinsight/api/config/default.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { join } from 'path';
2+
import * as os from 'os';
23

34
const homedir = join(__dirname, '..');
45

@@ -15,6 +16,7 @@ const defaultsDir = process.env.BUILD_TYPE === 'ELECTRON' && process['resourcesP
1516

1617
export default {
1718
dir_path: {
19+
tmpDir: os.tmpdir(),
1820
homedir,
1921
prevHomedir: homedir,
2022
staticDir,
@@ -87,10 +89,14 @@ export default {
8789
redis_cli: {
8890
unsupportedCommands: JSON.parse(process.env.CLI_UNSUPPORTED_COMMANDS || '[]'),
8991
},
92+
profiler: {
93+
logFileIdleThreshold: parseInt(process.env.PROFILER_LOG_FILE_IDLE_THRESHOLD, 10) || 1000 * 60, // 1min
94+
},
9095
analytics: {
9196
writeKey: process.env.SEGMENT_WRITE_KEY || 'SOURCE_WRITE_KEY',
9297
},
9398
logger: {
99+
logLevel: process.env.LOG_LEVEL || 'info', // log level
94100
stdout: process.env.STDOUT_LOGGER ? process.env.STDOUT_LOGGER === 'true' : false, // disabled by default
95101
files: process.env.FILES_LOGGER ? process.env.FILES_LOGGER === 'true' : true, // enabled by default
96102
omitSensitiveData: process.env.LOGGER_OMIT_DATA ? process.env.LOGGER_OMIT_DATA === 'true' : true,

redisinsight/api/config/development.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export default {
1010
migrationsRun: process.env.DB_MIGRATIONS ? process.env.DB_MIGRATIONS === 'true' : false,
1111
},
1212
logger: {
13+
logLevel: process.env.LOG_LEVEL || 'debug',
1314
stdout: process.env.STDOUT_LOGGER ? process.env.STDOUT_LOGGER === 'true' : true, // enabled by default
1415
omitSensitiveData: process.env.LOGGER_OMIT_DATA ? process.env.LOGGER_OMIT_DATA === 'true' : false,
1516
},

redisinsight/api/config/logger.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ if (LOGGER_CONFIG.files) {
5858
const logger: WinstonModuleOptions = {
5959
format: format.errors({ stack: true }),
6060
transports: transportsConfig,
61+
level: LOGGER_CONFIG.logLevel,
6162
};
6263

6364
export default logger;

redisinsight/api/src/__mocks__/monitor.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { v4 as uuidv4 } from 'uuid';
2-
import { IClientMonitorObserver } from 'src/modules/monitor/helpers/client-monitor-observer';
3-
import { IMonitorObserver, IShardObserver, MonitorObserverStatus } from 'src/modules/monitor/helpers/monitor-observer';
2+
import { IClientMonitorObserver } from 'src/modules/profiler/helpers/client-monitor-observer';
3+
import { IMonitorObserver, IShardObserver, MonitorObserverStatus } from 'src/modules/profiler/helpers/monitor-observer';
4+
import { ILogsEmitter } from 'src/modules/profiler/interfaces/logs-emitter.interface';
45

56
export const mockClientMonitorObserver: IClientMonitorObserver = {
67
id: uuidv4(),
@@ -34,3 +35,11 @@ export const mockRedisMonitorObserver: IShardObserver = {
3435
once: jest.fn(),
3536
disconnect: jest.fn(),
3637
};
38+
39+
export const mockLogEmitter: ILogsEmitter = {
40+
id: 'test',
41+
emit: jest.fn(),
42+
addProfilerClient: jest.fn(),
43+
removeProfilerClient: jest.fn(),
44+
flushLogs: jest.fn(),
45+
};

redisinsight/api/src/app.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { InstancesModule } from './modules/instances/instances.module';
1616
import { BrowserModule } from './modules/browser/browser.module';
1717
import { RedisEnterpriseModule } from './modules/redis-enterprise/redis-enterprise.module';
1818
import { RedisSentinelModule } from './modules/redis-sentinel/redis-sentinel.module';
19-
import { MonitorModule } from './modules/monitor/monitor.module';
19+
import { ProfilerModule } from './modules/profiler/profiler.module';
2020
import { CliModule } from './modules/cli/cli.module';
2121
import { StaticsManagementModule } from './modules/statics-management/statics-management.module';
2222
import { SettingsController } from './controllers/settings.controller';
@@ -41,7 +41,7 @@ const PATH_CONFIG = config.get('dir_path');
4141
WorkbenchModule,
4242
PluginModule,
4343
CommandsModule,
44-
MonitorModule,
44+
ProfilerModule,
4545
EventEmitterModule.forRoot(),
4646
...(SERVER_CONFIG.staticContent
4747
? [

redisinsight/api/src/constants/error-messages.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
export default {
33
INVALID_DATABASE_INSTANCE_ID: 'Invalid database instance id.',
44
COMMAND_EXECUTION_NOT_FOUND: 'Command execution was not found.',
5+
PROFILER_LOG_FILE_NOT_FOUND: 'Profiler log file was not found.',
56
PLUGIN_STATE_NOT_FOUND: 'Plugin state was not found.',
67
UNDEFINED_INSTANCE_ID: 'Undefined redis database instance id.',
78
NO_CONNECTION_TO_REDIS_DB: 'No connection to the Redis Database.',

redisinsight/api/src/constants/telemetry-events.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,8 @@ export enum TelemetryEvents {
3737
WorkbenchCommandExecuted = 'WORKBENCH_COMMAND_EXECUTED',
3838
WorkbenchCommandErrorReceived = 'WORKBENCH_COMMAND_ERROR_RECEIVED',
3939
WorkbenchCommandDeleted = 'WORKBENCH_COMMAND_DELETE_COMMAND',
40+
41+
// Profiler
42+
ProfilerLogDownloaded = 'PROFILER_LOG_DOWNLOADED',
43+
ProfilerLogDeleted = 'PROFILER_LOG_DELETED',
4044
}

redisinsight/api/src/main.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ export default async function bootstrap() {
4444
);
4545
}
4646

47+
app.enableShutdownHooks();
48+
4749
await app.listen(port);
4850
logger.log({
4951
message: `Server is running on http(s)://localhost:${port}`,

redisinsight/api/src/modules/monitor/constants/events.ts

Lines changed: 0 additions & 8 deletions
This file was deleted.

redisinsight/api/src/modules/monitor/helpers/client-monitor-observer/client-monitor-observer.interface.ts

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)