Skip to content

Commit

Permalink
Disable irrelevant OTEL instrumentation
Browse files Browse the repository at this point in the history
  • Loading branch information
wcalderipe committed Nov 7, 2024
1 parent 3fcad4d commit d01cf88
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 5 deletions.
4 changes: 2 additions & 2 deletions apps/policy-engine/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ Policy decision point for fine-grained authorization in web3.0.

## Requirements

- [Open Policy Agent (OPA)
binary](https://www.openpolicyagent.org/docs/latest/#1-download-opa) installed
- [Open Policy Agent (OPA) binary version >=
0.69](https://www.openpolicyagent.org/docs/latest/#1-download-opa) installed
and accessible in your `$PATH`.

## Getting started
Expand Down
53 changes: 50 additions & 3 deletions packages/open-telemetry/src/lib/open-telemetry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
*/

import { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api'
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node'
import { InstrumentationConfigMap, getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node'
import { CompositePropagator, W3CBaggagePropagator, W3CTraceContextPropagator } from '@opentelemetry/core'
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-proto'
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto'
Expand All @@ -24,9 +24,56 @@ import { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions'
type OpenTelemetryOption = {
serviceName: string
diagLogLevel?: DiagLogLevel
instrumentations?: InstrumentationConfigMap
}

export const buildOpenTelemetrySdk = ({ serviceName, diagLogLevel }: OpenTelemetryOption) => {
const getInstrumentations = (instrumentations?: InstrumentationConfigMap) => {
return getNodeAutoInstrumentations({
'@opentelemetry/instrumentation-nestjs-core': { enabled: true },
'@opentelemetry/instrumentation-http': { enabled: true },
'@opentelemetry/instrumentation-winston': { enabled: true },
'@opentelemetry/instrumentation-net': { enabled: true },
'@opentelemetry/instrumentation-express': { enabled: true },
'@opentelemetry/instrumentation-dns': { enabled: true },

// Disable irrelevant instrumentations.
'@opentelemetry/instrumentation-ioredis': { enabled: false },
'@opentelemetry/instrumentation-aws-sdk': { enabled: false },
'@opentelemetry/instrumentation-aws-lambda': { enabled: false },
'@opentelemetry/instrumentation-bunyan': { enabled: false },
'@opentelemetry/instrumentation-connect': { enabled: false },
'@opentelemetry/instrumentation-cucumber': { enabled: false },
'@opentelemetry/instrumentation-dataloader': { enabled: false },
'@opentelemetry/instrumentation-fastify': { enabled: false },
'@opentelemetry/instrumentation-fs': { enabled: false },
'@opentelemetry/instrumentation-generic-pool': { enabled: false },
'@opentelemetry/instrumentation-graphql': { enabled: false },
'@opentelemetry/instrumentation-grpc': { enabled: false },
'@opentelemetry/instrumentation-hapi': { enabled: false },
'@opentelemetry/instrumentation-kafkajs': { enabled: false },
'@opentelemetry/instrumentation-knex': { enabled: false },
'@opentelemetry/instrumentation-koa': { enabled: false },
'@opentelemetry/instrumentation-lru-memoizer': { enabled: false },
'@opentelemetry/instrumentation-memcached': { enabled: false },
'@opentelemetry/instrumentation-mongodb': { enabled: false },
'@opentelemetry/instrumentation-mysql': { enabled: false },
'@opentelemetry/instrumentation-mysql2': { enabled: false },
'@opentelemetry/instrumentation-pg': { enabled: false },
'@opentelemetry/instrumentation-pino': { enabled: false },
'@opentelemetry/instrumentation-redis': { enabled: false },
'@opentelemetry/instrumentation-redis-4': { enabled: false },
'@opentelemetry/instrumentation-restify': { enabled: false },
'@opentelemetry/instrumentation-router': { enabled: false },
'@opentelemetry/instrumentation-socket.io': { enabled: false },
'@opentelemetry/instrumentation-tedious': { enabled: false },
'@opentelemetry/instrumentation-undici': { enabled: false },

// Customer override.
...instrumentations
})
}

export const buildOpenTelemetrySdk = ({ serviceName, diagLogLevel, instrumentations }: OpenTelemetryOption) => {
if (diagLogLevel) {
diag.setLogger(new DiagConsoleLogger(), diagLogLevel)
}
Expand All @@ -47,7 +94,7 @@ export const buildOpenTelemetrySdk = ({ serviceName, diagLogLevel }: OpenTelemet
metricReader: new PeriodicExportingMetricReader({
exporter: new OTLPMetricExporter()
}),
instrumentations: [getNodeAutoInstrumentations()]
instrumentations: [getInstrumentations(instrumentations)]
})
}

Expand Down

0 comments on commit d01cf88

Please sign in to comment.