8
8
import { Instrumentation , registerInstrumentations } from '@opentelemetry/instrumentation' ;
9
9
import { awsLambdaDetector } from '@opentelemetry/resource-detector-aws' ;
10
10
import {
11
- detectResources ,
11
+ detectResourcesSync ,
12
12
envDetector ,
13
13
processDetector ,
14
14
} from '@opentelemetry/resources' ;
@@ -22,6 +22,7 @@ import {
22
22
import { getEnv } from '@opentelemetry/core' ;
23
23
import { AwsLambdaInstrumentationConfig } from '@opentelemetry/instrumentation-aws-lambda' ;
24
24
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto' ;
25
+ import { MeterProvider , MeterProviderOptions } from '@opentelemetry/sdk-metrics' ;
25
26
26
27
function defaultConfigureInstrumentations ( ) {
27
28
// Use require statements for instrumentation to avoid having to have transitive dependencies on all the typescript
@@ -62,6 +63,8 @@ declare global {
62
63
function configureSdkRegistration (
63
64
defaultSdkRegistration : SDKRegistrationConfig
64
65
) : SDKRegistrationConfig ;
66
+ function configureMeter ( defaultConfig : MeterProviderOptions ) : MeterProviderOptions ;
67
+ function configureMeterProvider ( meterProvider : MeterProvider ) : void
65
68
function configureLambdaInstrumentation ( config : AwsLambdaInstrumentationConfig ) : AwsLambdaInstrumentationConfig
66
69
function configureInstrumentations ( ) : Instrumentation [ ]
67
70
}
@@ -86,7 +89,7 @@ registerInstrumentations({
86
89
} ) ;
87
90
88
91
async function initializeProvider ( ) {
89
- const resource = await detectResources ( {
92
+ const resource = detectResourcesSync ( {
90
93
detectors : [ awsLambdaDetector , envDetector , processDetector ] ,
91
94
} ) ;
92
95
@@ -117,10 +120,24 @@ async function initializeProvider() {
117
120
}
118
121
tracerProvider . register ( sdkRegistrationConfig ) ;
119
122
123
+ // Configure default meter provider (doesn't export metrics)
124
+ let meterConfig : MeterProviderOptions = {
125
+ resource,
126
+ }
127
+ if ( typeof configureMeter === 'function' ) {
128
+ meterConfig = configureMeter ( meterConfig ) ;
129
+ }
130
+
131
+ const meterProvider = new MeterProvider ( meterConfig ) ;
132
+ if ( typeof configureMeterProvider === 'function' ) {
133
+ configureMeterProvider ( meterProvider )
134
+ }
135
+
120
136
// Re-register instrumentation with initialized provider. Patched code will see the update.
121
137
registerInstrumentations ( {
122
138
instrumentations,
123
139
tracerProvider,
140
+ meterProvider
124
141
} ) ;
125
142
}
126
143
initializeProvider ( ) ;
0 commit comments