mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
Signed-off-by: Tyler Smalley <tyler.smalley@elastic.co>
This commit is contained in:
parent
226d7e9462
commit
dd49b7ebf7
3 changed files with 71 additions and 23 deletions
|
@ -28,6 +28,8 @@ import {
|
|||
|
||||
import { ApmConfiguration } from './config';
|
||||
|
||||
const initialEnv = { ...process.env };
|
||||
|
||||
describe('ApmConfiguration', () => {
|
||||
beforeEach(() => {
|
||||
packageMock.raw = {
|
||||
|
@ -39,6 +41,7 @@ describe('ApmConfiguration', () => {
|
|||
});
|
||||
|
||||
afterEach(() => {
|
||||
process.env = { ...initialEnv };
|
||||
resetAllMocks();
|
||||
});
|
||||
|
||||
|
@ -90,13 +93,16 @@ describe('ApmConfiguration', () => {
|
|||
let config = new ApmConfiguration(mockedRootDir, {}, false);
|
||||
expect(config.getConfig('serviceName')).toEqual(
|
||||
expect.objectContaining({
|
||||
serverUrl: expect.any(String),
|
||||
secretToken: expect.any(String),
|
||||
breakdownMetrics: true,
|
||||
})
|
||||
);
|
||||
|
||||
config = new ApmConfiguration(mockedRootDir, {}, true);
|
||||
expect(Object.keys(config.getConfig('serviceName'))).not.toContain('serverUrl');
|
||||
expect(config.getConfig('serviceName')).toEqual(
|
||||
expect.objectContaining({
|
||||
breakdownMetrics: false,
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
it('loads the configuration from the kibana config file', () => {
|
||||
|
@ -156,4 +162,32 @@ describe('ApmConfiguration', () => {
|
|||
})
|
||||
);
|
||||
});
|
||||
|
||||
it('correctly sets environment', () => {
|
||||
delete process.env.ELASTIC_APM_ENVIRONMENT;
|
||||
delete process.env.NODE_ENV;
|
||||
|
||||
let config = new ApmConfiguration(mockedRootDir, {}, false);
|
||||
expect(config.getConfig('serviceName')).toEqual(
|
||||
expect.objectContaining({
|
||||
environment: 'development',
|
||||
})
|
||||
);
|
||||
|
||||
process.env.NODE_ENV = 'production';
|
||||
config = new ApmConfiguration(mockedRootDir, {}, false);
|
||||
expect(config.getConfig('serviceName')).toEqual(
|
||||
expect.objectContaining({
|
||||
environment: 'production',
|
||||
})
|
||||
);
|
||||
|
||||
process.env.ELASTIC_APM_ENVIRONMENT = 'ci';
|
||||
config = new ApmConfiguration(mockedRootDir, {}, false);
|
||||
expect(config.getConfig('serviceName')).toEqual(
|
||||
expect.objectContaining({
|
||||
environment: 'ci',
|
||||
})
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -26,32 +26,26 @@ import { readFileSync } from 'fs';
|
|||
import { ApmAgentConfig } from './types';
|
||||
|
||||
const getDefaultConfig = (isDistributable: boolean): ApmAgentConfig => {
|
||||
if (isDistributable) {
|
||||
return {
|
||||
active: false,
|
||||
globalLabels: {},
|
||||
// Do not use a centralized controlled config
|
||||
centralConfig: false,
|
||||
// Capture all exceptions that are not caught
|
||||
logUncaughtExceptions: true,
|
||||
// Can be performance intensive, disabling by default
|
||||
breakdownMetrics: false,
|
||||
};
|
||||
}
|
||||
|
||||
// https://www.elastic.co/guide/en/apm/agent/nodejs/current/configuration.html
|
||||
return {
|
||||
active: false,
|
||||
serverUrl: 'https://f1542b814f674090afd914960583265f.apm.us-central1.gcp.cloud.es.io:443',
|
||||
active: process.env.ELASTIC_APM_ACTIVE || false,
|
||||
environment: process.env.ELASTIC_APM_ENVIRONMENT || process.env.NODE_ENV || 'development',
|
||||
|
||||
serverUrl: 'https://b1e3b4b4233e44cdad468c127d0af8d8.apm.europe-west1.gcp.cloud.es.io:443',
|
||||
|
||||
// The secretToken below is intended to be hardcoded in this file even though
|
||||
// it makes it public. This is not a security/privacy issue. Normally we'd
|
||||
// instead disable the need for a secretToken in the APM Server config where
|
||||
// the data is transmitted to, but due to how it's being hosted, it's easier,
|
||||
// for now, to simply leave it in.
|
||||
secretToken: 'R0Gjg46pE9K9wGestd',
|
||||
globalLabels: {},
|
||||
breakdownMetrics: true,
|
||||
centralConfig: false,
|
||||
secretToken: '2OyjjaI6RVkzx2O5CV',
|
||||
|
||||
logUncaughtExceptions: true,
|
||||
globalLabels: {},
|
||||
centralConfig: false,
|
||||
|
||||
// Can be performance intensive, disabling by default
|
||||
breakdownMetrics: isDistributable ? false : true,
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -84,7 +78,8 @@ export class ApmConfiguration {
|
|||
getDefaultConfig(this.isDistributable),
|
||||
this.getConfigFromKibanaConfig(),
|
||||
this.getDevConfig(),
|
||||
this.getDistConfig()
|
||||
this.getDistConfig(),
|
||||
this.getCIConfig()
|
||||
);
|
||||
|
||||
const rev = this.getGitRev();
|
||||
|
@ -146,6 +141,21 @@ export class ApmConfiguration {
|
|||
};
|
||||
}
|
||||
|
||||
private getCIConfig(): ApmAgentConfig {
|
||||
if (process.env.ELASTIC_APM_ENVIRONMENT !== 'ci') {
|
||||
return {};
|
||||
}
|
||||
|
||||
return {
|
||||
globalLabels: {
|
||||
branch: process.env.ghprbSourceBranch || '',
|
||||
targetBranch: process.env.ghprbTargetBranch || '',
|
||||
ciJobName: process.env.JOB_NAME || '',
|
||||
ciBuildNumber: process.env.BUILD_NUMBER || '',
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
private getGitRev() {
|
||||
if (this.isDistributable) {
|
||||
return this.pkgBuild.sha;
|
||||
|
|
|
@ -24,6 +24,10 @@ export NODE_OPTIONS="$NODE_OPTIONS --max-old-space-size=4096"
|
|||
###
|
||||
export FORCE_COLOR=1
|
||||
|
||||
### APM tracking
|
||||
###
|
||||
export ELASTIC_APM_ENVIRONMENT=ci
|
||||
|
||||
###
|
||||
### check that we seem to be in a kibana project
|
||||
###
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue