@azure/monitor-opentelemetry-exporter 1.0.0-beta.25 → 1.0.0-beta.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/index.js +205 -42
  2. package/dist-esm/src/Declarations/Constants.js +7 -2
  3. package/dist-esm/src/Declarations/Constants.js.map +1 -1
  4. package/dist-esm/src/Declarations/Contracts/Constants.js +1 -1
  5. package/dist-esm/src/Declarations/Contracts/Constants.js.map +1 -1
  6. package/dist-esm/src/Declarations/Contracts/index.js +1 -1
  7. package/dist-esm/src/Declarations/Contracts/index.js.map +1 -1
  8. package/dist-esm/src/config.js.map +1 -1
  9. package/dist-esm/src/export/base.js +3 -3
  10. package/dist-esm/src/export/base.js.map +1 -1
  11. package/dist-esm/src/export/log.js +2 -1
  12. package/dist-esm/src/export/log.js.map +1 -1
  13. package/dist-esm/src/export/metric.js +2 -1
  14. package/dist-esm/src/export/metric.js.map +1 -1
  15. package/dist-esm/src/export/statsbeat/longIntervalStatsbeatMetrics.js +1 -1
  16. package/dist-esm/src/export/statsbeat/longIntervalStatsbeatMetrics.js.map +1 -1
  17. package/dist-esm/src/export/statsbeat/networkStatsbeatMetrics.js +38 -1
  18. package/dist-esm/src/export/statsbeat/networkStatsbeatMetrics.js.map +1 -1
  19. package/dist-esm/src/export/statsbeat/statsbeatExporter.js +2 -2
  20. package/dist-esm/src/export/statsbeat/statsbeatExporter.js.map +1 -1
  21. package/dist-esm/src/export/statsbeat/statsbeatMetrics.js +1 -1
  22. package/dist-esm/src/export/statsbeat/statsbeatMetrics.js.map +1 -1
  23. package/dist-esm/src/export/statsbeat/types.js +15 -1
  24. package/dist-esm/src/export/statsbeat/types.js.map +1 -1
  25. package/dist-esm/src/export/trace.js +2 -1
  26. package/dist-esm/src/export/trace.js.map +1 -1
  27. package/dist-esm/src/generated/applicationInsightsClient.js +1 -1
  28. package/dist-esm/src/generated/applicationInsightsClient.js.map +1 -1
  29. package/dist-esm/src/index.js +1 -1
  30. package/dist-esm/src/index.js.map +1 -1
  31. package/dist-esm/src/platform/index.js +1 -1
  32. package/dist-esm/src/platform/index.js.map +1 -1
  33. package/dist-esm/src/platform/nodejs/baseSender.js +19 -5
  34. package/dist-esm/src/platform/nodejs/baseSender.js.map +1 -1
  35. package/dist-esm/src/platform/nodejs/constants.js +1 -1
  36. package/dist-esm/src/platform/nodejs/constants.js.map +1 -1
  37. package/dist-esm/src/platform/nodejs/context/context.js +1 -1
  38. package/dist-esm/src/platform/nodejs/context/context.js.map +1 -1
  39. package/dist-esm/src/platform/nodejs/context/index.js +1 -1
  40. package/dist-esm/src/platform/nodejs/context/index.js.map +1 -1
  41. package/dist-esm/src/platform/nodejs/httpSender.js +1 -1
  42. package/dist-esm/src/platform/nodejs/httpSender.js.map +1 -1
  43. package/dist-esm/src/platform/nodejs/index.js +1 -1
  44. package/dist-esm/src/platform/nodejs/index.js.map +1 -1
  45. package/dist-esm/src/platform/nodejs/persist/fileAccessControl.js +1 -1
  46. package/dist-esm/src/platform/nodejs/persist/fileAccessControl.js.map +1 -1
  47. package/dist-esm/src/platform/nodejs/persist/fileSystemHelpers.js +1 -1
  48. package/dist-esm/src/platform/nodejs/persist/fileSystemHelpers.js.map +1 -1
  49. package/dist-esm/src/platform/nodejs/persist/fileSystemPersist.js +1 -2
  50. package/dist-esm/src/platform/nodejs/persist/fileSystemPersist.js.map +1 -1
  51. package/dist-esm/src/platform/nodejs/persist/index.js +1 -1
  52. package/dist-esm/src/platform/nodejs/persist/index.js.map +1 -1
  53. package/dist-esm/src/sampling.js.map +1 -1
  54. package/dist-esm/src/types.js +12 -1
  55. package/dist-esm/src/types.js.map +1 -1
  56. package/dist-esm/src/utils/breezeUtils.js +1 -1
  57. package/dist-esm/src/utils/breezeUtils.js.map +1 -1
  58. package/dist-esm/src/utils/common.js +28 -1
  59. package/dist-esm/src/utils/common.js.map +1 -1
  60. package/dist-esm/src/utils/connectionStringParser.js +1 -1
  61. package/dist-esm/src/utils/connectionStringParser.js.map +1 -1
  62. package/dist-esm/src/utils/constants/applicationinsights.js +2 -2
  63. package/dist-esm/src/utils/constants/applicationinsights.js.map +1 -1
  64. package/dist-esm/src/utils/constants/span/azAttributes.js +1 -1
  65. package/dist-esm/src/utils/constants/span/azAttributes.js.map +1 -1
  66. package/dist-esm/src/utils/eventhub.js +1 -1
  67. package/dist-esm/src/utils/eventhub.js.map +1 -1
  68. package/dist-esm/src/utils/logUtils.js +13 -3
  69. package/dist-esm/src/utils/logUtils.js.map +1 -1
  70. package/dist-esm/src/utils/metricUtils.js +1 -1
  71. package/dist-esm/src/utils/metricUtils.js.map +1 -1
  72. package/dist-esm/src/utils/spanUtils.js +51 -6
  73. package/dist-esm/src/utils/spanUtils.js.map +1 -1
  74. package/package.json +30 -31
@@ -1 +1 @@
1
- {"version":3,"file":"Constants.js","sourceRoot":"","sources":["../../../src/Declarations/Constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;GAEG;AACH,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B;;OAEG;IACH,8CAAyB,CAAA;AAC3B,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,sCAAsC,CAAC;AAC9E;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,EAAE,CAAC;AAC/D;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,sCAAsC,CAAC;AACnF;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,8BAA8B,CAAC;AACvE;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,uCAAuC,CAAC;AAC7E;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,gCAAgC,CAAC;AACxE;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,mCAAmC,CAAC;AACzE;;;GAGG;AACH,MAAM,CAAC,MAAM,0CAA0C,GACrD,4DAA4D,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAN,IAAY,iBAmBX;AAnBD,WAAY,iBAAiB;IAC3B,SAAS;IACT,kEAA6C,CAAA;IAE7C,MAAM;IACN,6EAAwD,CAAA;IAExD,UAAU;IACV,yEAAoD,CAAA;IACpD,wFAAmE,CAAA;IACnE,iFAA4D,CAAA;IAE5D,aAAa;IACb,oFAA+D,CAAA;IAC/D,mGAA8E,CAAA;IAC9E,4FAAuE,CAAA;IAEvE,YAAY;IACZ,6EAAwD,CAAA;AAC1D,CAAC,EAnBW,iBAAiB,KAAjB,iBAAiB,QAmB5B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,kBAYX;AAZD,WAAY,kBAAkB;IAC5B,SAAS;IACT,oFAA8D,CAAA;IAC9D,mEAA6C,CAAA;IAE7C,MAAM;IACN,8EAAwD,CAAA;IACxD,sFAAgE,CAAA;IAEhE,WAAW;IACX,+FAAyE,CAAA;IACzE,6GAAuF,CAAA;AACzF,CAAC,EAZW,kBAAkB,KAAlB,kBAAkB,QAY7B;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAyC;IAClF,CAAC,kBAAkB,CAAC,cAAc,CAAC,EAAE,iBAAiB,CAAC,cAAc;IACrE,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC,YAAY;IACjE,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,gBAAgB;IAEzE,kCAAkC;IAClC,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC,eAAe;IACtE,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,EAAE,iBAAiB,CAAC,oBAAoB;IAChF,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC,eAAe;IACtE,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,EAAE,iBAAiB,CAAC,uBAAuB;IACtF,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,EAAE,iBAAiB,CAAC,mBAAmB;IAC9E,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,iBAAiB,CAAC,cAAc;CACrE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Azure service API version.\n */\nexport enum ServiceApiVersion {\n /**\n * V2 Version\n */\n V2 = \"2020-09-15_Preview\",\n}\n\n/**\n * Default Breeze endpoint.\n * @internal\n */\nexport const DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\n/**\n * Default Breeze API version.\n * @internal\n */\nexport const DEFAULT_BREEZE_API_VERSION = ServiceApiVersion.V2;\n/**\n * Default Live Metrics endpoint.\n * @internal\n */\nexport const DEFAULT_LIVEMETRICS_ENDPOINT = \"https://rt.services.visualstudio.com\";\n/**\n * Default Live Metrics host.\n * @internal\n */\nexport const DEFAULT_LIVEMETRICS_HOST = \"rt.services.visualstudio.com\";\n/**\n * Connection string environment variable name.\n * @internal\n */\nexport const ENV_CONNECTION_STRING = \"APPLICATIONINSIGHTS_CONNECTION_STRING\";\n/**\n * Instrumentation key environment variable name.\n * @internal\n */\nexport const ENV_INSTRUMENTATION_KEY = \"APPINSIGHTS_INSTRUMENTATIONKEY\";\n/**\n * Disable Statsbeat environment variable name.\n * @internal\n */\nexport const ENV_DISABLE_STATSBEAT = \"APPLICATION_INSIGHTS_NO_STATSBEAT\";\n/**\n * Disable OpenTelemetry Resource Metric.\n * @internal\n */\nexport const ENV_OPENTELEMETRY_RESOURCE_METRIC_DISABLED =\n \"APPLICATIONINSIGHTS_OPENTELEMETRY_RESOURCE_METRIC_DISABLED\";\n\n/**\n * QuickPulse metric counter names.\n * @internal\n */\nexport enum QuickPulseCounter {\n // Memory\n COMMITTED_BYTES = \"\\\\Memory\\\\Committed Bytes\",\n\n // CPU\n PROCESSOR_TIME = \"\\\\Processor(_Total)\\\\% Processor Time\",\n\n // Request\n REQUEST_RATE = \"\\\\ApplicationInsights\\\\Requests/Sec\",\n REQUEST_FAILURE_RATE = \"\\\\ApplicationInsights\\\\Requests Failed/Sec\",\n REQUEST_DURATION = \"\\\\ApplicationInsights\\\\Request Duration\",\n\n // Dependency\n DEPENDENCY_RATE = \"\\\\ApplicationInsights\\\\Dependency Calls/Sec\",\n DEPENDENCY_FAILURE_RATE = \"\\\\ApplicationInsights\\\\Dependency Calls Failed/Sec\",\n DEPENDENCY_DURATION = \"\\\\ApplicationInsights\\\\Dependency Call Duration\",\n\n // Exception\n EXCEPTION_RATE = \"\\\\ApplicationInsights\\\\Exceptions/Sec\",\n}\n\n/**\n * Performance metric counter names.\n * @internal\n */\nexport enum PerformanceCounter {\n // Memory\n PRIVATE_BYTES = \"\\\\Process(??APP_WIN32_PROC??)\\\\Private Bytes\",\n AVAILABLE_BYTES = \"\\\\Memory\\\\Available Bytes\",\n\n // CPU\n PROCESSOR_TIME = \"\\\\Processor(_Total)\\\\% Processor Time\",\n PROCESS_TIME = \"\\\\Process(??APP_WIN32_PROC??)\\\\% Processor Time\",\n\n // Requests\n REQUEST_RATE = \"\\\\ASP.NET Applications(??APP_W3SVC_PROC??)\\\\Requests/Sec\",\n REQUEST_DURATION = \"\\\\ASP.NET Applications(??APP_W3SVC_PROC??)\\\\Request Execution Time\",\n}\n\n/**\n * Map a PerformanceCounter/QuickPulseCounter to a QuickPulseCounter. If no mapping exists, mapping is *undefined*\n * @internal\n */\nexport const PerformanceToQuickPulseCounter: { [key: string]: QuickPulseCounter } = {\n [PerformanceCounter.PROCESSOR_TIME]: QuickPulseCounter.PROCESSOR_TIME,\n [PerformanceCounter.REQUEST_RATE]: QuickPulseCounter.REQUEST_RATE,\n [PerformanceCounter.REQUEST_DURATION]: QuickPulseCounter.REQUEST_DURATION,\n\n // Remap quick pulse only counters\n [QuickPulseCounter.COMMITTED_BYTES]: QuickPulseCounter.COMMITTED_BYTES,\n [QuickPulseCounter.REQUEST_FAILURE_RATE]: QuickPulseCounter.REQUEST_FAILURE_RATE,\n [QuickPulseCounter.DEPENDENCY_RATE]: QuickPulseCounter.DEPENDENCY_RATE,\n [QuickPulseCounter.DEPENDENCY_FAILURE_RATE]: QuickPulseCounter.DEPENDENCY_FAILURE_RATE,\n [QuickPulseCounter.DEPENDENCY_DURATION]: QuickPulseCounter.DEPENDENCY_DURATION,\n [QuickPulseCounter.EXCEPTION_RATE]: QuickPulseCounter.EXCEPTION_RATE,\n};\n\n/**\n * QuickPulse document types.\n * @internal\n */\nexport type QuickPulseDocumentType =\n | \"Event\"\n | \"Exception\"\n | \"Trace\"\n | \"Metric\"\n | \"Request\"\n | \"RemoteDependency\"\n | \"Availability\";\n/**\n * QuickPulse telemetry types.\n * @internal\n */\nexport type QuickPulseType =\n | \"EventTelemetryDocument\"\n | \"ExceptionTelemetryDocument\"\n | \"TraceTelemetryDocument\"\n | \"MetricTelemetryDocument\"\n | \"RequestTelemetryDocument\"\n | \"DependencyTelemetryDocument\"\n | \"AvailabilityTelemetryDocument\";\n"]}
1
+ {"version":3,"file":"Constants.js","sourceRoot":"","sources":["../../../src/Declarations/Constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;GAEG;AACH,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B;;OAEG;IACH,8CAAyB,CAAA;AAC3B,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,sCAAsC,CAAC;AAC9E;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,EAAE,CAAC;AAC/D;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,sCAAsC,CAAC;AACnF;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,8BAA8B,CAAC;AACvE;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,uCAAuC,CAAC;AAC7E;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,gCAAgC,CAAC;AACxE;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,wCAAwC,CAAC;AAC9E;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,mCAAmC,CAAC;AAChF;;;GAGG;AACH,MAAM,CAAC,MAAM,0CAA0C,GACrD,4DAA4D,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAN,IAAY,iBAmBX;AAnBD,WAAY,iBAAiB;IAC3B,SAAS;IACT,kEAA6C,CAAA;IAE7C,MAAM;IACN,6EAAwD,CAAA;IAExD,UAAU;IACV,yEAAoD,CAAA;IACpD,wFAAmE,CAAA;IACnE,iFAA4D,CAAA;IAE5D,aAAa;IACb,oFAA+D,CAAA;IAC/D,mGAA8E,CAAA;IAC9E,4FAAuE,CAAA;IAEvE,YAAY;IACZ,6EAAwD,CAAA;AAC1D,CAAC,EAnBW,iBAAiB,KAAjB,iBAAiB,QAmB5B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,kBAYX;AAZD,WAAY,kBAAkB;IAC5B,SAAS;IACT,oFAA8D,CAAA;IAC9D,mEAA6C,CAAA;IAE7C,MAAM;IACN,8EAAwD,CAAA;IACxD,sFAAgE,CAAA;IAEhE,WAAW;IACX,+FAAyE,CAAA;IACzE,6GAAuF,CAAA;AACzF,CAAC,EAZW,kBAAkB,KAAlB,kBAAkB,QAY7B;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAyC;IAClF,CAAC,kBAAkB,CAAC,cAAc,CAAC,EAAE,iBAAiB,CAAC,cAAc;IACrE,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC,YAAY;IACjE,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,gBAAgB;IAEzE,kCAAkC;IAClC,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC,eAAe;IACtE,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,EAAE,iBAAiB,CAAC,oBAAoB;IAChF,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC,eAAe;IACtE,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,EAAE,iBAAiB,CAAC,uBAAuB;IACtF,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,EAAE,iBAAiB,CAAC,mBAAmB;IAC9E,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,iBAAiB,CAAC,cAAc;CACrE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Azure service API version.\n */\nexport enum ServiceApiVersion {\n /**\n * V2 Version\n */\n V2 = \"2020-09-15_Preview\",\n}\n\n/**\n * Default Breeze endpoint.\n * @internal\n */\nexport const DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\n/**\n * Default Breeze API version.\n * @internal\n */\nexport const DEFAULT_BREEZE_API_VERSION = ServiceApiVersion.V2;\n/**\n * Default Live Metrics endpoint.\n * @internal\n */\nexport const DEFAULT_LIVEMETRICS_ENDPOINT = \"https://rt.services.visualstudio.com\";\n/**\n * Default Live Metrics host.\n * @internal\n */\nexport const DEFAULT_LIVEMETRICS_HOST = \"rt.services.visualstudio.com\";\n/**\n * Connection string environment variable name.\n * @internal\n */\nexport const ENV_CONNECTION_STRING = \"APPLICATIONINSIGHTS_CONNECTION_STRING\";\n/**\n * Instrumentation key environment variable name.\n * @internal\n */\nexport const ENV_INSTRUMENTATION_KEY = \"APPINSIGHTS_INSTRUMENTATIONKEY\";\n/**\n * Disable Statsbeat environment variable name.\n * @internal\n */\nexport const ENV_DISABLE_STATSBEAT = \"APPLICATIONINSIGHTS_STATSBEAT_DISABLED\";\n/**\n * Legacy disable Statsbeat environment variable name.\n * @internal\n */\nexport const LEGACY_ENV_DISABLE_STATSBEAT = \"APPLICATION_INSIGHTS_NO_STATSBEAT\";\n/**\n * Disable OpenTelemetry Resource Metric.\n * @internal\n */\nexport const ENV_OPENTELEMETRY_RESOURCE_METRIC_DISABLED =\n \"APPLICATIONINSIGHTS_OPENTELEMETRY_RESOURCE_METRIC_DISABLED\";\n\n/**\n * QuickPulse metric counter names.\n * @internal\n */\nexport enum QuickPulseCounter {\n // Memory\n COMMITTED_BYTES = \"\\\\Memory\\\\Committed Bytes\",\n\n // CPU\n PROCESSOR_TIME = \"\\\\Processor(_Total)\\\\% Processor Time\",\n\n // Request\n REQUEST_RATE = \"\\\\ApplicationInsights\\\\Requests/Sec\",\n REQUEST_FAILURE_RATE = \"\\\\ApplicationInsights\\\\Requests Failed/Sec\",\n REQUEST_DURATION = \"\\\\ApplicationInsights\\\\Request Duration\",\n\n // Dependency\n DEPENDENCY_RATE = \"\\\\ApplicationInsights\\\\Dependency Calls/Sec\",\n DEPENDENCY_FAILURE_RATE = \"\\\\ApplicationInsights\\\\Dependency Calls Failed/Sec\",\n DEPENDENCY_DURATION = \"\\\\ApplicationInsights\\\\Dependency Call Duration\",\n\n // Exception\n EXCEPTION_RATE = \"\\\\ApplicationInsights\\\\Exceptions/Sec\",\n}\n\n/**\n * Performance metric counter names.\n * @internal\n */\nexport enum PerformanceCounter {\n // Memory\n PRIVATE_BYTES = \"\\\\Process(??APP_WIN32_PROC??)\\\\Private Bytes\",\n AVAILABLE_BYTES = \"\\\\Memory\\\\Available Bytes\",\n\n // CPU\n PROCESSOR_TIME = \"\\\\Processor(_Total)\\\\% Processor Time\",\n PROCESS_TIME = \"\\\\Process(??APP_WIN32_PROC??)\\\\% Processor Time\",\n\n // Requests\n REQUEST_RATE = \"\\\\ASP.NET Applications(??APP_W3SVC_PROC??)\\\\Requests/Sec\",\n REQUEST_DURATION = \"\\\\ASP.NET Applications(??APP_W3SVC_PROC??)\\\\Request Execution Time\",\n}\n\n/**\n * Map a PerformanceCounter/QuickPulseCounter to a QuickPulseCounter. If no mapping exists, mapping is *undefined*\n * @internal\n */\nexport const PerformanceToQuickPulseCounter: { [key: string]: QuickPulseCounter } = {\n [PerformanceCounter.PROCESSOR_TIME]: QuickPulseCounter.PROCESSOR_TIME,\n [PerformanceCounter.REQUEST_RATE]: QuickPulseCounter.REQUEST_RATE,\n [PerformanceCounter.REQUEST_DURATION]: QuickPulseCounter.REQUEST_DURATION,\n\n // Remap quick pulse only counters\n [QuickPulseCounter.COMMITTED_BYTES]: QuickPulseCounter.COMMITTED_BYTES,\n [QuickPulseCounter.REQUEST_FAILURE_RATE]: QuickPulseCounter.REQUEST_FAILURE_RATE,\n [QuickPulseCounter.DEPENDENCY_RATE]: QuickPulseCounter.DEPENDENCY_RATE,\n [QuickPulseCounter.DEPENDENCY_FAILURE_RATE]: QuickPulseCounter.DEPENDENCY_FAILURE_RATE,\n [QuickPulseCounter.DEPENDENCY_DURATION]: QuickPulseCounter.DEPENDENCY_DURATION,\n [QuickPulseCounter.EXCEPTION_RATE]: QuickPulseCounter.EXCEPTION_RATE,\n};\n\n/**\n * QuickPulse document types.\n * @internal\n */\nexport type QuickPulseDocumentType =\n | \"Event\"\n | \"Exception\"\n | \"Trace\"\n | \"Metric\"\n | \"Request\"\n | \"RemoteDependency\"\n | \"Availability\";\n/**\n * QuickPulse telemetry types.\n * @internal\n */\nexport type QuickPulseType =\n | \"EventTelemetryDocument\"\n | \"ExceptionTelemetryDocument\"\n | \"TraceTelemetryDocument\"\n | \"MetricTelemetryDocument\"\n | \"RequestTelemetryDocument\"\n | \"DependencyTelemetryDocument\"\n | \"AvailabilityTelemetryDocument\";\n"]}
@@ -1,4 +1,4 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  export {};
4
4
  //# sourceMappingURL=Constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Constants.js","sourceRoot":"","sources":["../../../../src/Declarations/Contracts/Constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * Subset of Connection String fields which this SDK can parse. Lower-typecased to\n * allow for case-insensitivity across field names.\n * @internal\n */\nexport type ConnectionString = { [key in ConnectionStringKey]?: string };\n\n/**\n * ConnectionString keys.\n * @internal\n */\nexport type ConnectionStringKey =\n | \"authorization\"\n | \"aadaudience\"\n | \"instrumentationkey\"\n | \"ingestionendpoint\"\n | \"liveendpoint\"\n | \"location\"\n | \"endpointsuffix\";\n"]}
