Library, created for tracing and observability using @opentelemetry and Azure Application Insights
! APPINSIGHTS VERSION BUG !
applicationinsights API changed a lot between 3.0.0-beta.4 and latest beta and we can't support it. We stick to "3.0.0-beta.5" until a release version is available.
The same situation is with @azure/monitor-opentelemetry-exporter
- we stick it to "1.0.0-beta.12"
! IMPORTANT !
-
APPLICATIONINSIGHTS_CONNECTION_STRING env variable is required to connect to Azure Application Insights
-
TRACING_SAMPLING_RATIO env variable is required to set the sampling ratio (value between 0 and 1)
-
INSTRUMENTATIONS env variable of comma separated values for the instrumentations the tracing will configure for the service:
- redis
- graphQL
- amqplib
- mongoDB
-
run
npm version <version_name>
after every update
npm install @atp-autoteile/tracing
- In order for your functions to trace their executions, they need to be wrapped using a wrapper helper:
import {wrapFunctionWithContext} from "@atp-autoteile/tracing";
const azureFunction = async (
context: Context,
): Promise<void> => {
// Implementation
}
export default wrapFunctionWithContext(azureFunction);
- If your function is a GraphQL server, a patch has to be applied in order to configure tracing:
import tracingPatchApolloServer from "@atp-autoteile/tracing";
tracingPatchApolloServer();
export default startServerAndCreateHandler(server, {
context: async ({context}) => ({
...context,
dataSources: {
prices: new PricesDataSource(),
},
}),
});
- Update your local.settings.json and terraform app_settings for azure app function container
"TRACING_SAMPLING_RATIO" = "0.1"
"APPLICATIONINSIGHTS_CONNECTION_STRING" = 'InstrumentationKey=******;IngestionEndpoint=https://******.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/'
"languageWorkers__node__arguments": "-r @atp-autoteile/tracing/start",
"INSTRUMENTATIONS": "redis,amqplib,graphql"