0.0.3 • Published 6 months ago

@atp-autoteile/tracing v0.0.3

Weekly downloads
-
License
UNLICENSED
Repository
-
Last release
6 months ago

ATP_Tracing

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

USAGE

Installation

npm install @atp-autoteile/tracing

1. Azure Function context wrapping

  • 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);

2. Apollo GraphQL Server patching

  • 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(),
        },
    }),
});

3. Local.setting.json and terraform app_settings

  • 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"