mirror of
https://github.com/Unleash/unleash.git
synced 2024-11-01 19:07:38 +01:00
896994d42f
## About the changes This fixes response time metrics with app names when the app just starts and has zero which is falsy. We want to compare against undefined (which means the snapshot is not yet ready)
40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
import * as responseTime from 'response-time';
|
|
import EventEmitter from 'events';
|
|
import { REQUEST_TIME } from '../metric-events';
|
|
import { IFlagResolver } from '../types/experimental';
|
|
import { InstanceStatsService } from 'lib/services';
|
|
|
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
const _responseTime = responseTime.default;
|
|
|
|
const appNameReportingThreshold = 100;
|
|
|
|
export function responseTimeMetrics(
|
|
eventBus: EventEmitter,
|
|
flagResolver: IFlagResolver,
|
|
instanceStatsService: Pick<InstanceStatsService, 'getAppCountSnapshot'>,
|
|
): any {
|
|
return _responseTime((req, res, time) => {
|
|
const { statusCode } = res;
|
|
const pathname = req.route ? req.baseUrl + req.route.path : '(hidden)';
|
|
|
|
let appName;
|
|
if (
|
|
flagResolver.isEnabled('responseTimeWithAppName') &&
|
|
(instanceStatsService.getAppCountSnapshot('7d') ??
|
|
appNameReportingThreshold) < appNameReportingThreshold
|
|
) {
|
|
appName = req.headers['unleash-appname'] ?? req.query.appName;
|
|
}
|
|
|
|
const timingInfo = {
|
|
path: pathname,
|
|
method: req.method,
|
|
statusCode,
|
|
time,
|
|
appName,
|
|
};
|
|
eventBus.emit(REQUEST_TIME, timingInfo);
|
|
});
|
|
}
|