diff --git a/x-pack/plugins/infra/public/common/visualizations/constants.ts b/x-pack/plugins/infra/public/common/visualizations/constants.ts index 262097d69c330..aead701d37a37 100644 --- a/x-pack/plugins/infra/public/common/visualizations/constants.ts +++ b/x-pack/plugins/infra/public/common/visualizations/constants.ts @@ -33,6 +33,7 @@ import { memoryCache, nginxActiveConnections, nginxRequestRate, + nginxRequestsPerConnection, rx, tx, hostCount, @@ -67,6 +68,7 @@ export const hostLensFormulas = { memoryCache, nginxActiveConnections, nginxRequestRate, + nginxRequestsPerConnection, rx, tx, }; diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/host/nginx_charts.ts b/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/host/nginx_charts.ts index 16da17001809e..9a6868a3dad57 100644 --- a/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/host/nginx_charts.ts +++ b/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/host/nginx_charts.ts @@ -4,9 +4,17 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { nginxActiveConnections, nginxRequestRate } from '../metric_charts/nginx'; +import { + nginxActiveConnections, + nginxRequestRate, + nginxRequestsPerConnection, +} from '../metric_charts/nginx'; import type { XYConfig } from '../metric_charts/types'; -export const nginxStubstatusMetrics: XYConfig[] = [nginxActiveConnections, nginxRequestRate]; +export const nginxStubstatusMetrics: XYConfig[] = [ + nginxActiveConnections, + nginxRequestRate, + nginxRequestsPerConnection, +]; export const nginxAccessMetrics: XYConfig[] = []; // TODO diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/metric_charts/nginx.ts b/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/metric_charts/nginx.ts index 341cac0f3c863..652c5c8fe5a5a 100644 --- a/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/metric_charts/nginx.ts +++ b/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/asset_details/metric_charts/nginx.ts @@ -45,3 +45,18 @@ export const nginxActiveConnections: XYConfig = { axisLeft: XY_OVERRIDES.axisLeft, }, }; + +export const nginxRequestsPerConnection: XYConfig = { + id: 'RequestsPerConnection', + title: i18n.translate('xpack.infra.assetDetails.metricsCharts.nginx.requestsPerConnection', { + defaultMessage: 'Requests Per Connection', + }), + + layers: [ + { + data: [hostLensFormulas.nginxRequestsPerConnection], + type: 'visualization', + }, + ], + dataViewOrigin: 'metrics', +}; diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/index.ts b/x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/index.ts index 5c3abd2ac2f90..7b206fbf9e5d6 100644 --- a/x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/index.ts +++ b/x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/index.ts @@ -33,5 +33,6 @@ export { memoryFreeExcludingCache } from './memory_free_excluding_cache'; export { memoryCache } from './memory_cache'; export { nginxRequestRate } from './nginx_request_rate'; export { nginxActiveConnections } from './nginx_active_connections'; +export { nginxRequestsPerConnection } from './nginx_requests_per_connection'; export { rx } from './rx'; export { tx } from './tx'; diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/nginx_requests_per_connection.ts b/x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/nginx_requests_per_connection.ts new file mode 100644 index 0000000000000..752eda44ffcca --- /dev/null +++ b/x-pack/plugins/infra/public/common/visualizations/lens/formulas/host/nginx_requests_per_connection.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { FormulaValueConfig } from '@kbn/lens-embeddable-utils'; + +export const nginxRequestsPerConnection: FormulaValueConfig = { + label: 'Requests Per Connection', + value: 'max(nginx.stubstatus.requests) / max(nginx.stubstatus.handled)', + format: { + id: 'number', + params: { + decimals: 0, + }, + }, +};