applicationinsights
Version:
Microsoft Application Insights module for Node.js
96 lines • 4.81 kB
JavaScript
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AppServicesLoader = void 0;
const os = __importStar(require("os"));
const path = __importStar(require("path"));
const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
const resources_1 = require("@opentelemetry/resources");
const diagnosticLogger_1 = require("./diagnostics/diagnosticLogger");
const etwDiagnosticLogger_1 = require("./diagnostics/etwDiagnosticLogger");
const fileWriter_1 = require("./diagnostics/writers/fileWriter");
const statusLogger_1 = require("./diagnostics/statusLogger");
const agentLoader_1 = require("./agentLoader");
class AppServicesLoader extends agentLoader_1.AgentLoader {
constructor() {
super();
if (this._canLoad) {
// Azure App Services specific configuration
const resourceAttributes = {};
if (process.env.WEBSITE_SITE_NAME) {
resourceAttributes[semantic_conventions_1.SEMRESATTRS_SERVICE_NAME] =
process.env.WEBSITE_SITE_NAME;
}
if (process.env.WEBSITE_INSTANCE_ID) {
resourceAttributes[semantic_conventions_1.SEMRESATTRS_SERVICE_INSTANCE_ID] =
process.env.WEBSITE_INSTANCE_ID;
}
const resource = (0, resources_1.resourceFromAttributes)(resourceAttributes);
this._options.resource = resource;
let statusLogDir = '/var/log/applicationinsights/';
if (this._isWindows) {
if (process.env.HOME) {
statusLogDir = path.join(process.env.HOME, "LogFiles", "ApplicationInsights", "status");
}
else {
statusLogDir = path.join(os.tmpdir(), "Microsoft", "ApplicationInsights", "StatusMonitor", "LogFiles", "ApplicationInsights", "status");
}
}
this._statusLogger = new statusLogger_1.StatusLogger(this._instrumentationKey, new fileWriter_1.FileWriter(statusLogDir, 'status_nodejs.json', {
append: false,
deleteOnExit: false,
renamePolicy: 'overwrite',
sizeLimit: 1024 * 1024,
}));
if (this._isWindows) {
try {
this._diagnosticLogger = new etwDiagnosticLogger_1.EtwDiagnosticLogger(this._instrumentationKey);
}
catch (error) {
// Fallback to DiagnosticLogger with FileWriter if ETW initialization fails
// This is useful for test environments or systems without ETW capability
this._diagnosticLogger = new diagnosticLogger_1.DiagnosticLogger(this._instrumentationKey, new fileWriter_1.FileWriter(statusLogDir, 'applicationinsights-extension.log', {
append: true,
deleteOnExit: false,
renamePolicy: 'overwrite',
sizeLimit: 1024 * 1024, // 1 MB
}));
}
}
else {
this._diagnosticLogger = new diagnosticLogger_1.DiagnosticLogger(this._instrumentationKey, new fileWriter_1.FileWriter(statusLogDir, 'applicationinsights-extension.log', {
append: true,
deleteOnExit: false,
renamePolicy: 'overwrite',
sizeLimit: 1024 * 1024, // 1 MB
}));
}
}
}
}
exports.AppServicesLoader = AppServicesLoader;
//# sourceMappingURL=appServicesLoader.js.map
;