Socket
Socket
Sign inDemoInstall

@opentelemetry/instrumentation-http

Package Overview
Dependencies
28
Maintainers
3
Versions
185
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @opentelemetry/instrumentation-http

OpenTelemetry http/https automatic instrumentation package.


Version published
Weekly downloads
980K
decreased by-20.37%
Maintainers
3
Created
Weekly downloads
 

Readme

Source

OpenTelemetry HTTP and HTTPS Instrumentation for Node.js

NPM Published Version Apache License

Note: This is an experimental package under active development. New releases may include breaking changes.

This module provides automatic instrumentation for http and https.

For automatic instrumentation see the @opentelemetry/sdk-trace-node package.

Installation

npm install --save @opentelemetry/instrumentation-http

Usage

OpenTelemetry HTTP Instrumentation allows the user to automatically collect trace data and export them to their backend of choice, to give observability to distributed systems.

To load a specific instrumentation (HTTP in this case), specify it in the Node Tracer's configuration.

const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http');
const {
  ConsoleSpanExporter,
  NodeTracerProvider,
  SimpleSpanProcessor,
} = require('@opentelemetry/sdk-trace-node');
const { registerInstrumentations } = require('@opentelemetry/instrumentation');

const provider = new NodeTracerProvider();

provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));
provider.register();

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

See examples/http for a short example.

Http instrumentation Options

Http instrumentation has few options available to choose from. You can set the following:

OptionsTypeDescription
applyCustomAttributesOnSpanHttpCustomAttributeFunctionFunction for adding custom attributes
requestHookHttpRequestCustomAttributeFunctionFunction for adding custom attributes before request is handled
responseHookHttpResponseCustomAttributeFunctionFunction for adding custom attributes before response is handled
startIncomingSpanHookStartIncomingSpanCustomAttributeFunctionFunction for adding custom attributes before a span is started in incomingRequest
startOutgoingSpanHookStartOutgoingSpanCustomAttributeFunctionFunction for adding custom attributes before a span is started in outgoingRequest
ignoreIncomingRequestHookIgnoreIncomingRequestFunctionHttp instrumentation will not trace all incoming requests that matched with custom function
ignoreOutgoingRequestHookIgnoreOutgoingRequestFunctionHttp instrumentation will not trace all outgoing requests that matched with custom function
serverNamestringThe primary server name of the matched virtual host.
requireParentforOutgoingSpansBooleanRequire that is a parent span to create new span for outgoing requests.
requireParentforIncomingSpansBooleanRequire that is a parent span to create new span for incoming requests.
headersToSpanAttributesobjectList of case insensitive HTTP headers to convert to span attributes. Client (outgoing requests, incoming responses) and server (incoming requests, outgoing responses) headers will be converted to span attributes in the form of http.{request|response}.header.header_name, e.g. http.response.header.content_length

The following options are deprecated:

OptionsTypeDescription
ignoreIncomingPathsIgnoreMatcher[]Http instrumentation will not trace all incoming requests that match paths

Semantic Conventions

This package uses @opentelemetry/semantic-conventions version 1.22+, which implements Semantic Convention Version 1.7.0

Attributes collected:

AttributeShort DescriptionNotes
ip_tcpTransport protocol usedKey: NETTRANSPORTVALUES_IP_TCP
ip_udpTransport protocol usedKey: NETTRANSPORTVALUES_IP_UDP
http.client_ipThe IP address of the original client behind all proxies, if knownKey: SEMATTRS_HTTP_CLIENT_IP
http.flavorKind of HTTP protocol usedKey: SEMATTRS_HTTP_FLAVOR
http.hostThe value of the HTTP host headerKey: SEMATTRS_HTTP_HOST
http.methodHTTP request methodKey: SEMATTRS_HTTP_METHOD
http.request_content_lengthThe size of the request payload body in bytesKey: SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH
http.request_content_length_uncompressedThe size of the uncompressed request payload body after transport decodingKey: SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED
http.response_content_lengthThe size of the response payload body in bytesKey: SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH
http.response_content_length_uncompressedThe size of the uncompressed response payload body after transport decodingKey: SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED
http.routeThe matched route (path template).Key: SEMATTRS_HTTP_ROUTE
http.schemeThe URI scheme identifying the used protocolKey: SEMATTRS_HTTP_SCHEME
http.server_nameThe primary server name of the matched virtual hostKey: SEMATTRS_HTTP_SERVER_NAME
http.status_codeHTTP response status codeKey: SEMATTRS_HTTP_STATUS_CODE
http.targetThe full request target as passed in a HTTP request line or equivalentKey: SEMATTRS_HTTP_TARGET
http.urlFull HTTP request URL in the form scheme://host[:port]/path?query[#fragment]Key: SEMATTRS_HTTP_URL
http.user_agentValue of the HTTP User-Agent header sent by the clientKey: SEMATTRS_HTTP_USER_AGENT
net.host.ipLike net.peer.ip but for the host IP. Useful in case of a multi-IP hostKey: SEMATTRS_NET_HOST_IP
net.host.nameLocal hostname or similarKey: SEMATTRS_NET_HOST_NAME
net.host.portLike net.peer.port but for the host portKey: SEMATTRS_NET_HOST_PORT
net.peer.ip.Remote address of the peer (dotted decimal for IPv4 or RFC5952 for IPv6)Key: SEMATTRS_NET_PEER_IP
net.peer.nameRemote hostname or similarKey: SEMATTRS_NET_PEER_NAME
net.peer.portRemote port numberKey: SEMATTRS_NET_PEER_PORT
net.transportTransport protocol usedKey: SEMATTRS_NET_TRANSPORT

License

Apache 2.0 - See LICENSE for more information.

Keywords

FAQs

Last updated on 24 Apr 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc