Skip to content

Commit

Permalink
feat(opentelemetry-instrumentation-grpc): support server calls in met…
Browse files Browse the repository at this point in the history
…adataToSpanAttributes

Signed-off-by: Xavier Serrano <[email protected]>
  • Loading branch information
zombispormedio committed Feb 4, 2023
1 parent 2b59c28 commit 778012c
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,24 @@ export class GrpcJsInstrumentation extends InstrumentationBase {
[SemanticAttributes.RPC_SERVICE]: service,
});

instrumentation._metadataCapture.server.captureRequestMetadata(
span,
call.metadata
);

instrumentation._wrap(
call,
'sendMetadata',
originalSendMetadata =>
(responseMetadata: grpcJs.Metadata) => {
instrumentation._metadataCapture.server.captureResponseMetadata(
span,
responseMetadata
);
originalSendMetadata.call(call, responseMetadata);
}
);

context.with(trace.setSpan(context.active(), span), () => {
handleServerFunction.call(
self,
Expand Down Expand Up @@ -385,6 +403,16 @@ export class GrpcJsInstrumentation extends InstrumentationBase {
config.metadataToSpanAttributes?.client?.responseMetadata ?? []
),
},
server: {
captureRequestMetadata: metadataCapture(
'request',
config.metadataToSpanAttributes?.server?.requestMetadata ?? []
),
captureResponseMetadata: metadataCapture(
'response',
config.metadataToSpanAttributes?.server?.responseMetadata ?? []
),
},
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,24 @@ export class GrpcNativeInstrumentation extends InstrumentationBase<
[SemanticAttributes.RPC_SERVICE]: service,
});

instrumentation._metadataCapture.server.captureRequestMetadata(
span,
call.metadata
);

instrumentation._wrap(
call as any,
'sendMetadata',
originalSendMetadata =>
(responseMetadata: grpcTypes.Metadata) => {
instrumentation._metadataCapture.server.captureResponseMetadata(
span,
responseMetadata
);
originalSendMetadata.call(call, responseMetadata);
}
);

context.with(trace.setSpan(context.active(), span), () => {
switch (type) {
case 'unary':
Expand Down Expand Up @@ -370,6 +388,16 @@ export class GrpcNativeInstrumentation extends InstrumentationBase<
config.metadataToSpanAttributes?.client?.responseMetadata ?? []
),
},
server: {
captureRequestMetadata: metadataCapture(
'request',
config.metadataToSpanAttributes?.server?.requestMetadata ?? []
),
captureResponseMetadata: metadataCapture(
'response',
config.metadataToSpanAttributes?.server?.responseMetadata ?? []
),
},
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,14 @@ export type metadataCaptureType = {
metadata: grpcJsTypes.Metadata | grpcTypes.Metadata
) => void;
};
server: {
captureRequestMetadata: (
span: Span,
metadata: grpcJsTypes.Metadata | grpcTypes.Metadata
) => void;
captureResponseMetadata: (
span: Span,
metadata: grpcJsTypes.Metadata | grpcTypes.Metadata
) => void;
};
};
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,9 @@ export interface GrpcInstrumentationConfig extends InstrumentationConfig {
responseMetadata?: string[];
requestMetadata?: string[];
};
server?: {
responseMetadata?: string[];
requestMetadata?: string[];
};
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -978,6 +978,10 @@ export const runTests = (
requestMetadata: ['client_metadata_key'],
responseMetadata: ['server_metadata_key'],
},
server: {
requestMetadata: ['client_metadata_key'],
responseMetadata: ['server_metadata_key'],
},
},
});

Expand Down Expand Up @@ -1006,6 +1010,11 @@ export const runTests = (
'rpc.response.metadata.server_metadata_key':
'server_metadata_value',
},
serverAttributes: {
'rpc.request.metadata.client_metadata_key': 'client_metadata_value',
'rpc.response.metadata.server_metadata_key':
'server_metadata_value',
},
};

runTestWithAttributeValidation(
Expand Down

0 comments on commit 778012c

Please sign in to comment.