Cleanup + correct node getting started (#2470)
Co-authored-by: Patrice Chalin <chalin@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									9f825ae2a7
								
							
						
					
					
						commit
						675a252e4b
					
				|  | @ -16,23 +16,27 @@ Ensure that you have the following installed locally: | |||
| 
 | ||||
| ## Example Application | ||||
| 
 | ||||
| This is a small example application we will monitor in this guide. | ||||
| The following example uses a basic Express application. | ||||
| 
 | ||||
| ### Dependencies | ||||
| 
 | ||||
| Create an empty package.json: | ||||
| First, create an empty package.json: | ||||
| 
 | ||||
| ```shell | ||||
| npm init -f | ||||
| ``` | ||||
| 
 | ||||
| Install dependencies used by the example. | ||||
| Next, install Express dependencies. | ||||
| 
 | ||||
| <!-- prettier-ignore-start --> | ||||
| {{< tabpane lang=shell persistLang=false >}} | ||||
| 
 | ||||
| {{< tab TypeScript >}} | ||||
| npm install express typescript ts-node @types/express @types/node | ||||
| npm install typescript \ | ||||
|   ts-node \ | ||||
|   @types/node \ | ||||
|   express \ | ||||
|   @types/express \ | ||||
| {{< /tab >}} | ||||
| 
 | ||||
| {{< tab JavaScript >}} | ||||
|  | @ -111,47 +115,32 @@ Listening for requests on http://localhost:8080 | |||
| 
 | ||||
| ## Tracing | ||||
| 
 | ||||
| The following shows how to install, initialize, and run an application | ||||
| instrumented with traces. | ||||
| 
 | ||||
| ### Dependencies | ||||
| 
 | ||||
| The following dependencies are required to trace a Node.js application. | ||||
| First, install the Node SDK and autoinstrumentations package. | ||||
| 
 | ||||
| #### Core Dependencies | ||||
| The Node SDK lets you intialize OpenTelemetry with several configuration | ||||
| defaults that are correct for the majorty of use cases. | ||||
| 
 | ||||
| These dependencies are required to configure the tracing SDK and create spans. | ||||
| The `auto-instrumentations-node` package installs instrumentation packages that | ||||
| will automatically create spans corresponding to code called in libraries. In | ||||
| this case, it provides instrumentation for Express, letting the example app | ||||
| automatically create spans for each incoming request. | ||||
| 
 | ||||
| ```shell | ||||
| npm install @opentelemetry/sdk-node @opentelemetry/api | ||||
| npm install @opentelemetry/sdk-node \ | ||||
|   @opentelemetry/auto-instrumentations-node | ||||
| ``` | ||||
| 
 | ||||
| #### Exporter | ||||
| 
 | ||||
| In the following example, we will use the `ConsoleSpanExporter` which prints all | ||||
| spans to the console. | ||||
| 
 | ||||
| In order to visualize and analyze your traces, you will need to export them to a | ||||
| tracing backend. Follow [these instructions](../../exporters) for setting up a | ||||
| backend and exporter. | ||||
| 
 | ||||
| You may also want to use the `BatchSpanProcessor` to export spans in batches in | ||||
| order to more efficiently use resources. | ||||
| 
 | ||||
| #### Instrumentation Modules | ||||
| 
 | ||||
| Many common modules such as the `http` standard library module, `express`, and | ||||
| others can be automatically instrumented using autoinstrumentation modules. To | ||||
| find autoinstrumentation modules, you can look at the | ||||
| To find all autoinstrumentation modules, you can look at the | ||||
| [registry](/ecosystem/registry/?language=js&component=instrumentation). | ||||
| 
 | ||||
| You can also install all instrumentations maintained by the OpenTelemetry | ||||
| authors by using the `@opentelemetry/auto-instrumentations-node` module. | ||||
| 
 | ||||
| ```shell | ||||
| npm install @opentelemetry/auto-instrumentations-node | ||||
| ``` | ||||
| 
 | ||||
| ### Setup | ||||
| 
 | ||||
| The tracing setup and configuration should be run before your application code. | ||||
| The tracing setup and configuration must be run _before_ your application code. | ||||
| One tool commonly used for this task is the | ||||
| [`-r, --require module`](https://nodejs.org/api/cli.html#cli_r_require_module) | ||||
| flag. | ||||
|  | @ -163,20 +152,21 @@ Create a file named `tracing.ts|js`, which will contain your tracing setup code. | |||
| 
 | ||||
| {{< tab TypeScript >}} | ||||
| /*tracing.ts*/ | ||||
| // Require dependencies | ||||
| import * as opentelemetry from "@opentelemetry/sdk-node"; | ||||
| import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node"; | ||||
| import { diag, DiagConsoleLogger, DiagLogLevel } from '@opentelemetry/api'; | ||||
| import { NodeSDK } from '@opentelemetry/sdk-node'; | ||||
| import { ConsoleSpanExporter } from '@opentelemetry/sdk-trace-node'; | ||||
| import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node'; | ||||
| 
 | ||||
| // For troubleshooting, set the log level to DiagLogLevel.DEBUG | ||||
| diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO); | ||||
| 
 | ||||
| const sdk = new opentelemetry.NodeSDK({ | ||||
|   traceExporter: new opentelemetry.tracing.ConsoleSpanExporter(), | ||||
| const sdk = new NodeSDK({ | ||||
|   traceExporter: new ConsoleSpanExporter(), | ||||
|   instrumentations: [getNodeAutoInstrumentations()] | ||||
| }); | ||||
| 
 | ||||
| sdk.start() | ||||
| sdk | ||||
|   .start() | ||||
|   .then(() => { | ||||
|     console.log('Tracing initialized'); | ||||
|   }) | ||||
|   .catch((error) => console.log('Error initializing tracing', error)); | ||||
| {{< /tab >}} | ||||
| 
 | ||||
| {{< tab JavaScript >}} | ||||
|  | @ -184,17 +174,18 @@ sdk.start() | |||
| // Require dependencies | ||||
| const opentelemetry = require("@opentelemetry/sdk-node"); | ||||
| const { getNodeAutoInstrumentations } = require("@opentelemetry/auto-instrumentations-node"); | ||||
| const { diag, DiagConsoleLogger, DiagLogLevel } = require('@opentelemetry/api'); | ||||
| 
 | ||||
| // For troubleshooting, set the log level to DiagLogLevel.DEBUG | ||||
| diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO); | ||||
| 
 | ||||
| const sdk = new opentelemetry.NodeSDK({ | ||||
|   traceExporter: new opentelemetry.tracing.ConsoleSpanExporter(), | ||||
|   instrumentations: [getNodeAutoInstrumentations()] | ||||
| }); | ||||
| 
 | ||||
| sdk.start() | ||||
| sdk | ||||
|   .start() | ||||
|   .then(() => { | ||||
|     console.log('Tracing initialized'); | ||||
|   }) | ||||
|   .catch((error) => console.log('Error initializing tracing', error)); | ||||
| {{< /tab >}} | ||||
| 
 | ||||
| {{< /tabpane >}} | ||||
|  | @ -321,8 +312,8 @@ telemetry backends. | |||
| 
 | ||||
| ## Troubleshooting | ||||
| 
 | ||||
| Did something go wrong? Remember that you need to explicitly enable logging in | ||||
| order to see logs from OpenTelemetry: | ||||
| Did something go wrong? You can enable diagnostic logging to validate that | ||||
| OpenTelemetry is initialized correctly: | ||||
| 
 | ||||
| <!-- prettier-ignore-start --> | ||||
| {{< tabpane langEqualsHeader=true >}} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue