applicationinsights
Version:
Microsoft Application Insights module for Node.js
94 lines • 4.93 kB
JavaScript
"use strict";
var CorrelationIdManager = require("./CorrelationIdManager");
var ConnectionStringParser = require("./ConnectionStringParser");
var Constants = require("../Declarations/Constants");
var url = require("url");
var Config = (function () {
function Config(setupString) {
var _this = this;
this.endpointBase = Constants.DEFAULT_BREEZE_ENDPOINT;
var connectionStringEnv = process.env[Config.ENV_connectionString];
var csCode = ConnectionStringParser.parse(setupString);
var csEnv = ConnectionStringParser.parse(connectionStringEnv);
var iKeyCode = !csCode.instrumentationkey && Object.keys(csCode).length > 0
? null // CS was valid but instrumentation key was not provided, null and grab from env var
: setupString; // CS was invalid, so it must be an ikey
this.instrumentationKey = csCode.instrumentationkey || iKeyCode /* === instrumentationKey */ || csEnv.instrumentationkey || Config._getInstrumentationKey();
this.endpointUrl = (csCode.ingestionendpoint || csEnv.ingestionendpoint || this.endpointBase) + "/v2/track";
this.maxBatchSize = 250;
this.maxBatchIntervalMs = 15000;
this.disableAppInsights = false;
this.samplingPercentage = 100;
this.correlationIdRetryIntervalMs = 30 * 1000;
this.correlationHeaderExcludedDomains = [
"*.core.windows.net",
"*.core.chinacloudapi.cn",
"*.core.cloudapi.de",
"*.core.usgovcloudapi.net",
"*.core.microsoft.scloud",
"*.core.eaglex.ic.gov"
];
this.setCorrelationId = function (correlationId) { return _this.correlationId = correlationId; };
this.proxyHttpUrl = process.env[Config.ENV_http_proxy] || undefined;
this.proxyHttpsUrl = process.env[Config.ENV_https_proxy] || undefined;
this.httpAgent = undefined;
this.httpsAgent = undefined;
this.profileQueryEndpoint = csCode.ingestionendpoint || csEnv.ingestionendpoint || process.env[Config.ENV_profileQueryEndpoint] || this.endpointBase;
this._quickPulseHost = csCode.liveendpoint || csEnv.liveendpoint || process.env[Config.ENV_quickPulseHost] || Constants.DEFAULT_LIVEMETRICS_HOST;
// Parse quickPulseHost if it starts with http(s)://
if (this._quickPulseHost.match(/^https?:\/\//)) {
this._quickPulseHost = url.parse(this._quickPulseHost).host;
}
}
Object.defineProperty(Config.prototype, "profileQueryEndpoint", {
get: function () {
return this._profileQueryEndpoint;
},
set: function (endpoint) {
CorrelationIdManager.cancelCorrelationIdQuery(this, this.setCorrelationId);
this._profileQueryEndpoint = endpoint;
this.correlationId = CorrelationIdManager.correlationIdPrefix; // Reset the correlationId while we wait for the new query
CorrelationIdManager.queryCorrelationId(this, this.setCorrelationId);
},
enumerable: true,
configurable: true
});
Object.defineProperty(Config.prototype, "quickPulseHost", {
get: function () {
return this._quickPulseHost;
},
set: function (host) {
this._quickPulseHost = host;
},
enumerable: true,
configurable: true
});
Config._getInstrumentationKey = function () {
// check for both the documented env variable and the azure-prefixed variable
var iKey = process.env[Config.ENV_iKey]
|| process.env[Config.ENV_azurePrefix + Config.ENV_iKey]
|| process.env[Config.legacy_ENV_iKey]
|| process.env[Config.ENV_azurePrefix + Config.legacy_ENV_iKey];
if (!iKey || iKey == "") {
throw new Error("Instrumentation key not found, pass the key in the config to this method or set the key in the environment variable APPINSIGHTS_INSTRUMENTATIONKEY before starting the server");
}
return iKey;
};
// Azure adds this prefix to all environment variables
Config.ENV_azurePrefix = "APPSETTING_";
// This key is provided in the readme
Config.ENV_iKey = "APPINSIGHTS_INSTRUMENTATIONKEY";
Config.legacy_ENV_iKey = "APPINSIGHTS_INSTRUMENTATION_KEY";
Config.ENV_profileQueryEndpoint = "APPINSIGHTS_PROFILE_QUERY_ENDPOINT";
Config.ENV_quickPulseHost = "APPINSIGHTS_QUICKPULSE_HOST";
// Azure Connection String
Config.ENV_connectionString = "APPLICATIONINSIGHTS_CONNECTION_STRING";
// Native Metrics Opt Outs
Config.ENV_nativeMetricsDisablers = "APPLICATION_INSIGHTS_DISABLE_EXTENDED_METRIC";
Config.ENV_nativeMetricsDisableAll = "APPLICATION_INSIGHTS_DISABLE_ALL_EXTENDED_METRICS";
Config.ENV_http_proxy = "http_proxy";
Config.ENV_https_proxy = "https_proxy";
return Config;
}());
module.exports = Config;
//# sourceMappingURL=Config.js.map