1
+ {"version":3,"file":"Constants.js","sourceRoot":"","sources":["../../../../src/Declarations/Contracts/Constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Subset of Connection String fields which this SDK can parse. Lower-typecased to\n * allow for case-insensitivity across field names.\n * @internal\n */\nexport type ConnectionString = { [key in ConnectionStringKey]?: string };\n\n/**\n * ConnectionString keys.\n * @internal\n */\nexport type ConnectionStringKey =\n | \"authorization\"\n | \"aadaudience\"\n | \"instrumentationkey\"\n | \"ingestionendpoint\"\n | \"liveendpoint\"\n | \"location\"\n | \"endpointsuffix\";\n"]}
@@ -1,4 +1,4 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  export * from "./Constants";
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Declarations/Contracts/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,aAAa,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport * from \"./Constants\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Declarations/Contracts/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,aAAa,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./Constants\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { ServiceApiVersion } from \"./Declarations/Constants\";\nimport { ApplicationInsightsClientOptionalParams } from \"./generated\";\n\n/**\n * Provides configuration options for AzureMonitorTraceExporter.\n */\nexport interface AzureMonitorExporterOptions extends ApplicationInsightsClientOptionalParams {\n /**\n * Azure Monitor Connection String, if not provided the exporter will try to use environment variable APPLICATIONINSIGHTS_CONNECTION_STRING\n * Ex: \"InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://dc.services.visualstudio.com\"\n */\n connectionString?: string;\n /**\n * Azure service API version.\n */\n apiVersion?: ServiceApiVersion;\n /**\n * Token Credential\n */\n credential?: TokenCredential;\n /**\n * Directory to store retriable telemetry when it fails to export.\n */\n storageDirectory?: string;\n /**\n * Disable offline storage when telemetry cannot be exported.\n */\n disableOfflineStorage?: boolean;\n}\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { TokenCredential } from \"@azure/core-auth\";\nimport { ServiceApiVersion } from \"./Declarations/Constants\";\nimport { ApplicationInsightsClientOptionalParams } from \"./generated\";\n\n/**\n * Provides configuration options for AzureMonitorTraceExporter.\n */\nexport interface AzureMonitorExporterOptions extends ApplicationInsightsClientOptionalParams {\n /**\n * Azure Monitor Connection String, if not provided the exporter will try to use environment variable APPLICATIONINSIGHTS_CONNECTION_STRING\n * Ex: \"InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://dc.services.visualstudio.com\"\n */\n connectionString?: string;\n /**\n * Azure service API version.\n */\n apiVersion?: ServiceApiVersion;\n /**\n * Token Credential\n */\n credential?: TokenCredential;\n /**\n * Directory to store retriable telemetry when it fails to export.\n */\n storageDirectory?: string;\n /**\n * Disable offline storage when telemetry cannot be exported.\n */\n disableOfflineStorage?: boolean;\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  import { diag } from "@opentelemetry/api";
4
4
  import { ConnectionStringParser } from "../utils/connectionStringParser";
5
- import { DEFAULT_BREEZE_ENDPOINT, ENV_CONNECTION_STRING, ENV_DISABLE_STATSBEAT, } from "../Declarations/Constants";
5
+ import { DEFAULT_BREEZE_ENDPOINT, ENV_CONNECTION_STRING, LEGACY_ENV_DISABLE_STATSBEAT, } from "../Declarations/Constants";
6
6
  /**
7
7
  * Azure Monitor OpenTelemetry Trace Exporter.
8
8
  */
@@ -48,7 +48,7 @@ export class AzureMonitorBaseExporter {
48
48
  diag.error(message);
49
49
  throw new Error(message);
50
50
  }
51
- this.trackStatsbeat = !this.isStatsbeatExporter && !process.env[ENV_DISABLE_STATSBEAT];
51
+ this.trackStatsbeat = !this.isStatsbeatExporter && !process.env[LEGACY_ENV_DISABLE_STATSBEAT];
52
52
  diag.debug("AzureMonitorExporter was successfully setup");
53
53
  }
