diff --git a/dev_docs/tutorials/debugging.mdx b/dev_docs/tutorials/debugging.mdx index 2f9818f57104..679945b24ea3 100644 --- a/dev_docs/tutorials/debugging.mdx +++ b/dev_docs/tutorials/debugging.mdx @@ -106,4 +106,4 @@ Set the following environment variables to enable APM: * ELASTIC_APM_ACTIVE * ELASTIC_APM_SERVER_URL - * ELASTIC_APM_SECRET_TOKEN + * ELASTIC_APM_SECRET_TOKEN or ELASTIC_APM_API_KEY diff --git a/packages/kbn-apm-config-loader/src/config.test.ts b/packages/kbn-apm-config-loader/src/config.test.ts index 697e601d92fd..ff7afefa204c 100644 --- a/packages/kbn-apm-config-loader/src/config.test.ts +++ b/packages/kbn-apm-config-loader/src/config.test.ts @@ -152,6 +152,7 @@ describe('ApmConfiguration', () => { beforeEach(() => { delete process.env.ELASTIC_APM_ENVIRONMENT; delete process.env.ELASTIC_APM_SECRET_TOKEN; + delete process.env.ELASTIC_APM_API_KEY; delete process.env.ELASTIC_APM_SERVER_URL; delete process.env.NODE_ENV; }); @@ -225,6 +226,15 @@ describe('ApmConfiguration', () => { expect(serverConfig).toHaveProperty('secretToken', process.env.ELASTIC_APM_SECRET_TOKEN); expect(serverConfig).toHaveProperty('serverUrl', process.env.ELASTIC_APM_SERVER_URL); }); + + it('uses apiKey instead of secret token if env var is set', () => { + process.env.ELASTIC_APM_API_KEY = 'banana'; + process.env.ELASTIC_APM_SERVER_URL = 'http://banana.com/'; + const config = new ApmConfiguration(mockedRootDir, {}, false); + const serverConfig = config.getConfig('serviceName'); + expect(serverConfig).toHaveProperty('apiKey', process.env.ELASTIC_APM_API_KEY); + expect(serverConfig).toHaveProperty('serverUrl', process.env.ELASTIC_APM_SERVER_URL); + }); }); describe('contextPropagationOnly', () => { diff --git a/packages/kbn-apm-config-loader/src/config.ts b/packages/kbn-apm-config-loader/src/config.ts index 0552329acd20..718f3e76236c 100644 --- a/packages/kbn-apm-config-loader/src/config.ts +++ b/packages/kbn-apm-config-loader/src/config.ts @@ -147,6 +147,10 @@ export class ApmConfiguration { config.secretToken = process.env.ELASTIC_APM_SECRET_TOKEN; } + if (process.env.ELASTIC_APM_API_KEY) { + config.apiKey = process.env.ELASTIC_APM_API_KEY; + } + if (process.env.ELASTIC_APM_GLOBAL_LABELS) { config.globalLabels = Object.fromEntries( process.env.ELASTIC_APM_GLOBAL_LABELS.split(',').map((p) => {