mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	feat: Unique connection tracking (#9067)
This commit is contained in:
		
							parent
							
								
									73515d78ce
								
							
						
					
					
						commit
						cef10eee02
					
				| @ -130,7 +130,7 @@ test('should collect metrics for requests', async () => { | ||||
| 
 | ||||
|     const metrics = await prometheusRegister.metrics(); | ||||
|     expect(metrics).toMatch( | ||||
|         /http_request_duration_milliseconds\{quantile="0\.99",path="somePath",method="GET",status="200",appName="undefined"\}.*1337/, | ||||
|         /http_request_duration_milliseconds\{quantile="0\.99",path="somePath",method="GET",status="200",appName="undefined",connectionId="undefined"\}.*1337/, | ||||
|     ); | ||||
| }); | ||||
| 
 | ||||
|  | ||||
| @ -124,7 +124,7 @@ export function registerPrometheusMetrics( | ||||
|     const requestDuration = createSummary({ | ||||
|         name: 'http_request_duration_milliseconds', | ||||
|         help: 'App response time', | ||||
|         labelNames: ['path', 'method', 'status', 'appName'], | ||||
|         labelNames: ['path', 'method', 'status', 'appName', 'connectionId'], | ||||
|         percentiles: [0.1, 0.5, 0.9, 0.95, 0.99], | ||||
|         maxAgeSeconds: 600, | ||||
|         ageBuckets: 5, | ||||
| @ -700,13 +700,14 @@ export function registerPrometheusMetrics( | ||||
| 
 | ||||
|     eventBus.on( | ||||
|         events.REQUEST_TIME, | ||||
|         ({ path, method, time, statusCode, appName }) => { | ||||
|         ({ path, method, time, statusCode, appName, connectionId }) => { | ||||
|             requestDuration | ||||
|                 .labels({ | ||||
|                     path, | ||||
|                     method, | ||||
|                     status: statusCode, | ||||
|                     appName, | ||||
|                     connectionId, | ||||
|                 }) | ||||
|                 .observe(time); | ||||
|         }, | ||||
|  | ||||
| @ -55,12 +55,19 @@ export function responseTimeMetrics( | ||||
|         // when pathname is undefined use a fallback
 | ||||
|         pathname = pathname ?? collapse(req.path); | ||||
|         let appName: string | undefined; | ||||
|         let connectionId: string | undefined; | ||||
|         if ( | ||||
|             !flagResolver.isEnabled('responseTimeWithAppNameKillSwitch') && | ||||
|             (instanceStatsService.getAppCountSnapshot('7d') ?? | ||||
|                 appNameReportingThreshold) < appNameReportingThreshold | ||||
|         ) { | ||||
|             appName = req.headers['unleash-appname'] ?? req.query.appName; | ||||
|             appName = | ||||
|                 req.headers['x-unleash-appname'] ?? | ||||
|                 req.headers['unleash-appname'] ?? | ||||
|                 req.query.appName; | ||||
|             if (flagResolver.isEnabled('uniqueSdkTracking')) { | ||||
|                 connectionId = req.headers['x-unleash-connection-id']; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         const timingInfo = { | ||||
| @ -69,6 +76,7 @@ export function responseTimeMetrics( | ||||
|             statusCode, | ||||
|             time, | ||||
|             appName, | ||||
|             connectionId, | ||||
|         }; | ||||
|         if (!res.locals.responseTimeEmitted) { | ||||
|             res.locals.responseTimeEmitted = true; | ||||
|  | ||||
| @ -61,7 +61,8 @@ export type IFlagKey = | ||||
|     | 'etagVariant' | ||||
|     | 'oidcRedirect' | ||||
|     | 'deltaApi' | ||||
|     | 'newHostedAuthHandler'; | ||||
|     | 'newHostedAuthHandler' | ||||
|     | 'uniqueSdkTracking'; | ||||
| 
 | ||||
| export type IFlags = Partial<{ [key in IFlagKey]: boolean | Variant }>; | ||||
| 
 | ||||
| @ -290,6 +291,10 @@ const flags: IFlags = { | ||||
|         process.env.UNLEASH_EXPERIMENTAL_NEW_HOSTED_AUTH_HANDLER, | ||||
|         false, | ||||
|     ), | ||||
|     uniqueSdkTracking: parseEnvVarBoolean( | ||||
|         process.env.UNLEASH_EXPERIMENTAL_UNIQUE_SDK_TRACKING, | ||||
|         false, | ||||
|     ), | ||||
| }; | ||||
| 
 | ||||
| export const defaultExperimentalOptions: IExperimentalOptions = { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user