Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[APM] Adds new configuration 'xpack.apm.maxServiceEnvironments' #82090

Merged
merged 9 commits into from
Nov 6, 2020
3 changes: 3 additions & 0 deletions docs/settings/apm-settings.asciidoc
Original file line number Diff line number Diff line change
@@ -43,6 +43,9 @@ Changing these settings may disable features of the APM App.
| `xpack.apm.enabled`
| Set to `false` to disable the APM app. Defaults to `true`.

| `xpack.apm.maxServiceEnvironments`
| Maximum number of unique service environments recognized by the UI. Defaults to `100`.

| `xpack.apm.serviceMapFingerprintBucketSize`
| Maximum number of unique transaction combinations sampled for generating service map focused on a specific service. Defaults to `100`.

2 changes: 2 additions & 0 deletions x-pack/plugins/apm/server/index.ts
Original file line number Diff line number Diff line change
@@ -43,6 +43,7 @@ export const config = {
),
telemetryCollectionEnabled: schema.boolean({ defaultValue: true }),
metricsInterval: schema.number({ defaultValue: 30 }),
maxServiceEnvironments: schema.number({ defaultValue: 100 }),
}),
};

@@ -74,6 +75,7 @@ export function mergeConfigs(
'xpack.apm.serviceMapMaxTracesPerRequest':
apmConfig.serviceMapMaxTracesPerRequest,
'xpack.apm.ui.enabled': apmConfig.ui.enabled,
'xpack.apm.maxServiceEnvironments': apmConfig.maxServiceEnvironments,
'xpack.apm.ui.maxTraceItems': apmConfig.ui.maxTraceItems,
'xpack.apm.ui.transactionGroupBucketSize':
apmConfig.ui.transactionGroupBucketSize,
Original file line number Diff line number Diff line change
@@ -66,6 +66,7 @@ export function registerErrorCountAlertType({
config,
savedObjectsClient: services.savedObjectsClient,
});
const maxServiceEnvironments = config['xpack.apm.maxServiceEnvironments'];

const searchParams = {
index: indices['apm_oss.errorIndices'],
@@ -100,6 +101,7 @@ export function registerErrorCountAlertType({
environments: {
terms: {
field: SERVICE_ENVIRONMENT,
size: maxServiceEnvironments,
},
},
},
Original file line number Diff line number Diff line change
@@ -75,6 +75,7 @@ export function registerTransactionDurationAlertType({
config,
savedObjectsClient: services.savedObjectsClient,
});
const maxServiceEnvironments = config['xpack.apm.maxServiceEnvironments'];

const searchParams = {
index: indices['apm_oss.transactionIndices'],
@@ -112,6 +113,7 @@ export function registerTransactionDurationAlertType({
environments: {
terms: {
field: SERVICE_ENVIRONMENT,
size: maxServiceEnvironments,
},
},
},
Original file line number Diff line number Diff line change
@@ -71,6 +71,7 @@ export function registerTransactionErrorRateAlertType({
config,
savedObjectsClient: services.savedObjectsClient,
});
const maxServiceEnvironments = config['xpack.apm.maxServiceEnvironments'];

const searchParams = {
index: indices['apm_oss.transactionIndices'],
@@ -120,6 +121,7 @@ export function registerTransactionErrorRateAlertType({
environments: {
terms: {
field: SERVICE_ENVIRONMENT,
size: maxServiceEnvironments,
},
},
},
Original file line number Diff line number Diff line change
@@ -24,7 +24,8 @@ export async function getAllEnvironments({
searchAggregatedTransactions: boolean;
includeMissing?: boolean;
}) {
const { apmEventClient } = setup;
const { apmEventClient, config } = setup;
const maxServiceEnvironments = config['xpack.apm.maxServiceEnvironments'];

// omit filter for service.name if "All" option is selected
const serviceNameFilter = serviceName
@@ -55,7 +56,7 @@ export async function getAllEnvironments({
environments: {
terms: {
field: SERVICE_ENVIRONMENT,
size: 100,
size: maxServiceEnvironments,
...(!serviceName ? { min_doc_count: 0 } : {}),
missing: includeMissing ? ENVIRONMENT_NOT_DEFINED.value : undefined,
},

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -337,7 +337,8 @@ export const getEnvironments = async ({
setup,
projection,
}: AggregationParams) => {
const { apmEventClient } = setup;
const { apmEventClient, config } = setup;
const maxServiceEnvironments = config['xpack.apm.maxServiceEnvironments'];
const response = await apmEventClient.search(
mergeProjection(projection, {
body: {
@@ -352,6 +353,7 @@ export const getEnvironments = async ({
environments: {
terms: {
field: SERVICE_ENVIRONMENT,
size: maxServiceEnvironments,
},
},
},

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -18,7 +18,8 @@ export async function getExistingEnvironmentsForService({
serviceName: string | undefined;
setup: Setup;
}) {
const { internalClient, indices } = setup;
const { internalClient, indices, config } = setup;
const maxServiceEnvironments = config['xpack.apm.maxServiceEnvironments'];

const bool = serviceName
? { filter: [{ term: { [SERVICE_NAME]: serviceName } }] }
@@ -34,7 +35,7 @@ export async function getExistingEnvironmentsForService({
terms: {
field: SERVICE_ENVIRONMENT,
missing: ALL_OPTION_VALUE,
size: 50,
size: maxServiceEnvironments,
},
},
},

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion x-pack/plugins/apm/server/lib/ui_filters/get_environments.ts
Original file line number Diff line number Diff line change
@@ -24,7 +24,7 @@ export async function getEnvironments({
serviceName?: string;
searchAggregatedTransactions: boolean;
}) {
const { start, end, apmEventClient } = setup;
const { start, end, apmEventClient, config } = setup;

const filter: ESFilter[] = [{ range: rangeFilter(start, end) }];

@@ -34,6 +34,8 @@ export async function getEnvironments({
});
}

const maxServiceEnvironments = config['xpack.apm.maxServiceEnvironments'];

const params = {
apm: {
events: [
@@ -56,6 +58,7 @@ export async function getEnvironments({
terms: {
field: SERVICE_ENVIRONMENT,
missing: ENVIRONMENT_NOT_DEFINED.value,
size: maxServiceEnvironments,
},
},
},
3 changes: 3 additions & 0 deletions x-pack/plugins/apm/server/utils/test_helpers.tsx
Original file line number Diff line number Diff line change
@@ -76,6 +76,9 @@ export async function inspectSearchParams(

case 'xpack.apm.metricsInterval':
return 30;

case 'xpack.apm.maxServiceEnvironments':
return 100;
}
},
}