microsoft / ApplicationInsights-node.js

Microsoft Application Insights SDK for Node.js

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ApplicationInsights:Error: @opentelemetry/api: Attempted duplicate registration of API: propagation

Ramemis opened this issue · comments

Facing issue when I'm using the Application Insights-Node package in the page.

import Container from 'components/core/container/Container';
import { GetServerSideProps } from 'next';

const Page = () => {
  return (
    <Container>
      <div className="page-wrapper">P+ Landing Page - Under construction</div>
    </Container>
  );
};

export const getServerSideProps: GetServerSideProps<any> = async () => {
  if (process.env.NEXT_RUNTIME === 'nodejs') {
    let appInsights = require("applicationinsights");
    appInsights.setup("connectionstring from azure").start();
    let client = appInsights.defaultClient;
    client.trackEvent({name: "my custom event", properties: {customProperty: "custom property value"}});
  }
  try {
    await fetch('exception');
  } catch (e: any) {
    // appInsights.defaultClient.trackException({ exception: e });
  }
  return { props: { success: false } };
};

export default Page;

Also I'm not seeing any logs in the azure app insights.

Error:

clinical-content:dev: ApplicationInsights:Error: @opentelemetry/api: Attempted duplicate registration of API: propagation
clinical-content:dev: at registerGlobal (/home/newApp/PatientNextGen/node_modules/.pnpm/@opentelemetry+api@1.6.0/node_modules/@opentelemetry/api/build/src/internal/global-utils.js:32:21)
clinical-content:dev: at PropagationAPI.setGlobalPropagator (/home/newApp/PatientNextGen/node_modules/.pnpm/@opentelemetry+api@1.6.0/node_modules/@opentelemetry/api/build/src/api/propagation.js:52:50)
clinical-content:dev: at NodeTracerProvider.register (/home/newApp/PatientNextGen/node_modules/.pnpm/@opentelemetry+sdk-trace-base@1.17.1_@opentelemetry+api@1.6.0/node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.js:100:31)
clinical-content:dev: at NodeTracerProvider.register (/home/newApp/PatientNextGen/node_modules/.pnpm/@opentelemetry+sdk-trace-node@1.17.1_@opentelemetry+api@1.6.0/node_modules/@opentelemetry/sdk-trace-node/build/src/NodeTracerProvider.js:43:15)
clinical-content:dev: at new TraceHandler (/home/newApp/PatientNextGen/node_modules/.pnpm/@Azure+monitor-opentelemetry@1.1.0/node_modules/@azure/monitor-opentelemetry/dist/index.js:955:30)
clinical-content:dev: at useAzureMonitor (/home/newApp/PatientNextGen/node_modules/.pnpm/@Azure+monitor-opentelemetry@1.1.0/node_modules/@azure/monitor-opentelemetry/dist/index.js:1136:20)
clinical-content:dev: at useAzureMonitor (/home/newApp/PatientNextGen/node_modules/.pnpm/applicationinsights@3.0.0-beta.10/node_modules/applicationinsights/out/src/main.js:30:49)
clinical-content:dev: at TelemetryClient.initialize (/home/newApp/PatientNextGen/node_modules/.pnpm/applicationinsights@3.0.0-beta.10/node_modules/applicationinsights/out/src/shim/telemetryClient.js:37:36)
clinical-content:dev: at Configuration.start (/home/newApp/PatientNextGen/node_modules/.pnpm/applicationinsights@3.0.0-beta.10/node_modules/applicationinsights/out/src/shim/applicationinsights.js:36:31)
clinical-content:dev: at getServerSideProps (webpack-internal:///./pages/doctor/index.tsx:30:220)
clinical-content:dev: at /home/newApp/PatientNextGen/node_modules/.pnpm/next@13.4.19_@babel+core@7.22.9_@opentelemetry+api@1.6.0_react-dom@18.2.0_react@18.2.0_sass@1.66.1/node_modules/next/dist/server/render.js:551:26
clinical-content:dev: at /home/newApp/PatientNextGen/node_modules/.pnpm/next@13.4.19_@babel+core@7.22.9_@opentelemetry+api@1.6.0_react-dom@18.2.0_react@18.2.0_sass@1.66.1/node_modules/next/dist/server/lib/trace/tracer.js:117:36
clinical-content:dev: at AsyncLocalStorage.run (node:async_hooks:346:14)
clinical-content:dev: at AsyncLocalStorageContextManager.with (/home/newApp/PatientNextGen/node_modules/.pnpm/@opentelemetry+context-async-hooks@1.17.1_@opentelemetry+api@1.6.0/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)
clinical-content:dev: at ContextAPI.with (/home/newApp/PatientNextGen/node_modules/.pnpm/@opentelemetry+api@1.6.0/node_modules/@opentelemetry/api/build/src/api/context.js:60:46)
clinical-content:dev: at Tracer.startActiveSpan (/home/newApp/PatientNextGen/node_modules/.pnpm/@opentelemetry+sdk-trace-base@1.17.1_@opentelemetry+api@1.6.0/node_modules/@opentelemetry/sdk-trace-base/build/src/Tracer.js:122:32)
clinical-content:dev: at /home/newApp/PatientNextGen/node_modules/.pnpm/next@13.4.19_@babel+core@7.22.9_@opentelemetry+api@1.6.0_react-dom@18.2.0_react@18.2.0_sass@1.66.1/node_modules/next/dist/server/lib/trace/tracer.js:106:107
clinical-content:dev: at AsyncLocalStorage.run (node:async_hooks:346:14)
clinical-content:dev: at AsyncLocalStorageContextManager.with (/home/newApp/PatientNextGen/node_modules/.pnpm/@opentelemetry+context-async-hooks@1.17.1_@opentelemetry+api@1.6.0/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)
clinical-content:dev: at ContextAPI.with (/home/newApp/PatientNextGen/node_modules/.pnpm/@opentelemetry+api@1.6.0/node_modules/@opentelemetry/api/build/src/api/context.js:60:46)
clinical-content:dev: at NextTracerImpl.trace (/home/newApp/PatientNextGen/node_modules/.pnpm/next@13.4.19_@babel+core@7.22.9_@opentelemetry+api@1.6.0_react-dom@18.2.0_react@18.2.0_sass@1.66.1/node_modules/next/dist/server/lib/trace/tracer.js:106:32)
clinical-content:dev: at renderToHTMLImpl (/home/newApp/PatientNextGen/node_modules/.pnpm/next@13.4.19_@babel+core@7.22.9_@opentelemetry+api@1.6.0_react-dom@18.2.0_react@18.2.0_sass@1.66.1/node_modules/next/dist/server/render.js:546:51)
clinical-content:dev: at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
clinical-content:dev: at async doRender (/home/newApp/PatientNextGen/node_modules/.pnpm/next@13.4.19_@babel+core@7.22.9_@opentelemetry+api@1.6.0_react-dom@18.2.0_react@18.2.0_sass@1.66.1/node_modules/next/dist/server/base-server.js:1140:26)
clinical-content:dev: at async cacheEntry.responseCache.get.incrementalCache.incrementalCache (/home/newApp/PatientNextGen/node_modules/.pnpm/next@13.4.19_@babel+core@7.22.9_@opentelemetry+api@1.6.0_react-dom@18.2.0_react@18.2.0_sass@1.66.1/node_modules/next/dist/server/base-server.js:1300:28)
clinical-content:dev: at async /home/newApp/PatientNextGen/node_modules/.pnpm/next@13.4.19_@babel+core@7.22.9_@opentelemetry+api@1.6.0_react-dom@18.2.0_react@18.2.0_sass@1.66.1/node_modules/next/dist/server/response-cache/index.js:99:36 []
clinical-content:dev: ApplicationInsights:@azure/opentelemetry-instrumentation-azure-sdk [
clinical-content:dev: 'Module @azure/core-tracing has been loaded before @azure/opentelemetry-instrumentation-azure-sdk so it might not work, please initialize it before requiring @azure/core-tracing'
clinical-content:dev: ]
clinical-content:dev: ApplicationInsights:Invalid metric name: "\ASP.NET Applications(??APP_W3SVC_PROC??)\Request Execution Time". The metric name should be a ASCII string with a length no greater than 255 characters. []
clinical-content:dev: ApplicationInsights:Invalid metric name: "\ASP.NET Applications(??APP_W3SVC_PROC??)\Requests/Sec". The metric name should be a ASCII string with a length no greater than 255 characters. []
clinical-content:dev: ApplicationInsights:Invalid metric name: "\Process(??APP_WIN32_PROC??)\Private Bytes". The metric name should be a ASCII string with a length no greater than 255 characters. []
clinical-content:dev: ApplicationInsights:Invalid metric name: "\Memory\Available Bytes". The metric name should be a ASCII string with a length no greater than 255 characters. []
clinical-content:dev: ApplicationInsights:Invalid metric name: "\Processor(_Total)% Processor Time". The metric name should be a ASCII string with a length no greater than 255 characters. []
clinical-content:dev: ApplicationInsights:Invalid metric name: "\Process(??APP_WIN32_PROC??)% Processor Time". The metric name should be a ASCII string with a length no greater than 255 characters.

@Ramemis What version of the ApplicationInsights SDK are you using?

@JacksonWeber I have the same issue and I'm running 3.0.0-beta.10

@lapa182 @Ramemis If you are using the Application Insights shim in the beta and the TelemetryClient, you'll get this error. What's happening is that OpenTelemetry is trying to register two global providers. In this case only the first provider will win. There's a paradigm shift in how handling what would have been handled by two TelemetryClients in the past should be handled now. With OpenTelemetry you should be able to create multiple span processors in order to achieve effectively the same as the multiple TelemetryClients.