opentelemetry-js icon indicating copy to clipboard operation
opentelemetry-js copied to clipboard

Wrong data type for rpc.grpc.status_code

Open makeavish opened this issue 3 years ago • 1 comments
trafficstars

Please answer these questions before submitting a bug report.

What version of OpenTelemetry are you using?

1.3.0

What version of Node are you using?

v18.3.0

Please provide the code you used to setup the OpenTelemetry SDK

const opentelemetry = require('@opentelemetry/api');
const { registerInstrumentations } = require('@opentelemetry/instrumentation');
const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');
const { Resource } = require('@opentelemetry/resources');
const { SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions');
const { SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc');
const { GrpcInstrumentation } = require('@opentelemetry/instrumentation-grpc');
const grpc = require('@grpc/grpc-js');

const EXPORTER = process.env.EXPORTER || '';

module.exports = (serviceName) => {
    const provider = new NodeTracerProvider({
        resource: new Resource({
            [SemanticResourceAttributes.SERVICE_NAME]: serviceName,
        }),
    });

    let exporter;
    if (EXPORTER.toLowerCase().startsWith('otlp')) {
        exporter = new OTLPTraceExporter({
            serviceName,
            credentials: grpc.credentials.createInsecure(),
        });
    } else {
        return console.error(`Unknown exporter ${EXPORTER}`);
    }

    provider.addSpanProcessor(new SimpleSpanProcessor(exporter));

    // Initialize the OpenTelemetry APIs to use the NodeTracerProvider bindings
    provider.register();

    registerInstrumentations({
        instrumentations: [
            new GrpcInstrumentation(),
        ],
    });

    return opentelemetry.trace.getTracer('grpc-js-example');
};

What did you do?

Make a request after setting up a grpc server with grpc-js.

What did you expect to see?

Expected rpc.grpc.status_code to be of type int but it was string.

Additional context

According to official otel spec, rpc.grpc.status_code should be int data type. Ref: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/rpc.md#grpc-attributes

makeavish avatar Jun 20 '22 10:06 makeavish

Possibly related #2984

dyladan avatar Jun 21 '22 19:06 dyladan