54
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/export/base.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,OAAgB,wBAAwB;IA4B5C;;;OAGG;IACH,YAAY,UAAuC,EAAE,EAAE,mBAA6B;;QA/BpF;;WAEG;QACO,uBAAkB,GAAW,EAAE,CAAC;QAC1C;;WAEG;QACO,gBAAW,GAAW,EAAE,CAAC;QACnC;;WAEG;QACO,mBAAc,GAAY,KAAK,CAAC;QAqBxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,uBAAuB,CAAC;QAC3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAC7F,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC;QAE7E,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,sBAAsB,GAAG,sBAAsB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC9E,IAAI,CAAC,kBAAkB;gBACrB,sBAAsB,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC;YACvE,IAAI,CAAC,WAAW,GAAG,CAAA,MAAA,sBAAsB,CAAC,iBAAiB,0CAAE,IAAI,EAAE,KAAI,IAAI,CAAC,WAAW,CAAC;YACxF,IAAI,CAAC,WAAW,GAAG,sBAAsB,CAAC,WAAW,CAAC;QACxD,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,MAAM,OAAO,GACX,wFAAwF,CAAC;YAC3F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAChF,MAAM,OAAO,GAAG,wEAAwE,CAAC;YACzF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAEvF,IAAI,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC5D,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { diag } from \"@opentelemetry/api\";\nimport { ConnectionStringParser } from \"../utils/connectionStringParser\";\nimport { AzureMonitorExporterOptions } from \"../config\";\nimport {\n DEFAULT_BREEZE_ENDPOINT,\n ENV_CONNECTION_STRING,\n ENV_DISABLE_STATSBEAT,\n} from \"../Declarations/Constants\";\n\n/**\n * Azure Monitor OpenTelemetry Trace Exporter.\n */\nexport abstract class AzureMonitorBaseExporter {\n /**\n * Instrumentation key to be used for exported envelopes\n */\n protected instrumentationKey: string = \"\";\n /**\n * Ingestion Endpoint URL\n */\n protected endpointUrl: string = \"\";\n /**\n *Flag to determine if exporter will generate Statsbeat data\n */\n protected trackStatsbeat: boolean = false;\n /**\n * Instrumentation key to be used for exported envelopes\n */\n protected aadAudience: string | undefined;\n\n /**\n * Flag to determine if the Exporter is a Statsbeat Exporter\n */\n private isStatsbeatExporter: boolean;\n\n /**\n * Exporter internal configuration\n */\n private readonly options: AzureMonitorExporterOptions;\n\n /**\n * Initializes a new instance of the AzureMonitorBaseExporter class.\n * @param AzureMonitorExporterOptions - Exporter configuration.\n */\n constructor(options: AzureMonitorExporterOptions = {}, isStatsbeatExporter?: boolean) {\n this.options = options;\n this.instrumentationKey = \"\";\n this.endpointUrl = DEFAULT_BREEZE_ENDPOINT;\n const connectionString = this.options.connectionString || process.env[ENV_CONNECTION_STRING];\n this.isStatsbeatExporter = isStatsbeatExporter ? isStatsbeatExporter : false;\n\n if (connectionString) {\n const parsedConnectionString = ConnectionStringParser.parse(connectionString);\n this.instrumentationKey =\n parsedConnectionString.instrumentationkey || this.instrumentationKey;\n this.endpointUrl = parsedConnectionString.ingestionendpoint?.trim() || this.endpointUrl;\n this.aadAudience = parsedConnectionString.aadaudience;\n }\n\n // Instrumentation key is required\n if (!this.instrumentationKey) {\n const message =\n \"No instrumentation key or connection string was provided to the Azure Monitor Exporter\";\n diag.error(message);\n throw new Error(message);\n }\n if (!ConnectionStringParser.validateInstrumentationKey(this.instrumentationKey)) {\n const message = \"Invalid instrumentation key was provided to the Azure Monitor Exporter\";\n diag.error(message);\n throw new Error(message);\n }\n this.trackStatsbeat = !this.isStatsbeatExporter && !process.env[ENV_DISABLE_STATSBEAT];\n\n diag.debug(\"AzureMonitorExporter was successfully setup\");\n }\n}\n"]}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/export/base.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,OAAgB,wBAAwB;IA4B5C;;;OAGG;IACH,YAAY,UAAuC,EAAE,EAAE,mBAA6B;;QA/BpF;;WAEG;QACO,uBAAkB,GAAW,EAAE,CAAC;QAC1C;;WAEG;QACO,gBAAW,GAAW,EAAE,CAAC;QACnC;;WAEG;QACO,mBAAc,GAAY,KAAK,CAAC;QAqBxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,uBAAuB,CAAC;QAC3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAC7F,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC;QAE7E,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,sBAAsB,GAAG,sBAAsB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC9E,IAAI,CAAC,kBAAkB;gBACrB,sBAAsB,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC;YACvE,IAAI,CAAC,WAAW,GAAG,CAAA,MAAA,sBAAsB,CAAC,iBAAiB,0CAAE,IAAI,EAAE,KAAI,IAAI,CAAC,WAAW,CAAC;YACxF,IAAI,CAAC,WAAW,GAAG,sBAAsB,CAAC,WAAW,CAAC;QACxD,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,MAAM,OAAO,GACX,wFAAwF,CAAC;YAC3F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAChF,MAAM,OAAO,GAAG,wEAAwE,CAAC;YACzF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAE9F,IAAI,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC5D,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { diag } from \"@opentelemetry/api\";\nimport { ConnectionStringParser } from \"../utils/connectionStringParser\";\nimport { AzureMonitorExporterOptions } from \"../config\";\nimport {\n DEFAULT_BREEZE_ENDPOINT,\n ENV_CONNECTION_STRING,\n LEGACY_ENV_DISABLE_STATSBEAT,\n} from \"../Declarations/Constants\";\n\n/**\n * Azure Monitor OpenTelemetry Trace Exporter.\n */\nexport abstract class AzureMonitorBaseExporter {\n /**\n * Instrumentation key to be used for exported envelopes\n */\n protected instrumentationKey: string = \"\";\n /**\n * Ingestion Endpoint URL\n */\n protected endpointUrl: string = \"\";\n /**\n *Flag to determine if exporter will generate Statsbeat data\n */\n protected trackStatsbeat: boolean = false;\n /**\n * Instrumentation key to be used for exported envelopes\n */\n protected aadAudience: string | undefined;\n\n /**\n * Flag to determine if the Exporter is a Statsbeat Exporter\n */\n private isStatsbeatExporter: boolean;\n\n /**\n * Exporter internal configuration\n */\n private readonly options: AzureMonitorExporterOptions;\n\n /**\n * Initializes a new instance of the AzureMonitorBaseExporter class.\n * @param AzureMonitorExporterOptions - Exporter configuration.\n */\n constructor(options: AzureMonitorExporterOptions = {}, isStatsbeatExporter?: boolean) {\n this.options = options;\n this.instrumentationKey = \"\";\n this.endpointUrl = DEFAULT_BREEZE_ENDPOINT;\n const connectionString = this.options.connectionString || process.env[ENV_CONNECTION_STRING];\n this.isStatsbeatExporter = isStatsbeatExporter ? isStatsbeatExporter : false;\n\n if (connectionString) {\n const parsedConnectionString = ConnectionStringParser.parse(connectionString);\n this.instrumentationKey =\n parsedConnectionString.instrumentationkey || this.instrumentationKey;\n this.endpointUrl = parsedConnectionString.ingestionendpoint?.trim() || this.endpointUrl;\n this.aadAudience = parsedConnectionString.aadaudience;\n }\n\n // Instrumentation key is required\n if (!this.instrumentationKey) {\n const message =\n \"No instrumentation key or connection string was provided to the Azure Monitor Exporter\";\n diag.error(message);\n throw new Error(message);\n }\n if (!ConnectionStringParser.validateInstrumentationKey(this.instrumentationKey)) {\n const message = \"Invalid instrumentation key was provided to the Azure Monitor Exporter\";\n diag.error(message);\n throw new Error(message);\n }\n this.trackStatsbeat = !this.isStatsbeatExporter && !process.env[LEGACY_ENV_DISABLE_STATSBEAT];\n\n diag.debug(\"AzureMonitorExporter was successfully setup\");\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  import { context, diag } from "@opentelemetry/api";
4
4
  import { ExportResultCode, suppressTracing } from "@opentelemetry/core";
5
5
  import { AzureMonitorBaseExporter } from "./base";
