### Install Dependencies and Start the Node.js Server Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md Install the necessary Node.js dependencies and start the application server. This prepares the environment for generating traces. ```bash npm install npm start ``` -------------------------------- ### Navigate and Run Application Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md Commands to stop the current application, navigate to the 'add-processors' directory, and install dependencies to start the application. ```bash #stop the app CTRL + C # navigate to the add-processors folder cd ../add-processors #install dependencies and start the app npm install npm start ``` -------------------------------- ### Start OpenTelemetry SDK Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md Starts the OpenTelemetry SDK to begin recording and sending traces to the configured Collector. ```javascript sdk.start(); ``` -------------------------------- ### Clone the OpenTelemetry for Beginners Project Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md Clone the project repository to your local machine to follow along with the tutorials. Navigate into the cloned directory to access the JavaScript tracing examples. ```bash # Choose a directory of your choice git clone https://github.com/open-telemetry/opentelemetry-for-beginners.git cd opentelemetry-for-beginners/javascript/traces/bare-bones-setup ``` -------------------------------- ### Node.js Auto-Instrumentation Setup Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md Prepares your Node.js application to generate traces through auto-instrumentation and send this trace data to a collector or backend. Ensure this runs before your application code. ```javascript const opentelemetry = require('@opentelemetry/sdk-node'); const { getNodeAutoInstrumentations, } = require('@opentelemetry/auto-instrumentations-node'); const { OTLPTraceExporter, } = require('@opentelemetry/exporter-trace-otlp-grpc'); const sdk = new opentelemetry.NodeSDK({ traceExporter: new OTLPTraceExporter({ url: 'http://localhost:4317', }), instrumentations: [getNodeAutoInstrumentations()], }); sdk.start(); ``` -------------------------------- ### Full OpenTelemetry Collector Configuration Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md A complete example of an OpenTelemetry Collector configuration file, including receivers, exporters, and service pipelines. ```yaml receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: debug: verbosity: detailed otlp/jaeger: endpoint: jaeger:4317 tls: insecure: true service: pipelines: traces: receivers: [otlp] exporters: [debug, otlp/jaeger] ``` -------------------------------- ### Initialize NodeSDK Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md Initializes the OpenTelemetry Node.js SDK, which provides the tools to generate, manage, and collect telemetry data. ```javascript const sdk = new opentelemetry.NodeSDK({ // configuration goes here }); ``` -------------------------------- ### Import OpenTelemetry Packages Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md Imports the core OpenTelemetry SDK for Node.js, automatic instrumentation, and the OTLP gRPC trace exporter. ```javascript const opentelemetry = require('@opentelemetry/sdk-node'); const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node'); const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc'); ``` -------------------------------- ### Configure Auto-Instrumentation and Exporter Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md Configures the NodeSDK to use automatic instrumentation for Node.js libraries and sets up the OTLPTraceExporter to send traces to a local collector at 'http://localhost:4317'. ```javascript const sdk = new opentelemetry.NodeSDK({ traceExporter: new OTLPTraceExporter({ url: 'http://localhost:4317', }), instrumentations: [getNodeAutoInstrumentations()], }); ``` -------------------------------- ### Debug and OTLP/Jaeger Exporter Configuration Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md Configuration for debug and OTLP/Jaeger exporters, detailing how telemetry data is sent to backends or logged. ```yaml exporters: debug: verbosity: detailed otlp/jaeger: endpoint: jaeger:4317 tls: insecure: true ``` -------------------------------- ### Service Pipeline Configuration for Traces Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md Defines the service component, specifically a pipeline for traces, specifying receivers and exporters. ```yaml service: pipelines: traces: receivers: [otlp] exporters: [debug, otlp/jaeger] ``` -------------------------------- ### OpenTelemetry Collector Configuration with Processors Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md YAML configuration for the OpenTelemetry Collector, including receivers, resource, attributes, and batch processors, and debug/OTLP exporters. ```yaml receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 processors: resource: attributes: - key: deployment.environment.name value: local action: insert - key: host.arch action: delete - key: host.id action: delete - key: host.name action: delete - key: process.command action: delete - key: process.command_args action: delete - key: process.executable.path action: delete - key: process.owner action: delete - key: process.pid action: delete attributes: actions: - key: http.user_agent action: delete - key: net.host.ip action: delete - key: net.peer.ip action: delete - key: net.host.port action: delete - key: net.peer.port action: delete batch: timeout: 5s send_batch_size: 512 exporters: debug: verbosity: detailed otlp/jaeger: endpoint: jaeger:4317 tls: insecure: true service: pipelines: traces: receivers: [otlp] processors: [resource, attributes, batch] exporters: [debug, otlp/jaeger] ``` -------------------------------- ### Restart Docker Compose for Collector Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md Commands to stop existing Docker containers and restart the OpenTelemetry Collector and Jaeger with the updated configuration. ```bash # stop the running containers CTRL + C # navigate to the add-processors folder cd ../add-processors # restart with the updated configuration docker compose up --build ``` -------------------------------- ### Configure Batch Processor for Telemetry Data Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md The batch processor groups telemetry data into batches before exporting. Adjust timeout and send_batch_size parameters for optimal performance. ```yaml batch: timeout: 5s send_batch_size: 512 ``` -------------------------------- ### Define Traces Pipeline in Service Component Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md The service component ties receivers, processors, and exporters into pipelines. Processors are applied in the order listed, with the batch processor recommended last. ```yaml service: pipelines: traces: receivers: [otlp] processors: [resource, attributes, batch] exporters: [debug, otlp/jaeger] ``` -------------------------------- ### Configure Resource Processor to Insert and Delete Attributes Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md Use the resource processor to insert new metadata, such as environment information, and delete sensitive or low-value host and process metadata. ```yaml processors: resource: attributes: - key: deployment.environment.name value: local action: insert - key: host.arch action: delete - key: host.id action: delete - key: host.name action: delete - key: process.command action: delete - key: process.command_args action: delete - key: process.executable.path action: delete - key: process.owner action: delete - key: process.pid action: delete ``` -------------------------------- ### OTLP Receiver Configuration Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md Configuration for the OTLP receiver, specifying protocols and endpoints for accepting telemetry data. ```yaml receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 ``` -------------------------------- ### Configure Attributes Processor to Delete Span Attributes Source: https://github.com/open-telemetry/opentelemetry-for-beginners/blob/main/javascript/traces/README.md The attributes processor can be used to remove specific span attributes, such as client or network details, to focus data on application behavior. ```yaml attributes: actions: - key: http.user_agent action: delete - key: net.host.ip action: delete - key: net.host.port action: delete - key: net.peer.ip action: delete - key: net.peer.port action: delete ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.