|
1 | 1 | ---
|
2 | 2 | title: OpenTelemetry with Azure Monitor overview
|
3 |
| -description: Provides an overview of how to use OpenTelemetry with Azure Monitor. |
| 3 | +description: This article provides an overview of how to use OpenTelemetry with Azure Monitor. |
4 | 4 | ms.topic: conceptual
|
5 | 5 | ms.date: 10/11/2021
|
6 | 6 | ms.reviewer: mmcc
|
7 | 7 | ---
|
8 | 8 |
|
9 | 9 | # OpenTelemetry overview
|
10 | 10 |
|
11 |
| -Microsoft is excited to embrace [OpenTelemetry](https://opentelemetry.io/) as the future of telemetry instrumentation. You, our customers, have asked for vendor-neutral instrumentation, and we're delighted to partner with the OpenTelemetry community to create consistent APIs/SDKs across languages. |
| 11 | +Microsoft is excited to embrace [OpenTelemetry](https://opentelemetry.io/) as the future of telemetry instrumentation. You, our customers, have asked for vendor-neutral instrumentation, and we're pleased to partner with the OpenTelemetry community to create consistent APIs and SDKs across languages. |
12 | 12 |
|
13 |
| -Microsoft worked together with project stakeholders from two previously popular open-source telemetry projects, [OpenCensus](https://opencensus.io/) and [OpenTracing](https://opentracing.io/), to help create a single project--OpenTelemetry. OpenTelemetry includes contributions from all major cloud and Application Performance Management (APM) vendors and lives within the [Cloud Native Computing Foundation (CNCF)](https://www.cncf.io/) of which Microsoft is a Platinum Member. |
| 13 | +Microsoft worked with project stakeholders from two previously popular open-source telemetry projects, [OpenCensus](https://opencensus.io/) and [OpenTracing](https://opentracing.io/). Together, we helped to create a single project, OpenTelemetry. OpenTelemetry includes contributions from all major cloud and Application Performance Management (APM) vendors and lives within the [Cloud Native Computing Foundation (CNCF)](https://www.cncf.io/). Microsoft is a Platinum Member of the CNCF. |
14 | 14 |
|
15 | 15 | ## Concepts
|
16 | 16 |
|
17 | 17 | Telemetry, the data collected to observe your application, can be broken into three types or "pillars":
|
18 |
| -1. Distributed Tracing |
19 |
| -2. Metrics |
20 |
| -3. Logs |
21 | 18 |
|
22 |
| -Initially the OpenTelemetry community took on Distributed Tracing. Metrics and Logs are still in progress. A complete observability story includes all three pillars, but currently our [Azure Monitor OpenTelemetry-based exporter **preview** offerings for .NET, Python, and JavaScript](opentelemetry-enable.md) **only include Distributed Tracing**. |
| 19 | +- Distributed Tracing |
| 20 | +- Metrics |
| 21 | +- Logs |
23 | 22 |
|
24 |
| -There are several sources that explain the three pillars in detail including the [OpenTelemetry community website](https://opentelemetry.io/docs/concepts/data-collection/), [OpenTelemetry Specifications](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/overview.md), and [Distributed Systems Observability](https://www.oreilly.com/library/view/distributed-systems-observability/9781492033431/ch04.html) by Cindy Sridharan. |
| 23 | +Initially, the OpenTelemetry community took on Distributed Tracing. Metrics and Logs are still in progress. A complete observability story includes all three pillars, but currently our [Azure Monitor OpenTelemetry-based exporter preview offerings for .NET, Python, and JavaScript](opentelemetry-enable.md) only include Distributed Tracing. |
| 24 | + |
| 25 | +The following sources explain the three pillars: |
| 26 | + |
| 27 | +- [OpenTelemetry community website](https://opentelemetry.io/docs/concepts/data-collection/) |
| 28 | +- [OpenTelemetry specifications](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/overview.md) |
| 29 | +- [Distributed Systems Observability](https://www.oreilly.com/library/view/distributed-systems-observability/9781492033431/ch04.html) by Cindy Sridharan |
25 | 30 |
|
26 | 31 | In the following sections, we'll cover some telemetry collection basics.
|
27 | 32 |
|
28 |
| -### Instrumenting your application |
| 33 | +### Instrument your application |
29 | 34 |
|
30 |
| -At a basic level, "instrumenting” is simply enabling an application to capture telemetry. |
| 35 | +At a basic level, "instrumenting" is simply enabling an application to capture telemetry. |
31 | 36 |
|
32 | 37 | There are two methods to instrument your application:
|
33 |
| -1. Manual Instrumentation |
34 |
| -2. Automatic Instrumentation (Auto-Instrumentation) |
35 | 38 |
|
36 |
| -Manual instrumentation is coding against the OpenTelemetry API. In the context of an end user, it typically refers to installing a language-specific SDK in an application. Manual instrumentation packages consist of our [Azure Monitor OpenTelemetry-based exporter **preview** offerings for .NET, Python, and JavaScript](opentelemetry-enable.md). |
| 39 | +- Manual instrumentation |
| 40 | +- Automatic instrumentation (auto-instrumentation) |
| 41 | + |
| 42 | +Manual instrumentation is coding against the OpenTelemetry API. In the context of a user, it typically refers to installing a language-specific SDK in an application. Manual instrumentation packages consist of [Azure Monitor OpenTelemetry-based exporter preview offerings for .NET, Python, and JavaScript](opentelemetry-enable.md). |
37 | 43 |
|
38 | 44 | > [!IMPORTANT]
|
39 |
| -> “Manual” does **NOT** mean you’ll be required to write complex code to define spans for distributed traces (though it remains an option). A rich and growing set of instrumentation libraries maintained by OpenTelemetry contributors will enable you to effortlessly capture telemetry signals across common frameworks and libraries. A subset of OpenTelemetry Instrumentation Libraries will be supported by Azure Monitor, informed by customer feedback. Additionally, we are working to [instrument the most popular Azure Service SDKs using OpenTelemetry](https://devblogs.microsoft.com/azure-sdk/introducing-experimental-opentelemetry-support-in-the-azure-sdk-for-net/). |
| 45 | +> "Manual" doesn't mean you'll be required to write complex code to define spans for distributed traces, although it remains an option. A rich and growing set of instrumentation libraries maintained by OpenTelemetry contributors will enable you to effortlessly capture telemetry signals across common frameworks and libraries. |
| 46 | +> |
| 47 | +> A subset of OpenTelemetry instrumentation libraries will be supported by Azure Monitor, informed by customer feedback. We're also working to [instrument the most popular Azure Service SDKs using OpenTelemetry](https://devblogs.microsoft.com/azure-sdk/introducing-experimental-opentelemetry-support-in-the-azure-sdk-for-net/). |
| 48 | +
|
| 49 | +Auto-instrumentation enables telemetry collection through configuration without touching the application's code. Although it's more convenient, it tends to be less configurable. It's also not available in all languages. The Azure Monitor OpenTelemetry-based auto-instrumentation offering consists of the [Java 3.X OpenTelemetry-based GA offering](java-in-process-agent.md). We continue to invest in it informed by customer feedback. The OpenTelemetry community is also experimenting with C# and Python auto-instrumentation, but Azure Monitor is focused on creating a simple and effective manual instrumentation story in the near term. |
40 | 50 |
|
41 |
| -On the other hand, auto-instrumentation is enabling telemetry collection through configuration without touching the application's code. While more convenient, it tends to be less configurable and it’s not available in all languages. Azure Monitor’s OpenTelemetry-based auto-instrumentation offering consists of the [Java 3.X OpenTelemetry-based GA offering](java-in-process-agent.md), and we continue to invest in it informed by customer feedback. The OpenTelemetry community is also experimenting with C# and Python auto-instrumentation, but Azure Monitor is focused on creating a simple and effective manual instrumentation story in the near-term. |
| 51 | +### Send your telemetry |
42 | 52 |
|
43 |
| -### Sending your telemetry |
| 53 | +There are two ways to send your data to Azure Monitor (or any vendor): |
44 | 54 |
|
45 |
| -There are also two ways to send your data to Azure Monitor (or any vendor). |
46 |
| -1. Direct Exporter |
47 |
| -2. Via an Agent |
| 55 | +- Via a direct exporter |
| 56 | +- Via an agent |
48 | 57 |
|
49 |
| -A direct exporter sends telemetry in-process (from the application’s code) directly to Azure Monitor’s ingestion endpoint. The main advantage of this approach is onboarding simplicity. |
| 58 | +A direct exporter sends telemetry in-process (from the application's code) directly to the Azure Monitor ingestion endpoint. The main advantage of this approach is onboarding simplicity. |
50 | 59 |
|
51 |
| -**All Azure Monitor’s currently supported OpenTelemetry-based offerings use a direct exporter**. |
| 60 | +*All currently supported OpenTelemetry-based offerings in Azure Monitor use a direct exporter*. |
52 | 61 |
|
53 |
| -Alternatively, sending telemetry via an agent will provide a path for any OpenTelemetry supported language to send to Azure Monitor via [OTLP](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/README.md). Receiving OTLP will enable customers to observe applications written in languages beyond our [supported languages](platforms.md). |
| 62 | +Alternatively, sending telemetry via an agent will provide a path for any OpenTelemetry-supported language to send to Azure Monitor via [online transactional processing (OTLP)](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/README.md). Receiving OTLP will enable customers to observe applications written in languages beyond our [supported languages](platforms.md). |
54 | 63 |
|
55 | 64 | > [!NOTE]
|
56 |
| -> Some customers have begun to use the [OpenTelemetry-Collector](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/design.md) as an agent alternative even though Microsoft doesn’t officially support “Via an Agent” approach for application monitoring yet. In the meantime, the open source community has contributed an OpenTelemetry-Collector Azure Monitor Exporter that some customers are using to send data to Azure Monitor Application Insights. |
| 65 | +> Some customers have begun to use the [OpenTelemetry-Collector](https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/design.md) as an agent alternative even though Microsoft doesn't officially support the "via an agent" approach for application monitoring yet. In the meantime, the open-source community has contributed an OpenTelemetry-Collector Azure Monitor exporter that some customers are using to send data to Azure Monitor Application Insights. |
57 | 66 |
|
58 | 67 | ## Terms
|
59 | 68 |
|
60 |
| -See [glossary](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/glossary.md) in the OpenTelemetry specifications. |
| 69 | +For terminology, see the [glossary](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/glossary.md) in the OpenTelemetry specifications. |
61 | 70 |
|
62 |
| -Some legacy terms in Application Insights are confusing given the industry convergence on OpenTelemetry. The table below highlights these differences. Eventually Application Insights terms will be replaced by OpenTelemetry terms. |
| 71 | +Some legacy terms in Application Insights are confusing because of the industry convergence on OpenTelemetry. The following table highlights these differences. Eventually, Application Insights terms will be replaced by OpenTelemetry terms. |
63 | 72 |
|
64 | 73 | Application Insights | OpenTelemetry
|
65 | 74 | ------ | ------
|
66 |
| -Auto-Collectors | Instrumentation Libraries |
67 |
| -Channel | Exporter |
68 |
| -Codeless / Agent-based | Auto-Instrumentation |
| 75 | +Auto-collectors | Instrumentation libraries |
| 76 | +Channel | Exporter |
| 77 | +Codeless / Agent-based | Auto-instrumentation |
69 | 78 | Traces | Logs
|
70 | 79 |
|
| 80 | +## Next steps |
71 | 81 |
|
72 |
| -## Next step |
| 82 | +The following websites consist of language-by-language guidance to enable and configure Microsoft's OpenTelemetry-based offerings. The available functionality and limitations of each offering are explained so that you can determine whether OpenTelemetry is right for your project. |
73 | 83 |
|
74 |
| -The following pages consist of language-by-language guidance to enable and configure Microsoft’s OpenTelemetry-based offerings. Importantly, we share the available functionality and limitations of each offering so you can determine whether OpenTelemetry is right for your project. |
75 |
| -- [.NET](opentelemetry-enable.md) |
| 84 | +- [.NET](opentelemetry-enable.md) |
76 | 85 | - [Java](java-in-process-agent.md)
|
77 | 86 | - [JavaScript](opentelemetry-enable.md)
|
78 | 87 | - [Python](opentelemetry-enable.md)
|
0 commit comments