@@ -33,6 +33,7 @@ export class AzureMonitorLogExporter extends AzureMonitorBaseExporter {
33
33
  * @param logs - Logs to export.
34
34
  * @param resultCallback - Result callback.
35
35
  */
36
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
36
37
  async export(logs, resultCallback) {
37
38
  if (this._isShutdown) {
38
39
  diag.info("Exporter shut down. Failed to export spans.");
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/export/log.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAgB,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIlD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,wBAAwB;IAOnE;;;OAGG;IAEH,YAAY,UAAuC,EAAE;QACnD,KAAK,CAAC,OAAO,CAAC,CAAC;QAZjB;;WAEG;QACK,gBAAW,GAAG,KAAK,CAAC;QAU1B,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC;YAC5B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,eAAe,EAAE,OAAO;YACxB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,MAAM,CACjB,IAAyB,EACzB,cAA8C;QAE9C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YACzD,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,sCAAsC,CAAC,CAAC;QAE1E,MAAM,SAAS,GAAe,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACnB,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC7D,IAAI,QAAQ,EAAE,CAAC;gBACb,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,CAAC;QACH,0DAA0D;QAC1D,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE;YAC/D,cAAc,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { context, diag } from \"@opentelemetry/api\";\nimport { ExportResult, ExportResultCode, suppressTracing } from \"@opentelemetry/core\";\nimport { AzureMonitorBaseExporter } from \"./base\";\nimport { TelemetryItem as Envelope } from \"../generated\";\nimport { logToEnvelope } from \"../utils/logUtils\";\nimport { AzureMonitorExporterOptions } from \"../config\";\n\nimport type { ReadableLogRecord, LogRecordExporter } from \"@opentelemetry/sdk-logs\";\nimport { HttpSender } from \"../platform\";\n\n/**\n * Azure Monitor OpenTelemetry Log Exporter.\n */\nexport class AzureMonitorLogExporter extends AzureMonitorBaseExporter implements LogRecordExporter {\n /**\n * Flag to determine if Exporter is shutdown.\n */\n private _isShutdown = false;\n private readonly _sender: HttpSender;\n\n /**\n * Initializes a new instance of the AzureMonitorLogExporter class.\n * @param AzureExporterConfig - Exporter configuration.\n */\n\n constructor(options: AzureMonitorExporterOptions = {}) {\n super(options);\n this._sender = new HttpSender({\n endpointUrl: this.endpointUrl,\n instrumentationKey: this.instrumentationKey,\n trackStatsbeat: this.trackStatsbeat,\n exporterOptions: options,\n aadAudience: this.aadAudience,\n });\n diag.debug(\"AzureMonitorLogExporter was successfully setup\");\n }\n\n /**\n * Export OpenTelemetry logs.\n * @param logs - Logs to export.\n * @param resultCallback - Result callback.\n */\n public async export(\n logs: ReadableLogRecord[],\n resultCallback: (result: ExportResult) => void,\n ): Promise<void> {\n if (this._isShutdown) {\n diag.info(\"Exporter shut down. Failed to export spans.\");\n setTimeout(() => resultCallback({ code: ExportResultCode.FAILED }), 0);\n return;\n }\n diag.info(`Exporting ${logs.length} logs(s). Converting to envelopes...`);\n\n const envelopes: Envelope[] = [];\n logs.forEach((log) => {\n const envelope = logToEnvelope(log, this.instrumentationKey);\n if (envelope) {\n envelopes.push(envelope);\n }\n });\n // Supress tracing until OpenTelemetry Logs SDK support it\n await context.with(suppressTracing(context.active()), async () => {\n resultCallback(await this._sender.exportEnvelopes(envelopes));\n });\n }\n\n /**\n * Shutdown AzureMonitorLogExporter.\n */\n public async shutdown(): Promise<void> {\n this._isShutdown = true;\n diag.info(\"AzureMonitorLogExporter shutting down\");\n return this._sender.shutdown();\n }\n}\n"]}
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/export/log.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAgB,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIlD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,wBAAwB;IAOnE;;;OAGG;IAEH,YAAY,UAAuC,EAAE;QACnD,KAAK,CAAC,OAAO,CAAC,CAAC;QAZjB;;WAEG;QACK,gBAAW,GAAG,KAAK,CAAC;QAU1B,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC;YAC5B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,eAAe,EAAE,OAAO;YACxB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACH,kEAAkE;IAC3D,KAAK,CAAC,MAAM,CACjB,IAAyB,EACzB,cAA8C;QAE9C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YACzD,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,sCAAsC,CAAC,CAAC;QAE1E,MAAM,SAAS,GAAe,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACnB,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC7D,IAAI,QAAQ,EAAE,CAAC;gBACb,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,CAAC;QACH,0DAA0D;QAC1D,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE;YAC/D,cAAc,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { context, diag } from \"@opentelemetry/api\";\nimport { ExportResult, ExportResultCode, suppressTracing } from \"@opentelemetry/core\";\nimport { AzureMonitorBaseExporter } from \"./base\";\nimport { TelemetryItem as Envelope } from \"../generated\";\nimport { logToEnvelope } from \"../utils/logUtils\";\nimport { AzureMonitorExporterOptions } from \"../config\";\n\nimport type { ReadableLogRecord, LogRecordExporter } from \"@opentelemetry/sdk-logs\";\nimport { HttpSender } from \"../platform\";\n\n/**\n * Azure Monitor OpenTelemetry Log Exporter.\n */\nexport class AzureMonitorLogExporter extends AzureMonitorBaseExporter implements LogRecordExporter {\n /**\n * Flag to determine if Exporter is shutdown.\n */\n private _isShutdown = false;\n private readonly _sender: HttpSender;\n\n /**\n * Initializes a new instance of the AzureMonitorLogExporter class.\n * @param AzureExporterConfig - Exporter configuration.\n */\n\n constructor(options: AzureMonitorExporterOptions = {}) {\n super(options);\n this._sender = new HttpSender({\n endpointUrl: this.endpointUrl,\n instrumentationKey: this.instrumentationKey,\n trackStatsbeat: this.trackStatsbeat,\n exporterOptions: options,\n aadAudience: this.aadAudience,\n });\n diag.debug(\"AzureMonitorLogExporter was successfully setup\");\n }\n\n /**\n * Export OpenTelemetry logs.\n * @param logs - Logs to export.\n * @param resultCallback - Result callback.\n */\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n public async export(\n logs: ReadableLogRecord[],\n resultCallback: (result: ExportResult) => void,\n ): Promise<void> {\n if (this._isShutdown) {\n diag.info(\"Exporter shut down. Failed to export spans.\");\n setTimeout(() => resultCallback({ code: ExportResultCode.FAILED }), 0);\n return;\n }\n diag.info(`Exporting ${logs.length} logs(s). Converting to envelopes...`);\n\n const envelopes: Envelope[] = [];\n logs.forEach((log) => {\n const envelope = logToEnvelope(log, this.instrumentationKey);\n if (envelope) {\n envelopes.push(envelope);\n }\n });\n // Supress tracing until OpenTelemetry Logs SDK support it\n await context.with(suppressTracing(context.active()), async () => {\n resultCallback(await this._sender.exportEnvelopes(envelopes));\n });\n }\n\n /**\n * Shutdown AzureMonitorLogExporter.\n */\n public async shutdown(): Promise<void> {\n this._isShutdown = true;\n diag.info(\"AzureMonitorLogExporter shutting down\");\n return this._sender.shutdown();\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  import { context, diag } from "@opentelemetry/api";
4
4
  import { AggregationTemporality, InstrumentType, } from "@opentelemetry/sdk-metrics";
5
5
  import { ExportResultCode, suppressTracing } from "@opentelemetry/core";
@@ -34,6 +34,7 @@ export class AzureMonitorMetricExporter extends AzureMonitorBaseExporter {
34
34
  * @param metrics - Resource metrics to export.
35
35
  * @param resultCallback - Result callback.
36
36
  */
37
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
37
38
  async export(metrics, resultCallback) {
38
39
  if (this._isShutdown) {
39
40
  diag.info("Exporter shut down. Failed to export spans.");
@@ -1 +1 @@
1
- {"version":3,"file":"metric.js","sourceRoot":"","sources":["../../../src/export/metric.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,sBAAsB,EACtB,cAAc,GAGf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAgB,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,0BACX,SAAQ,wBAAwB;IAShC;;;OAGG;IAEH,YAAY,UAAuC,EAAE;QACnD,KAAK,CAAC,OAAO,CAAC,CAAC;QAZjB;;WAEG;QACK,gBAAW,GAAG,KAAK,CAAC;QAU1B,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC;YAC5B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,eAAe,EAAE,OAAO;YACxB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CACV,OAAwB,EACxB,cAA8C;QAE9C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YACzD,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,YAAY,CAAC,MAAM,yCAAyC,CAAC,CAAC;QAE7F,MAAM,SAAS,GAAe,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC1F,6DAA6D;QAC7D,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE;YAC/D,cAAc,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,4BAA4B,CAAC,cAA8B;QAChE,IACE,cAAc,KAAK,cAAc,CAAC,eAAe;YACjD,cAAc,KAAK,cAAc,CAAC,0BAA0B,EAC5D,CAAC;YACD,OAAO,sBAAsB,CAAC,UAAU,CAAC;QAC3C,CAAC;QACD,OAAO,sBAAsB,CAAC,KAAK,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU;QACrB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { context, diag } from \"@opentelemetry/api\";\nimport {\n AggregationTemporality,\n InstrumentType,\n PushMetricExporter,\n ResourceMetrics,\n} from \"@opentelemetry/sdk-metrics\";\nimport { ExportResult, ExportResultCode, suppressTracing } from \"@opentelemetry/core\";\nimport { AzureMonitorBaseExporter } from \"./base\";\nimport { TelemetryItem as Envelope } from \"../generated\";\nimport { resourceMetricsToEnvelope } from \"../utils/metricUtils\";\nimport { AzureMonitorExporterOptions } from \"../config\";\nimport { HttpSender } from \"../platform\";\n\n/**\n * Azure Monitor OpenTelemetry Metric Exporter.\n */\nexport class AzureMonitorMetricExporter\n extends AzureMonitorBaseExporter\n implements PushMetricExporter\n{\n /**\n * Flag to determine if Exporter is shutdown.\n */\n private _isShutdown = false;\n private _sender: HttpSender;\n\n /**\n * Initializes a new instance of the AzureMonitorMetricExporter class.\n * @param AzureExporterConfig - Exporter configuration.\n */\n\n constructor(options: AzureMonitorExporterOptions = {}) {\n super(options);\n this._sender = new HttpSender({\n endpointUrl: this.endpointUrl,\n instrumentationKey: this.instrumentationKey,\n trackStatsbeat: this.trackStatsbeat,\n exporterOptions: options,\n aadAudience: this.aadAudience,\n });\n diag.debug(\"AzureMonitorMetricExporter was successfully setup\");\n }\n\n /**\n * Export OpenTelemetry resource metrics.\n * @param metrics - Resource metrics to export.\n * @param resultCallback - Result callback.\n */\n async export(\n metrics: ResourceMetrics,\n resultCallback: (result: ExportResult) => void,\n ): Promise<void> {\n if (this._isShutdown) {\n diag.info(\"Exporter shut down. Failed to export spans.\");\n setTimeout(() => resultCallback({ code: ExportResultCode.FAILED }), 0);\n return;\n }\n diag.info(`Exporting ${metrics.scopeMetrics.length} metrics(s). Converting to envelopes...`);\n\n const envelopes: Envelope[] = resourceMetricsToEnvelope(metrics, this.instrumentationKey);\n // Supress tracing until OpenTelemetry Metrics SDK support it\n await context.with(suppressTracing(context.active()), async () => {\n resultCallback(await this._sender.exportEnvelopes(envelopes));\n });\n }\n\n /**\n * Shutdown AzureMonitorMetricExporter.\n */\n public async shutdown(): Promise<void> {\n this._isShutdown = true;\n diag.info(\"AzureMonitorMetricExporter shutting down\");\n return this._sender.shutdown();\n }\n\n /**\n * Select aggregation temporality\n */\n public selectAggregationTemporality(instrumentType: InstrumentType): AggregationTemporality {\n if (\n instrumentType === InstrumentType.UP_DOWN_COUNTER ||\n instrumentType === InstrumentType.OBSERVABLE_UP_DOWN_COUNTER\n ) {\n return AggregationTemporality.CUMULATIVE;\n }\n return AggregationTemporality.DELTA;\n }\n\n /**\n * Force flush\n */\n public async forceFlush(): Promise<void> {\n return Promise.resolve();\n }\n}\n"]}
1
+ {"version":3,"file":"metric.js","sourceRoot":"","sources":["../../../src/export/metric.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,sBAAsB,EACtB,cAAc,GAGf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAgB,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,0BACX,SAAQ,wBAAwB;IAShC;;;OAGG;IAEH,YAAY,UAAuC,EAAE;QACnD,KAAK,CAAC,OAAO,CAAC,CAAC;QAZjB;;WAEG;QACK,gBAAW,GAAG,KAAK,CAAC;QAU1B,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC;YAC5B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,eAAe,EAAE,OAAO;YACxB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACH,kEAAkE;IAClE,KAAK,CAAC,MAAM,CACV,OAAwB,EACxB,cAA8C;QAE9C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YACzD,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,YAAY,CAAC,MAAM,yCAAyC,CAAC,CAAC;QAE7F,MAAM,SAAS,GAAe,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC1F,6DAA6D;QAC7D,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE;YAC/D,cAAc,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,4BAA4B,CAAC,cAA8B;QAChE,IACE,cAAc,KAAK,cAAc,CAAC,eAAe;YACjD,cAAc,KAAK,cAAc,CAAC,0BAA0B,EAC5D,CAAC;YACD,OAAO,sBAAsB,CAAC,UAAU,CAAC;QAC3C,CAAC;QACD,OAAO,sBAAsB,CAAC,KAAK,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU;QACrB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { context, diag } from \"@opentelemetry/api\";\nimport {\n AggregationTemporality,\n InstrumentType,\n PushMetricExporter,\n ResourceMetrics,\n} from \"@opentelemetry/sdk-metrics\";\nimport { ExportResult, ExportResultCode, suppressTracing } from \"@opentelemetry/core\";\nimport { AzureMonitorBaseExporter } from \"./base\";\nimport { TelemetryItem as Envelope } from \"../generated\";\nimport { resourceMetricsToEnvelope } from \"../utils/metricUtils\";\nimport { AzureMonitorExporterOptions } from \"../config\";\nimport { HttpSender } from \"../platform\";\n\n/**\n * Azure Monitor OpenTelemetry Metric Exporter.\n */\nexport class AzureMonitorMetricExporter\n extends AzureMonitorBaseExporter\n implements PushMetricExporter\n{\n /**\n * Flag to determine if Exporter is shutdown.\n */\n private _isShutdown = false;\n private _sender: HttpSender;\n\n /**\n * Initializes a new instance of the AzureMonitorMetricExporter class.\n * @param AzureExporterConfig - Exporter configuration.\n */\n\n constructor(options: AzureMonitorExporterOptions = {}) {\n super(options);\n this._sender = new HttpSender({\n endpointUrl: this.endpointUrl,\n instrumentationKey: this.instrumentationKey,\n trackStatsbeat: this.trackStatsbeat,\n exporterOptions: options,\n aadAudience: this.aadAudience,\n });\n diag.debug(\"AzureMonitorMetricExporter was successfully setup\");\n }\n\n /**\n * Export OpenTelemetry resource metrics.\n * @param metrics - Resource metrics to export.\n * @param resultCallback - Result callback.\n */\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n async export(\n metrics: ResourceMetrics,\n resultCallback: (result: ExportResult) => void,\n ): Promise<void> {\n if (this._isShutdown) {\n diag.info(\"Exporter shut down. Failed to export spans.\");\n setTimeout(() => resultCallback({ code: ExportResultCode.FAILED }), 0);\n return;\n }\n diag.info(`Exporting ${metrics.scopeMetrics.length} metrics(s). Converting to envelopes...`);\n\n const envelopes: Envelope[] = resourceMetricsToEnvelope(metrics, this.instrumentationKey);\n // Supress tracing until OpenTelemetry Metrics SDK support it\n await context.with(suppressTracing(context.active()), async () => {\n resultCallback(await this._sender.exportEnvelopes(envelopes));\n });\n }\n\n /**\n * Shutdown AzureMonitorMetricExporter.\n */\n public async shutdown(): Promise<void> {\n this._isShutdown = true;\n diag.info(\"AzureMonitorMetricExporter shutting down\");\n return this._sender.shutdown();\n }\n\n /**\n * Select aggregation temporality\n */\n public selectAggregationTemporality(instrumentType: InstrumentType): AggregationTemporality {\n if (\n instrumentType === InstrumentType.UP_DOWN_COUNTER ||\n instrumentType === InstrumentType.OBSERVABLE_UP_DOWN_COUNTER\n ) {\n return AggregationTemporality.CUMULATIVE;\n }\n return AggregationTemporality.DELTA;\n }\n\n /**\n * Force flush\n */\n public async forceFlush(): Promise<void> {\n return Promise.resolve();\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  import { diag, } from "@opentelemetry/api";
4
4
  import { ExportResultCode } from "@opentelemetry/core";
5
5
  import { MeterProvider, PeriodicExportingMetricReader, } from "@opentelemetry/sdk-metrics";
@@ -1 +1 @@
1
- {"version":3,"file":"longIntervalStatsbeatMetrics.js","sourceRoot":"","sources":["../../../../src/export/statsbeat/longIntervalStatsbeatMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n diag,\n BatchObservableResult,\n ObservableGauge,\n ObservableResult,\n Meter,\n} from \"@opentelemetry/api\";\nimport { ExportResult, ExportResultCode } from \"@opentelemetry/core\";\nimport {\n MeterProvider,\n PeriodicExportingMetricReader,\n PeriodicExportingMetricReaderOptions,\n} from \"@opentelemetry/sdk-metrics\";\nimport { AzureMonitorExporterOptions } from \"../../index\";\nimport * as ai from \"../../utils/constants/applicationinsights\";\nimport { StatsbeatMetrics } from \"./statsbeatMetrics\";\nimport {\n StatsbeatCounter,\n STATSBEAT_LANGUAGE,\n CommonStatsbeatProperties,\n AttachStatsbeatProperties,\n StatsbeatFeatureType,\n StatsbeatOptions,\n} from \"./types\";\nimport { AzureMonitorStatsbeatExporter } from \"./statsbeatExporter\";\n\nlet instance: LongIntervalStatsbeatMetrics | null = null;\n\n/**\n * Long Interval Statsbeat Metrics\n * @internal\n */\nclass LongIntervalStatsbeatMetrics extends StatsbeatMetrics {\n private statsCollectionLongInterval: number = 86400000; // 1 day\n // Custom dimensions\n private cikey: string;\n private runtimeVersion: string;\n private language: string;\n private version: string;\n private attach: string = \"Manual\";\n\n private commonProperties: CommonStatsbeatProperties;\n private attachProperties: AttachStatsbeatProperties;\n\n private feature: number = 0;\n private instrumentation: number = 0;\n\n private longIntervalStatsbeatMeterProvider: MeterProvider;\n private longIntervalAzureExporter: AzureMonitorStatsbeatExporter;\n private longIntervalMetricReader: PeriodicExportingMetricReader;\n private longIntervalStatsbeatMeter: Meter;\n\n // Network Attributes\n private connectionString: string;\n\n // Observable Gauges\n private featureStatsbeatGauge: ObservableGauge;\n private attachStatsbeatGauge: ObservableGauge;\n\n public isInitialized: boolean = false;\n\n constructor(options: StatsbeatOptions) {\n super();\n this.connectionString = super.getConnectionString(options.endpointUrl);\n const exporterConfig: AzureMonitorExporterOptions = {\n connectionString: this.connectionString,\n disableOfflineStorage: options.disableOfflineStorage,\n };\n\n this.setFeatures();\n\n this.longIntervalStatsbeatMeterProvider = new MeterProvider();\n this.longIntervalAzureExporter = new AzureMonitorStatsbeatExporter(exporterConfig);\n\n // Export Long Interval Statsbeats every day\n const longIntervalMetricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this.longIntervalAzureExporter,\n exportIntervalMillis:\n Number(process.env.LONG_INTERVAL_EXPORT_MILLIS) || this.statsCollectionLongInterval, // 1 day\n };\n\n this.longIntervalMetricReader = new PeriodicExportingMetricReader(\n longIntervalMetricReaderOptions,\n );\n this.longIntervalStatsbeatMeterProvider.addMetricReader(this.longIntervalMetricReader);\n this.longIntervalStatsbeatMeter = this.longIntervalStatsbeatMeterProvider.getMeter(\n \"Azure Monitor Long Interval Statsbeat\",\n );\n\n // Assign Common Properties\n this.runtimeVersion = process.version;\n this.language = STATSBEAT_LANGUAGE;\n this.version = ai.packageVersion;\n this.cikey = options.instrumentationKey;\n\n this.featureStatsbeatGauge = this.longIntervalStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.FEATURE,\n );\n this.attachStatsbeatGauge = this.longIntervalStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.ATTACH,\n );\n\n this.commonProperties = {\n os: this.os,\n rp: this.resourceProvider,\n cikey: this.cikey,\n runtimeVersion: this.runtimeVersion,\n language: this.language,\n version: this.version,\n attach: this.attach,\n };\n\n this.attachProperties = {\n rpId: this.resourceIdentifier,\n };\n\n this.isInitialized = true;\n this.initialize();\n }\n\n private async initialize() {\n try {\n await this.getResourceProvider();\n\n // Add long interval observable callbacks\n this.attachStatsbeatGauge.addCallback(this.attachCallback.bind(this));\n this.longIntervalStatsbeatMeter.addBatchObservableCallback(\n this.getEnvironmentStatus.bind(this),\n [this.featureStatsbeatGauge],\n );\n\n // Export Feature/Attach Statsbeat once upon app initialization\n this.longIntervalAzureExporter.export(\n (await this.longIntervalMetricReader.collect()).resourceMetrics,\n (result: ExportResult) => {\n if (result.code !== ExportResultCode.SUCCESS) {\n diag.error(`LongIntervalStatsbeat: metrics export failed (error ${result.error})`);\n }\n },\n );\n } catch (error) {\n diag.debug(\"Call to get the resource provider failed.\");\n }\n }\n\n private getEnvironmentStatus(observableResult: BatchObservableResult) {\n this.setFeatures();\n let attributes;\n if (this.instrumentation) {\n attributes = {\n ...this.commonProperties,\n feature: this.instrumentation,\n type: StatsbeatFeatureType.INSTRUMENTATION,\n };\n observableResult.observe(this.featureStatsbeatGauge, 1, { ...attributes });\n }\n\n if (this.feature) {\n attributes = {\n ...this.commonProperties,\n feature: this.feature,\n type: StatsbeatFeatureType.FEATURE,\n };\n observableResult.observe(this.featureStatsbeatGauge, 1, { ...attributes });\n }\n }\n\n private setFeatures() {\n const statsbeatFeatures = process.env.AZURE_MONITOR_STATSBEAT_FEATURES;\n if (statsbeatFeatures) {\n try {\n this.feature = JSON.parse(statsbeatFeatures).feature;\n this.instrumentation = JSON.parse(statsbeatFeatures).instrumentation;\n } catch (error: any) {\n diag.error(\n `LongIntervalStatsbeat: Failed to parse features/instrumentations (error ${error})`,\n );\n }\n }\n }\n\n private attachCallback(observableResult: ObservableResult) {\n const attributes = { ...this.commonProperties, ...this.attachProperties };\n observableResult.observe(1, attributes);\n }\n\n public shutdown(): Promise<void> {\n return this.longIntervalStatsbeatMeterProvider.shutdown();\n }\n}\n\n/**\n * Singleton LongIntervalStatsbeatMetrics instance.\n * @internal\n */\nexport function getInstance(options: StatsbeatOptions): LongIntervalStatsbeatMetrics {\n if (!instance) {\n instance = new LongIntervalStatsbeatMetrics(options);\n }\n return instance;\n}\n"]}
1
+ {"version":3,"file":"longIntervalStatsbeatMetrics.js","sourceRoot":"","sources":["../../../../src/export/statsbeat/longIntervalStatsbeatMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n diag,\n BatchObservableResult,\n ObservableGauge,\n ObservableResult,\n Meter,\n} from \"@opentelemetry/api\";\nimport { ExportResult, ExportResultCode } from \"@opentelemetry/core\";\nimport {\n MeterProvider,\n PeriodicExportingMetricReader,\n PeriodicExportingMetricReaderOptions,\n} from \"@opentelemetry/sdk-metrics\";\nimport { AzureMonitorExporterOptions } from \"../../index\";\nimport * as ai from \"../../utils/constants/applicationinsights\";\nimport { StatsbeatMetrics } from \"./statsbeatMetrics\";\nimport {\n StatsbeatCounter,\n STATSBEAT_LANGUAGE,\n CommonStatsbeatProperties,\n AttachStatsbeatProperties,\n StatsbeatFeatureType,\n StatsbeatOptions,\n} from \"./types\";\nimport { AzureMonitorStatsbeatExporter } from \"./statsbeatExporter\";\n\nlet instance: LongIntervalStatsbeatMetrics | null = null;\n\n/**\n * Long Interval Statsbeat Metrics\n * @internal\n */\nclass LongIntervalStatsbeatMetrics extends StatsbeatMetrics {\n private statsCollectionLongInterval: number = 86400000; // 1 day\n // Custom dimensions\n private cikey: string;\n private runtimeVersion: string;\n private language: string;\n private version: string;\n private attach: string = \"Manual\";\n\n private commonProperties: CommonStatsbeatProperties;\n private attachProperties: AttachStatsbeatProperties;\n\n private feature: number = 0;\n private instrumentation: number = 0;\n\n private longIntervalStatsbeatMeterProvider: MeterProvider;\n private longIntervalAzureExporter: AzureMonitorStatsbeatExporter;\n private longIntervalMetricReader: PeriodicExportingMetricReader;\n private longIntervalStatsbeatMeter: Meter;\n\n // Network Attributes\n private connectionString: string;\n\n // Observable Gauges\n private featureStatsbeatGauge: ObservableGauge;\n private attachStatsbeatGauge: ObservableGauge;\n\n public isInitialized: boolean = false;\n\n constructor(options: StatsbeatOptions) {\n super();\n this.connectionString = super.getConnectionString(options.endpointUrl);\n const exporterConfig: AzureMonitorExporterOptions = {\n connectionString: this.connectionString,\n disableOfflineStorage: options.disableOfflineStorage,\n };\n\n this.setFeatures();\n\n this.longIntervalStatsbeatMeterProvider = new MeterProvider();\n this.longIntervalAzureExporter = new AzureMonitorStatsbeatExporter(exporterConfig);\n\n // Export Long Interval Statsbeats every day\n const longIntervalMetricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this.longIntervalAzureExporter,\n exportIntervalMillis:\n Number(process.env.LONG_INTERVAL_EXPORT_MILLIS) || this.statsCollectionLongInterval, // 1 day\n };\n\n this.longIntervalMetricReader = new PeriodicExportingMetricReader(\n longIntervalMetricReaderOptions,\n );\n this.longIntervalStatsbeatMeterProvider.addMetricReader(this.longIntervalMetricReader);\n this.longIntervalStatsbeatMeter = this.longIntervalStatsbeatMeterProvider.getMeter(\n \"Azure Monitor Long Interval Statsbeat\",\n );\n\n // Assign Common Properties\n this.runtimeVersion = process.version;\n this.language = STATSBEAT_LANGUAGE;\n this.version = ai.packageVersion;\n this.cikey = options.instrumentationKey;\n\n this.featureStatsbeatGauge = this.longIntervalStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.FEATURE,\n );\n this.attachStatsbeatGauge = this.longIntervalStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.ATTACH,\n );\n\n this.commonProperties = {\n os: this.os,\n rp: this.resourceProvider,\n cikey: this.cikey,\n runtimeVersion: this.runtimeVersion,\n language: this.language,\n version: this.version,\n attach: this.attach,\n };\n\n this.attachProperties = {\n rpId: this.resourceIdentifier,\n };\n\n this.isInitialized = true;\n this.initialize();\n }\n\n private async initialize() {\n try {\n await this.getResourceProvider();\n\n // Add long interval observable callbacks\n this.attachStatsbeatGauge.addCallback(this.attachCallback.bind(this));\n this.longIntervalStatsbeatMeter.addBatchObservableCallback(\n this.getEnvironmentStatus.bind(this),\n [this.featureStatsbeatGauge],\n );\n\n // Export Feature/Attach Statsbeat once upon app initialization\n this.longIntervalAzureExporter.export(\n (await this.longIntervalMetricReader.collect()).resourceMetrics,\n (result: ExportResult) => {\n if (result.code !== ExportResultCode.SUCCESS) {\n diag.error(`LongIntervalStatsbeat: metrics export failed (error ${result.error})`);\n }\n },\n );\n } catch (error) {\n diag.debug(\"Call to get the resource provider failed.\");\n }\n }\n\n private getEnvironmentStatus(observableResult: BatchObservableResult) {\n this.setFeatures();\n let attributes;\n if (this.instrumentation) {\n attributes = {\n ...this.commonProperties,\n feature: this.instrumentation,\n type: StatsbeatFeatureType.INSTRUMENTATION,\n };\n observableResult.observe(this.featureStatsbeatGauge, 1, { ...attributes });\n }\n\n if (this.feature) {\n attributes = {\n ...this.commonProperties,\n feature: this.feature,\n type: StatsbeatFeatureType.FEATURE,\n };\n observableResult.observe(this.featureStatsbeatGauge, 1, { ...attributes });\n }\n }\n\n private setFeatures() {\n const statsbeatFeatures = process.env.AZURE_MONITOR_STATSBEAT_FEATURES;\n if (statsbeatFeatures) {\n try {\n this.feature = JSON.parse(statsbeatFeatures).feature;\n this.instrumentation = JSON.parse(statsbeatFeatures).instrumentation;\n } catch (error: any) {\n diag.error(\n `LongIntervalStatsbeat: Failed to parse features/instrumentations (error ${error})`,\n );\n }\n }\n }\n\n private attachCallback(observableResult: ObservableResult) {\n const attributes = { ...this.commonProperties, ...this.attachProperties };\n observableResult.observe(1, attributes);\n }\n\n public shutdown(): Promise<void> {\n return this.longIntervalStatsbeatMeterProvider.shutdown();\n }\n}\n\n/**\n * Singleton LongIntervalStatsbeatMetrics instance.\n * @internal\n */\nexport function getInstance(options: StatsbeatOptions): LongIntervalStatsbeatMetrics {\n if (!instance) {\n instance = new LongIntervalStatsbeatMetrics(options);\n }\n return instance;\n}\n"]}
@@ -1,14 +1,16 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  import { diag, } from "@opentelemetry/api";
4
4
  import { MeterProvider, PeriodicExportingMetricReader, } from "@opentelemetry/sdk-metrics";
5
5
  import * as ai from "../../utils/constants/applicationinsights";
6
6
  import { StatsbeatMetrics } from "./statsbeatMetrics";
7
7
  import { StatsbeatCounter, STATSBEAT_LANGUAGE, NetworkStatsbeat, } from "./types";
8
8
  import { AzureMonitorStatsbeatExporter } from "./statsbeatExporter";
9
+ import { ENV_DISABLE_STATSBEAT } from "../../Declarations/Constants";
9
10
  export class NetworkStatsbeatMetrics extends StatsbeatMetrics {
10
11
  constructor(options) {
11
12
  super();
13
+ this.disableNonEssentialStatsbeat = !!process.env[ENV_DISABLE_STATSBEAT];
12
14
  this.isInitialized = false;
13
15
  this.statsCollectionShortInterval = 900000; // 15 minutes
14
16
  this.networkStatsbeatCollection = [];
@@ -39,6 +41,10 @@ export class NetworkStatsbeatMetrics extends StatsbeatMetrics {
39
41
  this.throttleCountGauge = this.networkStatsbeatMeter.createObservableGauge(StatsbeatCounter.THROTTLE_COUNT);
40
42
  this.exceptionCountGauge = this.networkStatsbeatMeter.createObservableGauge(StatsbeatCounter.EXCEPTION_COUNT);
41
43
  this.averageDurationGauge = this.networkStatsbeatMeter.createObservableGauge(StatsbeatCounter.AVERAGE_DURATION);
44
+ if (!this.disableNonEssentialStatsbeat) {
45
+ this.readFailureGauge = this.networkStatsbeatMeter.createObservableGauge(StatsbeatCounter.READ_FAILURE_COUNT);
46
+ this.writeFailureGauge = this.networkStatsbeatMeter.createObservableGauge(StatsbeatCounter.WRITE_FAILURE_COUNT);
47
+ }
42
48
  this.commonProperties = {
43
49
  os: this.os,
44
50
  rp: this.resourceProvider,
@@ -59,6 +65,7 @@ export class NetworkStatsbeatMetrics extends StatsbeatMetrics {
59
65
  return this.networkStatsbeatMeterProvider.shutdown();
60
66
  }
61
67
  async initialize() {
68
+ var _a, _b;
62
69
  try {
63
70
  await super.getResourceProvider();
64
71
  // Add network observable callbacks
@@ -75,6 +82,10 @@ export class NetworkStatsbeatMetrics extends StatsbeatMetrics {
75
82
  this.networkStatsbeatMeter.addBatchObservableCallback(this.exceptionCallback.bind(this), [
76
83
  this.exceptionCountGauge,
77
84
  ]);
85
+ if (!this.disableNonEssentialStatsbeat) {
86
+ (_a = this.readFailureGauge) === null || _a === void 0 ? void 0 : _a.addCallback(this.readFailureCallback.bind(this));
87
+ (_b = this.writeFailureGauge) === null || _b === void 0 ? void 0 : _b.addCallback(this.writeFailureCallback.bind(this));
88
+ }
78
89
  this.averageDurationGauge.addCallback(this.durationCallback.bind(this));
79
90
  }
80
91
  catch (error) {
@@ -148,6 +159,18 @@ export class NetworkStatsbeatMetrics extends StatsbeatMetrics {
148
159
  observableResult.observe(counter.averageRequestExecutionTime, attributes);
149
160
  counter.averageRequestExecutionTime = 0;
150
161
  }
162
+ readFailureCallback(observableResult) {
163
+ const counter = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);
164
+ const attributes = Object.assign(Object.assign({}, this.commonProperties), this.networkProperties);
165
+ observableResult.observe(counter.totalReadFailureCount, attributes);
166
+ counter.totalReadFailureCount = 0;
167
+ }
168
+ writeFailureCallback(observableResult) {
169
+ const counter = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);
170
+ const attributes = Object.assign(Object.assign({}, this.commonProperties), this.networkProperties);
171
+ observableResult.observe(counter.totalWriteFailureCount, attributes);
172
+ counter.totalWriteFailureCount = 0;
173
+ }
151
174
  // Public methods to increase counters
152
175
  countSuccess(duration) {
153
176
  if (!this.isInitialized) {
@@ -199,6 +222,20 @@ export class NetworkStatsbeatMetrics extends StatsbeatMetrics {
199
222
  counter.throttleCount.push({ statusCode: statusCode, count: 1 });
200
223
  }
201
224
  }
225
+ countReadFailure() {
226
+ if (!this.isInitialized || this.disableNonEssentialStatsbeat) {
227
+ return;
228
+ }
229
+ const counter = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);
230
+ counter.totalReadFailureCount++;
231
+ }
232
+ countWriteFailure() {
233
+ if (!this.isInitialized || this.disableNonEssentialStatsbeat) {
234
+ return;
235
+ }
236
+ const counter = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);
237
+ counter.totalWriteFailureCount++;
238
+ }
202
239
  countException(exceptionType) {
203
240
  if (!this.isInitialized) {
204
241
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"networkStatsbeatMetrics.js","sourceRoot":"","sources":["../../../../src/export/statsbeat/networkStatsbeatMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n diag,\n BatchObservableResult,\n Meter,\n ObservableGauge,\n ObservableResult,\n} from \"@opentelemetry/api\";\nimport {\n MeterProvider,\n PeriodicExportingMetricReader,\n PeriodicExportingMetricReaderOptions,\n} from \"@opentelemetry/sdk-metrics\";\nimport { AzureMonitorExporterOptions } from \"../../index\";\nimport * as ai from \"../../utils/constants/applicationinsights\";\nimport { StatsbeatMetrics } from \"./statsbeatMetrics\";\nimport {\n StatsbeatCounter,\n STATSBEAT_LANGUAGE,\n NetworkStatsbeat,\n CommonStatsbeatProperties,\n NetworkStatsbeatProperties,\n StatsbeatOptions,\n} from \"./types\";\nimport { AzureMonitorStatsbeatExporter } from \"./statsbeatExporter\";\n\nexport class NetworkStatsbeatMetrics extends StatsbeatMetrics {\n private commonProperties: CommonStatsbeatProperties;\n private networkProperties: NetworkStatsbeatProperties;\n private isInitialized: boolean = false;\n private statsCollectionShortInterval: number = 900000; // 15 minutes\n\n private networkStatsbeatCollection: Array<NetworkStatsbeat> = [];\n private networkStatsbeatMeter: Meter;\n private networkStatsbeatMeterProvider: MeterProvider;\n private networkAzureExporter: AzureMonitorStatsbeatExporter;\n private networkMetricReader: PeriodicExportingMetricReader;\n\n // Custom dimensions\n private cikey: string;\n private runtimeVersion: string;\n private language: string;\n private version: string;\n private attach: string = \"Manual\";\n\n // Observable Gauges\n private successCountGauge: ObservableGauge;\n private failureCountGauge: ObservableGauge;\n private retryCountGauge: ObservableGauge;\n private throttleCountGauge: ObservableGauge;\n private exceptionCountGauge: ObservableGauge;\n private averageDurationGauge: ObservableGauge;\n\n // Network attributes\n private connectionString: string;\n private endpointUrl: string;\n private host: string;\n\n constructor(options: StatsbeatOptions) {\n super();\n this.connectionString = super.getConnectionString(options.endpointUrl);\n this.networkStatsbeatMeterProvider = new MeterProvider();\n\n const exporterConfig: AzureMonitorExporterOptions = {\n connectionString: this.connectionString,\n };\n\n this.networkAzureExporter = new AzureMonitorStatsbeatExporter(exporterConfig);\n\n // Exports Network Statsbeat every 15 minutes\n const networkMetricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this.networkAzureExporter,\n exportIntervalMillis: options.networkCollectionInterval || this.statsCollectionShortInterval, // 15 minutes\n };\n\n this.networkMetricReader = new PeriodicExportingMetricReader(networkMetricReaderOptions);\n this.networkStatsbeatMeterProvider.addMetricReader(this.networkMetricReader);\n this.networkStatsbeatMeter = this.networkStatsbeatMeterProvider.getMeter(\n \"Azure Monitor Network Statsbeat\",\n );\n\n this.endpointUrl = options.endpointUrl;\n this.runtimeVersion = process.version;\n this.language = STATSBEAT_LANGUAGE;\n this.version = ai.packageVersion;\n this.host = this.getShortHost(options.endpointUrl);\n this.cikey = options.instrumentationKey;\n\n this.successCountGauge = this.networkStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.SUCCESS_COUNT,\n );\n this.failureCountGauge = this.networkStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.FAILURE_COUNT,\n );\n this.retryCountGauge = this.networkStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.RETRY_COUNT,\n );\n this.throttleCountGauge = this.networkStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.THROTTLE_COUNT,\n );\n this.exceptionCountGauge = this.networkStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.EXCEPTION_COUNT,\n );\n this.averageDurationGauge = this.networkStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.AVERAGE_DURATION,\n );\n\n this.commonProperties = {\n os: this.os,\n rp: this.resourceProvider,\n cikey: this.cikey,\n runtimeVersion: this.runtimeVersion,\n language: this.language,\n version: this.version,\n attach: this.attach,\n };\n\n this.networkProperties = {\n endpoint: this.endpointUrl,\n host: this.host,\n };\n\n this.isInitialized = true;\n this.initialize();\n }\n\n public shutdown(): Promise<void> {\n return this.networkStatsbeatMeterProvider.shutdown();\n }\n\n private async initialize(): Promise<void> {\n try {\n await super.getResourceProvider();\n\n // Add network observable callbacks\n this.successCountGauge.addCallback(this.successCallback.bind(this));\n this.networkStatsbeatMeter.addBatchObservableCallback(this.failureCallback.bind(this), [\n this.failureCountGauge,\n ]);\n this.networkStatsbeatMeter.addBatchObservableCallback(this.retryCallback.bind(this), [\n this.retryCountGauge,\n ]);\n this.networkStatsbeatMeter.addBatchObservableCallback(this.throttleCallback.bind(this), [\n this.throttleCountGauge,\n ]);\n this.networkStatsbeatMeter.addBatchObservableCallback(this.exceptionCallback.bind(this), [\n this.exceptionCountGauge,\n ]);\n this.averageDurationGauge.addCallback(this.durationCallback.bind(this));\n } catch (error) {\n diag.debug(\"Call to get the resource provider failed.\");\n }\n }\n\n // Observable gauge callbacks\n private successCallback(observableResult: ObservableResult): void {\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const attributes = { ...this.commonProperties, ...this.networkProperties };\n observableResult.observe(counter.totalSuccesfulRequestCount, attributes);\n counter.totalSuccesfulRequestCount = 0;\n }\n\n private failureCallback(observableResult: BatchObservableResult) {\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n\n /*\n Takes the failureCountGauge, value (of the counter), and attributes\n create a unqiue counter based on statusCode as well\n append statusCode to attributes so the newly created attributes are unique.\n */\n const attributes = { ...this.networkProperties, ...this.commonProperties, statusCode: 0 };\n\n // For each { statusCode -> count } mapping, call observe, passing the count and attributes that include the statusCode\n for (let i = 0; i < counter.totalFailedRequestCount.length; i++) {\n attributes.statusCode = counter.totalFailedRequestCount[i].statusCode;\n observableResult.observe(this.failureCountGauge, counter.totalFailedRequestCount[i].count, {\n ...attributes,\n });\n counter.totalFailedRequestCount[i].count = 0;\n }\n }\n\n private retryCallback(observableResult: BatchObservableResult): void {\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const attributes = { ...this.networkProperties, ...this.commonProperties, statusCode: 0 };\n\n for (let i = 0; i < counter.retryCount.length; i++) {\n attributes.statusCode = counter.retryCount[i].statusCode;\n observableResult.observe(this.retryCountGauge, counter.retryCount[i].count, {\n ...attributes,\n });\n counter.retryCount[i].count = 0;\n }\n }\n\n private throttleCallback(observableResult: BatchObservableResult): void {\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const attributes = { ...this.networkProperties, ...this.commonProperties, statusCode: 0 };\n\n for (let i = 0; i < counter.throttleCount.length; i++) {\n attributes.statusCode = counter.throttleCount[i].statusCode;\n observableResult.observe(this.throttleCountGauge, counter.throttleCount[i].count, {\n ...attributes,\n });\n counter.throttleCount[i].count = 0;\n }\n }\n\n private exceptionCallback(observableResult: BatchObservableResult): void {\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const attributes = { ...this.networkProperties, ...this.commonProperties, exceptionType: \"\" };\n\n for (let i = 0; i < counter.exceptionCount.length; i++) {\n attributes.exceptionType = counter.exceptionCount[i].exceptionType;\n observableResult.observe(this.exceptionCountGauge, counter.exceptionCount[i].count, {\n ...attributes,\n });\n counter.exceptionCount[i].count = 0;\n }\n }\n\n private durationCallback(observableResult: ObservableResult): void {\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const attributes = { ...this.networkProperties, ...this.commonProperties };\n for (let i = 0; i < this.networkStatsbeatCollection.length; i++) {\n const currentCounter = this.networkStatsbeatCollection[i];\n currentCounter.time = Number(new Date());\n const intervalRequests =\n currentCounter.totalRequestCount - currentCounter.lastRequestCount || 0;\n currentCounter.averageRequestExecutionTime =\n (currentCounter.intervalRequestExecutionTime -\n currentCounter.lastIntervalRequestExecutionTime) /\n intervalRequests || 0;\n currentCounter.lastIntervalRequestExecutionTime = currentCounter.intervalRequestExecutionTime; // reset\n\n currentCounter.lastRequestCount = currentCounter.totalRequestCount;\n currentCounter.lastTime = currentCounter.time;\n }\n observableResult.observe(counter.averageRequestExecutionTime, attributes);\n\n counter.averageRequestExecutionTime = 0;\n }\n\n // Public methods to increase counters\n public countSuccess(duration: number): void {\n if (!this.isInitialized) {\n return;\n }\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n counter.totalRequestCount++;\n counter.totalSuccesfulRequestCount++;\n counter.intervalRequestExecutionTime += duration;\n }\n\n public countFailure(duration: number, statusCode: number): void {\n if (!this.isInitialized) {\n return;\n }\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const currentStatusCounter = counter.totalFailedRequestCount.find(\n (statusCounter) => statusCode === statusCounter.statusCode,\n );\n\n if (currentStatusCounter) {\n currentStatusCounter.count++;\n } else {\n counter.totalFailedRequestCount.push({ statusCode: statusCode, count: 1 });\n }\n\n counter.totalRequestCount++;\n counter.intervalRequestExecutionTime += duration;\n }\n\n public countRetry(statusCode: number): void {\n if (!this.isInitialized) {\n return;\n }\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const currentStatusCounter = counter.retryCount.find(\n (statusCounter) => statusCode === statusCounter.statusCode,\n );\n\n if (currentStatusCounter) {\n currentStatusCounter.count++;\n } else {\n counter.retryCount.push({ statusCode: statusCode, count: 1 });\n }\n }\n\n public countThrottle(statusCode: number): void {\n if (!this.isInitialized) {\n return;\n }\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const currentStatusCounter = counter.throttleCount.find(\n (statusCounter) => statusCode === statusCounter.statusCode,\n );\n\n if (currentStatusCounter) {\n currentStatusCounter.count++;\n } else {\n counter.throttleCount.push({ statusCode: statusCode, count: 1 });\n }\n }\n\n public countException(exceptionType: Error): void {\n if (!this.isInitialized) {\n return;\n }\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const currentErrorCounter = counter.exceptionCount.find(\n (exceptionCounter) => exceptionType.name === exceptionCounter.exceptionType,\n );\n if (currentErrorCounter) {\n currentErrorCounter.count++;\n } else {\n counter.exceptionCount.push({ exceptionType: exceptionType.name, count: 1 });\n }\n }\n\n // Gets a networkStatsbeat counter if one exists for the given endpoint\n private getNetworkStatsbeatCounter(endpoint: string, host: string): NetworkStatsbeat {\n // Check if the counter is available\n for (let i = 0; i < this.networkStatsbeatCollection.length; i++) {\n // Same object\n if (\n endpoint === this.networkStatsbeatCollection[i].endpoint &&\n host === this.networkStatsbeatCollection[i].host\n ) {\n return this.networkStatsbeatCollection[i];\n }\n }\n // Create a new counter if not found\n const newCounter = new NetworkStatsbeat(endpoint, host);\n this.networkStatsbeatCollection.push(newCounter);\n return newCounter;\n }\n\n private getShortHost(originalHost: string): string {\n let shortHost = originalHost;\n try {\n const hostRegex = new RegExp(/^https?:\\/\\/(?:www\\.)?([^/.-]+)/);\n const res = hostRegex.exec(originalHost);\n if (res !== null && res.length > 1) {\n shortHost = res[1];\n }\n shortHost = shortHost.replace(\".in.applicationinsights.azure.com\", \"\");\n } catch (error) {\n diag.debug(\"Failed to get the short host name.\");\n }\n return shortHost;\n }\n}\n"]}
1
+ {"version":3,"file":"networkStatsbeatMetrics.js","sourceRoot":"","sources":["../../../../src/export/statsbeat/networkStatsbeatMetrics.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EACL,IAAI,GAKL,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,aAAa,EACb,6BAA6B,GAE9B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GAIjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,OAAO,uBAAwB,SAAQ,gBAAgB;IAoC3D,YAAY,OAAyB;QACnC,KAAK,EAAE,CAAC;QApCF,iCAA4B,GAAY,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAG7E,kBAAa,GAAY,KAAK,CAAC;QAC/B,iCAA4B,GAAW,MAAM,CAAC,CAAC,aAAa;QAE5D,+BAA0B,GAA4B,EAAE,CAAC;QAWzD,WAAM,GAAW,QAAQ,CAAC;QAoBhC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACvE,IAAI,CAAC,6BAA6B,GAAG,IAAI,aAAa,EAAE,CAAC;QAEzD,MAAM,cAAc,GAAgC;YAClD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SACxC,CAAC;QAEF,IAAI,CAAC,oBAAoB,GAAG,IAAI,6BAA6B,CAAC,cAAc,CAAC,CAAC;QAE9E,6CAA6C;QAC7C,MAAM,0BAA0B,GAAyC;YACvE,QAAQ,EAAE,IAAI,CAAC,oBAAoB;YACnC,oBAAoB,EAAE,OAAO,CAAC,yBAAyB,IAAI,IAAI,CAAC,4BAA4B,EAAE,aAAa;SAC5G,CAAC;QAEF,IAAI,CAAC,mBAAmB,GAAG,IAAI,6BAA6B,CAAC,0BAA0B,CAAC,CAAC;QACzF,IAAI,CAAC,6BAA6B,CAAC,eAAe,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC7E,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CACtE,iCAAiC,CAClC,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,cAAc,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAExC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CACvE,gBAAgB,CAAC,aAAa,CAC/B,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CACvE,gBAAgB,CAAC,aAAa,CAC/B,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CACrE,gBAAgB,CAAC,WAAW,CAC7B,CAAC;QACF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CACxE,gBAAgB,CAAC,cAAc,CAChC,CAAC;QACF,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CACzE,gBAAgB,CAAC,eAAe,CACjC,CAAC;QACF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAC1E,gBAAgB,CAAC,gBAAgB,CAClC,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACvC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CACtE,gBAAgB,CAAC,kBAAkB,CACpC,CAAC;YACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CACvE,gBAAgB,CAAC,mBAAmB,CACrC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG;YACtB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,EAAE,EAAE,IAAI,CAAC,gBAAgB;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;QAEF,IAAI,CAAC,iBAAiB,GAAG;YACvB,QAAQ,EAAE,IAAI,CAAC,WAAW;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC;IACvD,CAAC;IAEO,KAAK,CAAC,UAAU;;QACtB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAElC,mCAAmC;YACnC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACpE,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACrF,IAAI,CAAC,iBAAiB;aACvB,CAAC,CAAC;YACH,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACnF,IAAI,CAAC,eAAe;aACrB,CAAC,CAAC;YACH,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACtF,IAAI,CAAC,kBAAkB;aACxB,CAAC,CAAC;YACH,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACvF,IAAI,CAAC,mBAAmB;aACzB,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC;gBACvC,MAAA,IAAI,CAAC,gBAAgB,0CAAE,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACxE,MAAA,IAAI,CAAC,iBAAiB,0CAAE,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5E,CAAC;YACD,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,6BAA6B;IACrB,eAAe,CAAC,gBAAkC;QACxD,MAAM,OAAO,GAAqB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,MAAM,UAAU,mCAAQ,IAAI,CAAC,gBAAgB,GAAK,IAAI,CAAC,iBAAiB,CAAE,CAAC;QAC3E,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,0BAA0B,EAAE,UAAU,CAAC,CAAC;QACzE,OAAO,CAAC,0BAA0B,GAAG,CAAC,CAAC;IACzC,CAAC;IAEO,eAAe,CAAC,gBAAuC;QAC7D,MAAM,OAAO,GAAqB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F;;;;UAIE;QACF,MAAM,UAAU,iDAAQ,IAAI,CAAC,iBAAiB,GAAK,IAAI,CAAC,gBAAgB,KAAE,UAAU,EAAE,CAAC,GAAE,CAAC;QAE1F,uHAAuH;QACvH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChE,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YACtE,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,KAAK,oBACpF,UAAU,EACb,CAAC;YACH,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,gBAAuC;QAC3D,MAAM,OAAO,GAAqB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,MAAM,UAAU,iDAAQ,IAAI,CAAC,iBAAiB,GAAK,IAAI,CAAC,gBAAgB,KAAE,UAAU,EAAE,CAAC,GAAE,CAAC;QAE1F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YACzD,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,oBACrE,UAAU,EACb,CAAC;YACH,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,gBAAuC;QAC9D,MAAM,OAAO,GAAqB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,MAAM,UAAU,iDAAQ,IAAI,CAAC,iBAAiB,GAAK,IAAI,CAAC,gBAAgB,KAAE,UAAU,EAAE,CAAC,GAAE,CAAC;QAE1F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YAC5D,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,oBAC3E,UAAU,EACb,CAAC;YACH,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,gBAAuC;QAC/D,MAAM,OAAO,GAAqB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,MAAM,UAAU,iDAAQ,IAAI,CAAC,iBAAiB,GAAK,IAAI,CAAC,gBAAgB,KAAE,aAAa,EAAE,EAAE,GAAE,CAAC;QAE9F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvD,UAAU,CAAC,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YACnE,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,oBAC7E,UAAU,EACb,CAAC;YACH,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,gBAAkC;QACzD,MAAM,OAAO,GAAqB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,MAAM,UAAU,mCAAQ,IAAI,CAAC,iBAAiB,GAAK,IAAI,CAAC,gBAAgB,CAAE,CAAC;QAC3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChE,MAAM,cAAc,GAAG,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;YAC1D,cAAc,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACzC,MAAM,gBAAgB,GACpB,cAAc,CAAC,iBAAiB,GAAG,cAAc,CAAC,gBAAgB,IAAI,CAAC,CAAC;YAC1E,cAAc,CAAC,2BAA2B;gBACxC,CAAC,cAAc,CAAC,4BAA4B;oBAC1C,cAAc,CAAC,gCAAgC,CAAC;oBAChD,gBAAgB,IAAI,CAAC,CAAC;YAC1B,cAAc,CAAC,gCAAgC,GAAG,cAAc,CAAC,4BAA4B,CAAC,CAAC,QAAQ;YAEvG,cAAc,CAAC,gBAAgB,GAAG,cAAc,CAAC,iBAAiB,CAAC;YACnE,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC;QAChD,CAAC;QACD,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC;QAE1E,OAAO,CAAC,2BAA2B,GAAG,CAAC,CAAC;IAC1C,CAAC;IAEO,mBAAmB,CAAC,gBAAkC;QAC5D,MAAM,OAAO,GAAqB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,MAAM,UAAU,mCAAQ,IAAI,CAAC,gBAAgB,GAAK,IAAI,CAAC,iBAAiB,CAAE,CAAC;QAC3E,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC;QACpE,OAAO,CAAC,qBAAqB,GAAG,CAAC,CAAC;IACpC,CAAC;IAEO,oBAAoB,CAAC,gBAAkC;QAC7D,MAAM,OAAO,GAAqB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,MAAM,UAAU,mCAAQ,IAAI,CAAC,gBAAgB,GAAK,IAAI,CAAC,iBAAiB,CAAE,CAAC;QAC3E,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;QACrE,OAAO,CAAC,sBAAsB,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,sCAAsC;IAC/B,YAAY,CAAC,QAAgB;QAClC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAqB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC5B,OAAO,CAAC,0BAA0B,EAAE,CAAC;QACrC,OAAO,CAAC,4BAA4B,IAAI,QAAQ,CAAC;IACnD,CAAC;IAEM,YAAY,CAAC,QAAgB,EAAE,UAAkB;QACtD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAqB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,MAAM,oBAAoB,GAAG,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAC/D,CAAC,aAAa,EAAE,EAAE,CAAC,UAAU,KAAK,aAAa,CAAC,UAAU,CAC3D,CAAC;QAEF,IAAI,oBAAoB,EAAE,CAAC;YACzB,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC5B,OAAO,CAAC,4BAA4B,IAAI,QAAQ,CAAC;IACnD,CAAC;IAEM,UAAU,CAAC,UAAkB;QAClC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAqB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,MAAM,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAClD,CAAC,aAAa,EAAE,EAAE,CAAC,UAAU,KAAK,aAAa,CAAC,UAAU,CAC3D,CAAC;QAEF,IAAI,oBAAoB,EAAE,CAAC;YACzB,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAEM,aAAa,CAAC,UAAkB;QACrC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAqB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,MAAM,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CACrD,CAAC,aAAa,EAAE,EAAE,CAAC,UAAU,KAAK,aAAa,CAAC,UAAU,CAC3D,CAAC;QAEF,IAAI,oBAAoB,EAAE,CAAC;YACzB,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAEM,gBAAgB;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;YAC7D,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAqB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAClC,CAAC;IAEM,iBAAiB;QACtB,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;YAC7D,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAqB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,OAAO,CAAC,sBAAsB,EAAE,CAAC;IACnC,CAAC;IAEM,cAAc,CAAC,aAAoB;QACxC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAqB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,MAAM,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CACrD,CAAC,gBAAgB,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,KAAK,gBAAgB,CAAC,aAAa,CAC5E,CAAC;QACF,IAAI,mBAAmB,EAAE,CAAC;YACxB,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,uEAAuE;IAC/D,0BAA0B,CAAC,QAAgB,EAAE,IAAY;QAC/D,oCAAoC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChE,cAAc;YACd,IACE,QAAQ,KAAK,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,QAAQ;gBACxD,IAAI,KAAK,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,IAAI,EAChD,CAAC;gBACD,OAAO,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,oCAAoC;QACpC,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,YAAY,CAAC,YAAoB;QACvC,IAAI,SAAS,GAAG,YAAY,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,iCAAiC,CAAC,CAAC;YAChE,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;YACD,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,mCAAmC,EAAE,EAAE,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n diag,\n BatchObservableResult,\n Meter,\n ObservableGauge,\n ObservableResult,\n} from \"@opentelemetry/api\";\nimport {\n MeterProvider,\n PeriodicExportingMetricReader,\n PeriodicExportingMetricReaderOptions,\n} from \"@opentelemetry/sdk-metrics\";\nimport { AzureMonitorExporterOptions } from \"../../index\";\nimport * as ai from \"../../utils/constants/applicationinsights\";\nimport { StatsbeatMetrics } from \"./statsbeatMetrics\";\nimport {\n StatsbeatCounter,\n STATSBEAT_LANGUAGE,\n NetworkStatsbeat,\n CommonStatsbeatProperties,\n NetworkStatsbeatProperties,\n StatsbeatOptions,\n} from \"./types\";\nimport { AzureMonitorStatsbeatExporter } from \"./statsbeatExporter\";\nimport { ENV_DISABLE_STATSBEAT } from \"../../Declarations/Constants\";\n\nexport class NetworkStatsbeatMetrics extends StatsbeatMetrics {\n private disableNonEssentialStatsbeat: boolean = !!process.env[ENV_DISABLE_STATSBEAT];\n private commonProperties: CommonStatsbeatProperties;\n private networkProperties: NetworkStatsbeatProperties;\n private isInitialized: boolean = false;\n private statsCollectionShortInterval: number = 900000; // 15 minutes\n\n private networkStatsbeatCollection: Array<NetworkStatsbeat> = [];\n private networkStatsbeatMeter: Meter;\n private networkStatsbeatMeterProvider: MeterProvider;\n private networkAzureExporter: AzureMonitorStatsbeatExporter;\n private networkMetricReader: PeriodicExportingMetricReader;\n\n // Custom dimensions\n private cikey: string;\n private runtimeVersion: string;\n private language: string;\n private version: string;\n private attach: string = \"Manual\";\n\n // Observable Gauges\n private successCountGauge: ObservableGauge;\n private failureCountGauge: ObservableGauge;\n private retryCountGauge: ObservableGauge;\n private throttleCountGauge: ObservableGauge;\n private exceptionCountGauge: ObservableGauge;\n private averageDurationGauge: ObservableGauge;\n // Non-essential Statsbeat Gauges\n private readFailureGauge: ObservableGauge | undefined;\n private writeFailureGauge: ObservableGauge | undefined;\n\n // Network attributes\n private connectionString: string;\n private endpointUrl: string;\n private host: string;\n\n constructor(options: StatsbeatOptions) {\n super();\n this.connectionString = super.getConnectionString(options.endpointUrl);\n this.networkStatsbeatMeterProvider = new MeterProvider();\n\n const exporterConfig: AzureMonitorExporterOptions = {\n connectionString: this.connectionString,\n };\n\n this.networkAzureExporter = new AzureMonitorStatsbeatExporter(exporterConfig);\n\n // Exports Network Statsbeat every 15 minutes\n const networkMetricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this.networkAzureExporter,\n exportIntervalMillis: options.networkCollectionInterval || this.statsCollectionShortInterval, // 15 minutes\n };\n\n this.networkMetricReader = new PeriodicExportingMetricReader(networkMetricReaderOptions);\n this.networkStatsbeatMeterProvider.addMetricReader(this.networkMetricReader);\n this.networkStatsbeatMeter = this.networkStatsbeatMeterProvider.getMeter(\n \"Azure Monitor Network Statsbeat\",\n );\n\n this.endpointUrl = options.endpointUrl;\n this.runtimeVersion = process.version;\n this.language = STATSBEAT_LANGUAGE;\n this.version = ai.packageVersion;\n this.host = this.getShortHost(options.endpointUrl);\n this.cikey = options.instrumentationKey;\n\n this.successCountGauge = this.networkStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.SUCCESS_COUNT,\n );\n this.failureCountGauge = this.networkStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.FAILURE_COUNT,\n );\n this.retryCountGauge = this.networkStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.RETRY_COUNT,\n );\n this.throttleCountGauge = this.networkStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.THROTTLE_COUNT,\n );\n this.exceptionCountGauge = this.networkStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.EXCEPTION_COUNT,\n );\n this.averageDurationGauge = this.networkStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.AVERAGE_DURATION,\n );\n if (!this.disableNonEssentialStatsbeat) {\n this.readFailureGauge = this.networkStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.READ_FAILURE_COUNT,\n );\n this.writeFailureGauge = this.networkStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.WRITE_FAILURE_COUNT,\n );\n }\n\n this.commonProperties = {\n os: this.os,\n rp: this.resourceProvider,\n cikey: this.cikey,\n runtimeVersion: this.runtimeVersion,\n language: this.language,\n version: this.version,\n attach: this.attach,\n };\n\n this.networkProperties = {\n endpoint: this.endpointUrl,\n host: this.host,\n };\n\n this.isInitialized = true;\n this.initialize();\n }\n\n public shutdown(): Promise<void> {\n return this.networkStatsbeatMeterProvider.shutdown();\n }\n\n private async initialize(): Promise<void> {\n try {\n await super.getResourceProvider();\n\n // Add network observable callbacks\n this.successCountGauge.addCallback(this.successCallback.bind(this));\n this.networkStatsbeatMeter.addBatchObservableCallback(this.failureCallback.bind(this), [\n this.failureCountGauge,\n ]);\n this.networkStatsbeatMeter.addBatchObservableCallback(this.retryCallback.bind(this), [\n this.retryCountGauge,\n ]);\n this.networkStatsbeatMeter.addBatchObservableCallback(this.throttleCallback.bind(this), [\n this.throttleCountGauge,\n ]);\n this.networkStatsbeatMeter.addBatchObservableCallback(this.exceptionCallback.bind(this), [\n this.exceptionCountGauge,\n ]);\n if (!this.disableNonEssentialStatsbeat) {\n this.readFailureGauge?.addCallback(this.readFailureCallback.bind(this));\n this.writeFailureGauge?.addCallback(this.writeFailureCallback.bind(this));\n }\n this.averageDurationGauge.addCallback(this.durationCallback.bind(this));\n } catch (error) {\n diag.debug(\"Call to get the resource provider failed.\");\n }\n }\n\n // Observable gauge callbacks\n private successCallback(observableResult: ObservableResult): void {\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const attributes = { ...this.commonProperties, ...this.networkProperties };\n observableResult.observe(counter.totalSuccesfulRequestCount, attributes);\n counter.totalSuccesfulRequestCount = 0;\n }\n\n private failureCallback(observableResult: BatchObservableResult): void {\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n /*\n Takes the failureCountGauge, value (of the counter), and attributes\n create a unqiue counter based on statusCode as well\n append statusCode to attributes so the newly created attributes are unique.\n */\n const attributes = { ...this.networkProperties, ...this.commonProperties, statusCode: 0 };\n\n // For each { statusCode -> count } mapping, call observe, passing the count and attributes that include the statusCode\n for (let i = 0; i < counter.totalFailedRequestCount.length; i++) {\n attributes.statusCode = counter.totalFailedRequestCount[i].statusCode;\n observableResult.observe(this.failureCountGauge, counter.totalFailedRequestCount[i].count, {\n ...attributes,\n });\n counter.totalFailedRequestCount[i].count = 0;\n }\n }\n\n private retryCallback(observableResult: BatchObservableResult): void {\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const attributes = { ...this.networkProperties, ...this.commonProperties, statusCode: 0 };\n\n for (let i = 0; i < counter.retryCount.length; i++) {\n attributes.statusCode = counter.retryCount[i].statusCode;\n observableResult.observe(this.retryCountGauge, counter.retryCount[i].count, {\n ...attributes,\n });\n counter.retryCount[i].count = 0;\n }\n }\n\n private throttleCallback(observableResult: BatchObservableResult): void {\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const attributes = { ...this.networkProperties, ...this.commonProperties, statusCode: 0 };\n\n for (let i = 0; i < counter.throttleCount.length; i++) {\n attributes.statusCode = counter.throttleCount[i].statusCode;\n observableResult.observe(this.throttleCountGauge, counter.throttleCount[i].count, {\n ...attributes,\n });\n counter.throttleCount[i].count = 0;\n }\n }\n\n private exceptionCallback(observableResult: BatchObservableResult): void {\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const attributes = { ...this.networkProperties, ...this.commonProperties, exceptionType: \"\" };\n\n for (let i = 0; i < counter.exceptionCount.length; i++) {\n attributes.exceptionType = counter.exceptionCount[i].exceptionType;\n observableResult.observe(this.exceptionCountGauge, counter.exceptionCount[i].count, {\n ...attributes,\n });\n counter.exceptionCount[i].count = 0;\n }\n }\n\n private durationCallback(observableResult: ObservableResult): void {\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const attributes = { ...this.networkProperties, ...this.commonProperties };\n for (let i = 0; i < this.networkStatsbeatCollection.length; i++) {\n const currentCounter = this.networkStatsbeatCollection[i];\n currentCounter.time = Number(new Date());\n const intervalRequests =\n currentCounter.totalRequestCount - currentCounter.lastRequestCount || 0;\n currentCounter.averageRequestExecutionTime =\n (currentCounter.intervalRequestExecutionTime -\n currentCounter.lastIntervalRequestExecutionTime) /\n intervalRequests || 0;\n currentCounter.lastIntervalRequestExecutionTime = currentCounter.intervalRequestExecutionTime; // reset\n\n currentCounter.lastRequestCount = currentCounter.totalRequestCount;\n currentCounter.lastTime = currentCounter.time;\n }\n observableResult.observe(counter.averageRequestExecutionTime, attributes);\n\n counter.averageRequestExecutionTime = 0;\n }\n\n private readFailureCallback(observableResult: ObservableResult): void {\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const attributes = { ...this.commonProperties, ...this.networkProperties };\n observableResult.observe(counter.totalReadFailureCount, attributes);\n counter.totalReadFailureCount = 0;\n }\n\n private writeFailureCallback(observableResult: ObservableResult): void {\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const attributes = { ...this.commonProperties, ...this.networkProperties };\n observableResult.observe(counter.totalWriteFailureCount, attributes);\n counter.totalWriteFailureCount = 0;\n }\n\n // Public methods to increase counters\n public countSuccess(duration: number): void {\n if (!this.isInitialized) {\n return;\n }\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n counter.totalRequestCount++;\n counter.totalSuccesfulRequestCount++;\n counter.intervalRequestExecutionTime += duration;\n }\n\n public countFailure(duration: number, statusCode: number): void {\n if (!this.isInitialized) {\n return;\n }\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const currentStatusCounter = counter.totalFailedRequestCount.find(\n (statusCounter) => statusCode === statusCounter.statusCode,\n );\n\n if (currentStatusCounter) {\n currentStatusCounter.count++;\n } else {\n counter.totalFailedRequestCount.push({ statusCode: statusCode, count: 1 });\n }\n\n counter.totalRequestCount++;\n counter.intervalRequestExecutionTime += duration;\n }\n\n public countRetry(statusCode: number): void {\n if (!this.isInitialized) {\n return;\n }\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const currentStatusCounter = counter.retryCount.find(\n (statusCounter) => statusCode === statusCounter.statusCode,\n );\n\n if (currentStatusCounter) {\n currentStatusCounter.count++;\n } else {\n counter.retryCount.push({ statusCode: statusCode, count: 1 });\n }\n }\n\n public countThrottle(statusCode: number): void {\n if (!this.isInitialized) {\n return;\n }\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const currentStatusCounter = counter.throttleCount.find(\n (statusCounter) => statusCode === statusCounter.statusCode,\n );\n\n if (currentStatusCounter) {\n currentStatusCounter.count++;\n } else {\n counter.throttleCount.push({ statusCode: statusCode, count: 1 });\n }\n }\n\n public countReadFailure(): void {\n if (!this.isInitialized || this.disableNonEssentialStatsbeat) {\n return;\n }\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n counter.totalReadFailureCount++;\n }\n\n public countWriteFailure(): void {\n if (!this.isInitialized || this.disableNonEssentialStatsbeat) {\n return;\n }\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n counter.totalWriteFailureCount++;\n }\n\n public countException(exceptionType: Error): void {\n if (!this.isInitialized) {\n return;\n }\n const counter: NetworkStatsbeat = this.getNetworkStatsbeatCounter(this.endpointUrl, this.host);\n const currentErrorCounter = counter.exceptionCount.find(\n (exceptionCounter) => exceptionType.name === exceptionCounter.exceptionType,\n );\n if (currentErrorCounter) {\n currentErrorCounter.count++;\n } else {\n counter.exceptionCount.push({ exceptionType: exceptionType.name, count: 1 });\n }\n }\n\n // Gets a networkStatsbeat counter if one exists for the given endpoint\n private getNetworkStatsbeatCounter(endpoint: string, host: string): NetworkStatsbeat {\n // Check if the counter is available\n for (let i = 0; i < this.networkStatsbeatCollection.length; i++) {\n // Same object\n if (\n endpoint === this.networkStatsbeatCollection[i].endpoint &&\n host === this.networkStatsbeatCollection[i].host\n ) {\n return this.networkStatsbeatCollection[i];\n }\n }\n // Create a new counter if not found\n const newCounter = new NetworkStatsbeat(endpoint, host);\n this.networkStatsbeatCollection.push(newCounter);\n return newCounter;\n }\n\n private getShortHost(originalHost: string): string {\n let shortHost = originalHost;\n try {\n const hostRegex = new RegExp(/^https?:\\/\\/(?:www\\.)?([^/.-]+)/);\n const res = hostRegex.exec(originalHost);\n if (res !== null && res.length > 1) {\n shortHost = res[1];\n }\n shortHost = shortHost.replace(\".in.applicationinsights.azure.com\", \"\");\n } catch (error) {\n diag.debug(\"Failed to get the short host name.\");\n }\n return shortHost;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  import { context } from "@opentelemetry/api";
4
4
  import { ExportResultCode, suppressTracing } from "@opentelemetry/core";
5
5
  import { resourceMetricsToEnvelope } from "../../utils/metricUtils";
@@ -30,7 +30,7 @@ export class AzureMonitorStatsbeatExporter extends AzureMonitorBaseExporter {
30
30
  /**
31
31
  * Export Statsbeat metrics.
32
32
  */
33
- // eslint-disable-next-line @typescript-eslint/require-await
33
+ // eslint-disable-next-line @typescript-eslint/require-await, @typescript-eslint/no-misused-promises
34
34
  async export(metrics, resultCallback) {
35
35
  if (this._isShutdown) {
36
36
  setTimeout(() => resultCallback({ code: ExportResultCode.FAILED }), 0);
@@ -1 +1 @@
1
- {"version":3,"file":"statsbeatExporter.js","sourceRoot":"","sources":["../../../../src/export/statsbeat/statsbeatExporter.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAgB,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;GAEG;AACH,MAAM,OAAO,6BACX,SAAQ,wBAAwB;IAShC;;;OAGG;IACH,YAAY,OAAoC;QAC9C,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAXvB;;WAEG;QACK,gBAAW,GAAG,KAAK,CAAC;QAS1B,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC;YAC5B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,eAAe,EAAE,OAAO;YACxB,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,4DAA4D;IAC5D,KAAK,CAAC,MAAM,CACV,OAAwB,EACxB,cAA8C;QAE9C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAe,yBAAyB,CACrD,OAAO,EACP,IAAI,CAAC,kBAAkB,EACvB,IAAI,CACL,CAAC;QACF,6DAA6D;QAC7D,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE;YACzD,cAAc,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU;QACrB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { context } from \"@opentelemetry/api\";\nimport { PushMetricExporter, ResourceMetrics } from \"@opentelemetry/sdk-metrics\";\nimport { ExportResult, ExportResultCode, suppressTracing } from \"@opentelemetry/core\";\nimport { AzureMonitorExporterOptions } from \"../../config\";\nimport { TelemetryItem as Envelope } from \"../../generated\";\nimport { resourceMetricsToEnvelope } from \"../../utils/metricUtils\";\nimport { AzureMonitorBaseExporter } from \"../base\";\nimport { HttpSender } from \"../../platform\";\n\n/**\n * Azure Monitor Statsbeat Exporter\n */\nexport class AzureMonitorStatsbeatExporter\n extends AzureMonitorBaseExporter\n implements PushMetricExporter\n{\n /**\n * Flag to determine if the Exporter is shutdown.\n */\n private _isShutdown = false;\n private _sender: HttpSender;\n\n /**\n * Initializes a new instance of the AzureMonitorStatsbeatExporter class.\n * @param options - Exporter configuration\n */\n constructor(options: AzureMonitorExporterOptions) {\n super(options, true);\n this._sender = new HttpSender({\n endpointUrl: this.endpointUrl,\n instrumentationKey: this.instrumentationKey,\n trackStatsbeat: this.trackStatsbeat,\n exporterOptions: options,\n isStatsbeatSender: true,\n });\n }\n\n /**\n * Export Statsbeat metrics.\n */\n // eslint-disable-next-line @typescript-eslint/require-await\n async export(\n metrics: ResourceMetrics,\n resultCallback: (result: ExportResult) => void,\n ): Promise<void> {\n if (this._isShutdown) {\n setTimeout(() => resultCallback({ code: ExportResultCode.FAILED }), 0);\n return;\n }\n\n const envelopes: Envelope[] = resourceMetricsToEnvelope(\n metrics,\n this.instrumentationKey,\n true, // isStatsbeat flag passed to create a Statsbeat envelope.\n );\n // Supress tracing until OpenTelemetry Metrics SDK support it\n context.with(suppressTracing(context.active()), async () => {\n resultCallback(await this._sender.exportEnvelopes(envelopes));\n });\n }\n\n /**\n * Shutdown AzureMonitorStatsbeatExporter.\n */\n public async shutdown(): Promise<void> {\n this._isShutdown = true;\n return this._sender.shutdown();\n }\n\n /**\n * Force flush.\n */\n public async forceFlush(): Promise<void> {\n return Promise.resolve();\n }\n}\n"]}
1
+ {"version":3,"file":"statsbeatExporter.js","sourceRoot":"","sources":["../../../../src/export/statsbeat/statsbeatExporter.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAgB,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;GAEG;AACH,MAAM,OAAO,6BACX,SAAQ,wBAAwB;IAShC;;;OAGG;IACH,YAAY,OAAoC;QAC9C,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAXvB;;WAEG;QACK,gBAAW,GAAG,KAAK,CAAC;QAS1B,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC;YAC5B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,eAAe,EAAE,OAAO;YACxB,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,oGAAoG;IACpG,KAAK,CAAC,MAAM,CACV,OAAwB,EACxB,cAA8C;QAE9C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAe,yBAAyB,CACrD,OAAO,EACP,IAAI,CAAC,kBAAkB,EACvB,IAAI,CACL,CAAC;QACF,6DAA6D;QAC7D,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE;YACzD,cAAc,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU;QACrB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { context } from \"@opentelemetry/api\";\nimport { PushMetricExporter, ResourceMetrics } from \"@opentelemetry/sdk-metrics\";\nimport { ExportResult, ExportResultCode, suppressTracing } from \"@opentelemetry/core\";\nimport { AzureMonitorExporterOptions } from \"../../config\";\nimport { TelemetryItem as Envelope } from \"../../generated\";\nimport { resourceMetricsToEnvelope } from \"../../utils/metricUtils\";\nimport { AzureMonitorBaseExporter } from \"../base\";\nimport { HttpSender } from \"../../platform\";\n\n/**\n * Azure Monitor Statsbeat Exporter\n */\nexport class AzureMonitorStatsbeatExporter\n extends AzureMonitorBaseExporter\n implements PushMetricExporter\n{\n /**\n * Flag to determine if the Exporter is shutdown.\n */\n private _isShutdown = false;\n private _sender: HttpSender;\n\n /**\n * Initializes a new instance of the AzureMonitorStatsbeatExporter class.\n * @param options - Exporter configuration\n */\n constructor(options: AzureMonitorExporterOptions) {\n super(options, true);\n this._sender = new HttpSender({\n endpointUrl: this.endpointUrl,\n instrumentationKey: this.instrumentationKey,\n trackStatsbeat: this.trackStatsbeat,\n exporterOptions: options,\n isStatsbeatSender: true,\n });\n }\n\n /**\n * Export Statsbeat metrics.\n */\n // eslint-disable-next-line @typescript-eslint/require-await, @typescript-eslint/no-misused-promises\n async export(\n metrics: ResourceMetrics,\n resultCallback: (result: ExportResult) => void,\n ): Promise<void> {\n if (this._isShutdown) {\n setTimeout(() => resultCallback({ code: ExportResultCode.FAILED }), 0);\n return;\n }\n\n const envelopes: Envelope[] = resourceMetricsToEnvelope(\n metrics,\n this.instrumentationKey,\n true, // isStatsbeat flag passed to create a Statsbeat envelope.\n );\n // Supress tracing until OpenTelemetry Metrics SDK support it\n context.with(suppressTracing(context.active()), async () => {\n resultCallback(await this._sender.exportEnvelopes(envelopes));\n });\n }\n\n /**\n * Shutdown AzureMonitorStatsbeatExporter.\n */\n public async shutdown(): Promise<void> {\n this._isShutdown = true;\n return this._sender.shutdown();\n }\n\n /**\n * Force flush.\n */\n public async forceFlush(): Promise<void> {\n return Promise.resolve();\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  import { createDefaultHttpClient, createPipelineRequest, } from "@azure/core-rest-pipeline";
4
4
  import { diag } from "@opentelemetry/api";
5
5
  import { AIMS_API_VERSION, AIMS_FORMAT, AIMS_URI, EU_CONNECTION_STRING, EU_ENDPOINTS, NON_EU_CONNECTION_STRING, StatsbeatResourceProvider, } from "./types";
@@ -1 +1 @@
1
- {"version":3,"file":"statsbeatMetrics.js","sourceRoot":"","sources":["../../../../src/export/statsbeat/statsbeatMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n createDefaultHttpClient,\n createPipelineRequest,\n HttpMethods,\n} from \"@azure/core-rest-pipeline\";\nimport { diag } from \"@opentelemetry/api\";\nimport {\n AIMS_API_VERSION,\n AIMS_FORMAT,\n AIMS_URI,\n EU_CONNECTION_STRING,\n EU_ENDPOINTS,\n NON_EU_CONNECTION_STRING,\n StatsbeatResourceProvider,\n VirtualMachineInfo,\n} from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nconst os = require(\"os\");\n\nexport class StatsbeatMetrics {\n protected resourceProvider: string = StatsbeatResourceProvider.unknown;\n protected vmInfo: VirtualMachineInfo = {};\n protected os: string = os.type();\n protected resourceIdentifier = \"\";\n\n protected async getResourceProvider(): Promise<void> {\n // Check resource provider\n this.resourceProvider = StatsbeatResourceProvider.unknown;\n if (process.env.AKS_ARM_NAMESPACE_ID) {\n // AKS\n this.resourceProvider = StatsbeatResourceProvider.aks;\n this.resourceIdentifier = process.env.AKS_ARM_NAMESPACE_ID;\n } else if (process.env.WEBSITE_SITE_NAME) {\n // Web apps\n this.resourceProvider = StatsbeatResourceProvider.appsvc;\n this.resourceIdentifier = process.env.WEBSITE_SITE_NAME;\n if (process.env.WEBSITE_HOME_STAMPNAME) {\n this.resourceIdentifier += \"/\" + process.env.WEBSITE_HOME_STAMPNAME;\n }\n } else if (process.env.FUNCTIONS_WORKER_RUNTIME) {\n // Function apps\n this.resourceProvider = StatsbeatResourceProvider.functions;\n if (process.env.WEBSITE_HOSTNAME) {\n this.resourceIdentifier = process.env.WEBSITE_HOSTNAME;\n }\n } else if (await this.getAzureComputeMetadata()) {\n this.resourceProvider = StatsbeatResourceProvider.vm;\n this.resourceIdentifier = this.vmInfo.id + \"/\" + this.vmInfo.subscriptionId;\n // Overrride OS as VM info have higher precedence\n if (this.vmInfo.osType) {\n this.os = this.vmInfo.osType;\n }\n } else {\n this.resourceProvider = StatsbeatResourceProvider.unknown;\n }\n }\n\n public async getAzureComputeMetadata(): Promise<boolean> {\n const httpClient = createDefaultHttpClient();\n const method: HttpMethods = \"GET\";\n\n const options = {\n url: `${AIMS_URI}?${AIMS_API_VERSION}&${AIMS_FORMAT}`,\n timeout: 5000, // 5 seconds\n method: method,\n allowInsecureConnection: true,\n };\n const request = createPipelineRequest(options);\n\n await httpClient\n .sendRequest(request)\n .then((res: any) => {\n if (res.status === 200) {\n // Success; VM\n this.vmInfo.isVM = true;\n let virtualMachineData = \"\";\n res.on(\"data\", (data: any) => {\n virtualMachineData += data;\n });\n res.on(\"end\", () => {\n try {\n const data = JSON.parse(virtualMachineData);\n this.vmInfo.id = data[\"vmId\"] || \"\";\n this.vmInfo.subscriptionId = data[\"subscriptionId\"] || \"\";\n this.vmInfo.osType = data[\"osType\"] || \"\";\n } catch (error) {\n diag.debug(\"Failed to parse JSON: \", error);\n }\n });\n return true;\n } else {\n return false;\n }\n })\n .catch(() => {\n return false;\n });\n return false;\n }\n\n protected getConnectionString(endpointUrl: string): string {\n const currentEndpoint = endpointUrl;\n for (let i = 0; i < EU_ENDPOINTS.length; i++) {\n if (currentEndpoint.includes(EU_ENDPOINTS[i])) {\n return EU_CONNECTION_STRING;\n }\n }\n return NON_EU_CONNECTION_STRING;\n }\n}\n"]}
1
+ {"version":3,"file":"statsbeatMetrics.js","sourceRoot":"","sources":["../../../../src/export/statsbeat/statsbeatMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n createDefaultHttpClient,\n createPipelineRequest,\n HttpMethods,\n} from \"@azure/core-rest-pipeline\";\nimport { diag } from \"@opentelemetry/api\";\nimport {\n AIMS_API_VERSION,\n AIMS_FORMAT,\n AIMS_URI,\n EU_CONNECTION_STRING,\n EU_ENDPOINTS,\n NON_EU_CONNECTION_STRING,\n StatsbeatResourceProvider,\n VirtualMachineInfo,\n} from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nconst os = require(\"os\");\n\nexport class StatsbeatMetrics {\n protected resourceProvider: string = StatsbeatResourceProvider.unknown;\n protected vmInfo: VirtualMachineInfo = {};\n protected os: string = os.type();\n protected resourceIdentifier = \"\";\n\n protected async getResourceProvider(): Promise<void> {\n // Check resource provider\n this.resourceProvider = StatsbeatResourceProvider.unknown;\n if (process.env.AKS_ARM_NAMESPACE_ID) {\n // AKS\n this.resourceProvider = StatsbeatResourceProvider.aks;\n this.resourceIdentifier = process.env.AKS_ARM_NAMESPACE_ID;\n } else if (process.env.WEBSITE_SITE_NAME) {\n // Web apps\n this.resourceProvider = StatsbeatResourceProvider.appsvc;\n this.resourceIdentifier = process.env.WEBSITE_SITE_NAME;\n if (process.env.WEBSITE_HOME_STAMPNAME) {\n this.resourceIdentifier += \"/\" + process.env.WEBSITE_HOME_STAMPNAME;\n }\n } else if (process.env.FUNCTIONS_WORKER_RUNTIME) {\n // Function apps\n this.resourceProvider = StatsbeatResourceProvider.functions;\n if (process.env.WEBSITE_HOSTNAME) {\n this.resourceIdentifier = process.env.WEBSITE_HOSTNAME;\n }\n } else if (await this.getAzureComputeMetadata()) {\n this.resourceProvider = StatsbeatResourceProvider.vm;\n this.resourceIdentifier = this.vmInfo.id + \"/\" + this.vmInfo.subscriptionId;\n // Overrride OS as VM info have higher precedence\n if (this.vmInfo.osType) {\n this.os = this.vmInfo.osType;\n }\n } else {\n this.resourceProvider = StatsbeatResourceProvider.unknown;\n }\n }\n\n public async getAzureComputeMetadata(): Promise<boolean> {\n const httpClient = createDefaultHttpClient();\n const method: HttpMethods = \"GET\";\n\n const options = {\n url: `${AIMS_URI}?${AIMS_API_VERSION}&${AIMS_FORMAT}`,\n timeout: 5000, // 5 seconds\n method: method,\n allowInsecureConnection: true,\n };\n const request = createPipelineRequest(options);\n\n await httpClient\n .sendRequest(request)\n .then((res: any) => {\n if (res.status === 200) {\n // Success; VM\n this.vmInfo.isVM = true;\n let virtualMachineData = \"\";\n res.on(\"data\", (data: any) => {\n virtualMachineData += data;\n });\n res.on(\"end\", () => {\n try {\n const data = JSON.parse(virtualMachineData);\n this.vmInfo.id = data[\"vmId\"] || \"\";\n this.vmInfo.subscriptionId = data[\"subscriptionId\"] || \"\";\n this.vmInfo.osType = data[\"osType\"] || \"\";\n } catch (error) {\n diag.debug(\"Failed to parse JSON: \", error);\n }\n });\n return true;\n } else {\n return false;\n }\n })\n .catch(() => {\n return false;\n });\n return false;\n }\n\n protected getConnectionString(endpointUrl: string): string {\n const currentEndpoint = endpointUrl;\n for (let i = 0; i < EU_ENDPOINTS.length; i++) {\n if (currentEndpoint.includes(EU_ENDPOINTS[i])) {\n return EU_CONNECTION_STRING;\n }\n }\n return NON_EU_CONNECTION_STRING;\n }\n}\n"]}