{"id":60154,"date":"2022-11-24T14:40:40","date_gmt":"2022-11-24T06:40:40","guid":{"rendered":"https:\/\/version-2.com\/?p=60154"},"modified":"2023-02-22T14:31:42","modified_gmt":"2023-02-22T06:31:42","slug":"opentelemetry-a-modern-observability-standard","status":"publish","type":"post","link":"https:\/\/version-2.com\/zh\/2022\/11\/opentelemetry-a-modern-observability-standard\/","title":{"rendered":"OpenTelemetry: A modern observability standard"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"60154\" class=\"elementor elementor-60154\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-35fe5dd post-content elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"35fe5dd\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[{&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;_id&quot;:&quot;cef08c3&quot;,&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-409a2e9a\" data-id=\"409a2e9a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5a8be8f elementor-widget elementor-widget-text-editor\" data-id=\"5a8be8f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"block md:hidden\"><div><div class=\"hidden md:block TableOfContents_tocDesktop__DPBQ2\">In the first part of our blog series about observability, we covered the basic principles of observability and explained how it differs from the classical monitoring term. In this article, we\u2019ll discuss OpenTelemetry and its instrumentation approaches.\u00a0<\/div><\/div><\/div><div class=\"my-64 text-center\"><div style=\"display: inline-block; max-width: 100%; overflow: hidden; position: relative; box-sizing: border-box; margin: 0px;\"><div style=\"box-sizing: border-box; display: block; max-width: 100%;\"><img decoding=\"async\" style=\"max-width: 100%; display: block; margin: 0px; border: none; padding: 0px;\" role=\"presentation\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwMCIgaGVpZ2h0PSI2NzUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIi8+\" alt=\"\" aria-hidden=\"true\" \/><\/div><p><img decoding=\"async\" style=\"position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%; object-fit: contain; filter: none; background-size: cover; background-image: none;\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_thumbnail_2022_11_24_2.jpg\" srcset=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_thumbnail_2022_11_24_2.jpg 1x, https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_thumbnail_2022_11_24_2.jpg 2x\" alt=\"Blog thumbnail 2022 11 24 2\" \/><\/p><\/div><\/div><div class=\"style_postContent__2n3xN text-black break-words\" data-content-type-blog=\"\"><div class=\"Article_wrapper__2ddM4\"><h2 id=\"OpenTelemetry\" class=\"text-h2 leading-none text-left\"><b>OpenTelemetry<\/b><\/h2><p class=\"text-base leading-normal\">Please check out our <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/nordsecurity.com\/blog\/observability-vs-monitoring\" target=\"_blank\" rel=\"noopener noreferrer\">first article on observability<\/a> to gain a fuller context for the topic we\u2019re about to discuss. OpenTelemetry is currently the most actively developed standard in the field of observability. It is being adopted as the Cloud Native Computing Foundation incubating project. Born primarily as a merging of former OpenTracing and OpenCensus standards, OpenTelemetry continues to gain popularity, with its supporters including representatives of Google, Microsoft, and Uber.<\/p><p class=\"text-base leading-normal\">The goal of the OpenTelemetry project is to introduce a standardized open solution for any development team to enable a proper observability layer in its project. OpenTelemetry provides a standard protocol description for metrics, tracing, and logging collection. It also collects APIs under its nest instrumentation for different target languages and data infrastructure components.<\/p><p class=\"text-base leading-normal\">Below is a visualization of the overall scope of OpenTelemetry (credits to CNCF):<\/p><div class=\"my-64 text-center\"><div style=\"display: inline-block; max-width: 100%; overflow: hidden; position: relative; box-sizing: border-box; margin: 0px;\"><p><noscript><img alt=\"Blog image 2022 11 24 5\" srcset=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_image_2022_11_24_5.jpg 1x, https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_image_2022_11_24_5.jpg 2x\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_image_2022_11_24_5.jpg\" decoding=\"async\" style=\"position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%; object-fit: contain; filter: blur(20px); background-size: cover; background-image: url(\"https:\/\/res.cloudinary.com\/nordsec\/image\/upload\/q_auto:low,f_auto,c_scale,w_100\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_image_2022_11_24_5.jpg\");\"><\/noscript><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_image_2022_11_24_5.jpg\" width=\"1200\" height=\"594\" \/><\/p><\/div><\/div><p class=\"text-base leading-normal\">The development of specifications and all related implementations is being run in an open way in <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/github.com\/open-telemetry\" target=\"_blank\" rel=\"noopener noreferrer\">Github<\/a>, so anyone involved can propose changes.<\/p><p class=\"text-base leading-normal\">Different instrumentation implementations for different languages are in development. The current state of readiness can always be found on a related page of official documentation (for example, <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/opentelemetry.io\/docs\/instrumentation\/php\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHP<\/a>).<\/p><h2 id=\"Logs\" class=\"text-h2 leading-none text-left\"><b>Logs<\/b><\/h2><p><img decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_image_2022_11_24_1.jpg\" width=\"1200\" height=\"675\" \/><\/p><p class=\"text-base leading-normal\">Logs are the oldest and best-known type of telemetry signals, and they have a significant legacy. Log collection and storage is a well-understood task, with many solutions being established and widely adopted to carry it out. For example, the infamous <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/www.elastic.co\/what-is\/elk-stack\" target=\"_blank\" rel=\"noopener noreferrer\">ELK<\/a> (or EFK) stack, Splunk, and Grafana Labs recently introduced the <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/grafana.com\/oss\/loki\/\" target=\"_blank\" rel=\"noopener noreferrer\">Loki<\/a> project, a lighter alternative to ElasticSearch.<\/p><p class=\"text-base leading-normal\">The main problem is that logs are not integrated with other telemetry signals \u2013 no solutions offer an option to correlate a log record with a relative metric or trace. Having the opportunity to do this can form a very powerful introspection framework.<\/p><p class=\"text-base leading-normal\">OpenTelemetry specifications try to solve this problem with a logging format standard proposal. It allows correlating logs via execution context metadata, timing, or a log emitter source.<\/p><p class=\"text-base leading-normal\">However, right now the standard is at an experimental stage and under heavy development, so we won&#8217;t focus on it here. The current specifications can be found <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/opentelemetry.io\/docs\/reference\/specification\/logs\/overview\/\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>.<\/p><h2 id=\"Metrics\" class=\"text-h2 leading-none text-left\"><b>Metrics<\/b><\/h2><p class=\"text-base leading-normal\">As discussed previously, metrics are numeric data aggregates representing the software system&#8217;s performance. Through aggregation, we can develop a combination of measurements into exact statistics during a time window.<\/p><p class=\"text-base leading-normal\">The OpenTelemetry metrics system is flexible. It was designed to be like this to cover the existing metric systems without any loss of functionality. As a result, a move to OpenTelemetry is less painful than other alternatives.<\/p><p class=\"text-base leading-normal\">The OpenTelemetry standard defines three metrics models:<\/p><ul class=\"list-disc ml-24\"><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Event model \u2014 metric creation by a developer on the application level.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Stream model \u2014 metric transportation.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Time Series model \u2014 metric storage.<\/p><\/div><\/li><\/ul><p class=\"text-base leading-normal\">The metrics standard defines three metric transformations that can happen in between the Event and Stream models:<\/p><ul class=\"list-disc ml-24\"><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Temporal reaggregation reduces the number of high frequency metrics being transmitted by changing the resolution of the data.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Spatial reaggregation reduces the number of high frequency metrics being transmitted by removing some unwanted attributes and data.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Delta-to-cumulative reduces the size of high frequency metrics being transmitted via a move from absolute numbers (cumulative) to changes between different values (delta).<\/p><\/div><\/li><\/ul><p class=\"text-base leading-normal\">We will talk about the Stream and Time Series models in the third part of our blog series, where we will discuss signal transportation and storage. For now, let\u2019s focus on the Event model, which is related to instrumentation.<\/p><p><img decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_image_2022_11_24_2.jpg\" width=\"1200\" height=\"675\" \/><\/p><div class=\"my-64 text-center\"><div style=\"display: inline-block; max-width: 100%; overflow: hidden; position: relative; box-sizing: border-box; margin: 0px;\"><div style=\"box-sizing: border-box; display: block; max-width: 100%;\">\u00a0<\/div><\/div><p class=\"text-nano leading-normal text-left text-center text-gray-600 my-8\">\u00a0<\/p><\/div><p class=\"text-base leading-normal\">The process of creation for every metric in OpenTelemetry consists of three steps:<\/p><ul class=\"list-disc ml-24\"><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Creation of instruments that will generate <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/github.com\/open-telemetry\/opentelemetry-specification\/blob\/main\/specification\/metrics\/api.md#measurement\" target=\"_blank\" rel=\"noopener noreferrer\">measurements<\/a> \u2013 particular data points that we evaluate.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Aggregation of measurements into a <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/github.com\/open-telemetry\/opentelemetry-specification\/blob\/main\/specification\/metrics\/sdk.md#view\" target=\"_blank\" rel=\"noopener noreferrer\">View<\/a> \u2013 a representation of a metric to output from the instrumented software system.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Metric output \u2013 the transportation metrics to storage using a push or pull model.<\/p><\/div><\/li><\/ul><p class=\"text-base leading-normal\">The <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/github.com\/open-telemetry\/opentelemetry-specification\/blob\/main\/specification\/metrics\/api.md\" target=\"_blank\" rel=\"noopener noreferrer\">OpenTelemetry measurements<\/a> model defines six types:<\/p><ol><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Counter \u2013 non-negative, continually increasing monotonic measurement that receives increments. For example, it may be a good fit for counting the overall number of requests the system has processed.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">UpDownCounter \u2013 the same as the Counter, but non-monotonic, allowing negative values. It may be a good fit for reporting the amount of requests being currently processed by the system.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Histogram \u2013 multiple statistically relevant values distributed among a list of predefined buckets. For example, we may be interested not in particular response time but in the percentile of response time distribution, it falls into (a Histogram would be useful here).<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Asynchronous Counter \u2013 the same as the Counter, but values are emitted via a registered callback function, not a synchronous function call.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Asynchronous UpDownCounter \u2013 the same as the UpDownCounter, but values are emitted via a registered callback function, not a synchronous function call.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Asynchronous Gauge \u2013 a specific type for values that should be reported as is, not summed. For example, it may be a good fit for reporting the usage of multiple CPU cores \u2013 in this case, you will likely want to have the maximum (or average) CPU usage, not summed usage.<\/p><\/div><\/li><\/ol><p class=\"text-base leading-normal\">Through Aggregations in OpenTelemetry, measurements are being aggregated into end metric values that afterward will be transported to storage. OpenTelemetry defines the following measurements as <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/opentelemetry.io\/docs\/reference\/specification\/metrics\/sdk\/#aggregation\" target=\"_blank\" rel=\"noopener noreferrer\">Aggregations<\/a>:<\/p><ul class=\"list-disc ml-24\"><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Drop \u2013 full ignore of all measurements.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Sum \u2013 a sum of measurements.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Last Value \u2013 only the last measurement value.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Explicit Bucket Histogram \u2013 a collection of measurements into buckets with explicitly predefined bounds.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Exponential Histogram (optional) \u2013 the same as the Explicit Bucket Histogram but with an exponential formula defining bucket bounds.<\/p><\/div><\/li><\/ul><p class=\"text-base leading-normal\">A developer can define their own aggregations, but in most cases, the default ones predefined for each type of measurement will suit the developer\u2019s needs.<\/p><p class=\"text-base leading-normal\">After all aggregations have been done, additional filtering or customization can be carried out on the View level. To summarize, an example of a simple metric creation is the following (in GoLang):<\/p><div class=\"border-gray-300 border mb-32 \"><div class=\"bg-gray-200 p-24 border-b border-gray-300\"><div class=\"table-row text-black\"><div class=\"table-cell\"><p>import &#8220;go.opentelemetry.io\/otel\/metric\/instrument&#8221;<br \/>counter := Meter.SyncInt64().Counter(<br \/>&#8220;test.counter&#8221;,<br \/>instrument.WithUnit(&#8220;1&#8221;),<br \/>instrument.WithDescription(&#8220;Test Counter&#8221;),<br \/>)<\/p><p>\/\/ Synchronously increment the counter.<br \/>counter.Add(ctx, 1, attribute.String(&#8220;attribute_name&#8221;, &#8220;attribute_value&#8221;))<\/p><\/div><\/div><\/div><\/div><p class=\"text-base leading-normal\">Here we create a simple metric consisting of one counter-measurement. As you can see, many details we discussed are hidden but can be exposed if the developer needs them.<\/p><p class=\"text-base leading-normal\">In the next part of our blog series, we will talk about metrics transportation, storage, and visualization.<\/p><h2 id=\"Traces and spans\" class=\"text-h2 leading-none text-left\"><b>Traces and spans<\/b><\/h2><p class=\"text-base leading-normal\">As we discussed previously, traces represent an execution path inside a software system. The execution path itself is a series of operations. A unit of operation is represented in the form of a span. A span has a start time, duration, an operation name, and additional context attached to it. Spans are interconnected via context propagation and can be nested (one operation can consist of multiple smaller operations inside itself). The resulting hierarchical tree structure of spans represents the trace \u2013 an entire execution path inside a software system.<\/p><p class=\"text-base leading-normal\">The internal span structure can be visualized like this:<\/p><div class=\"my-64 text-center\"><div style=\"display: inline-block; max-width: 100%; overflow: hidden; position: relative; box-sizing: border-box; margin: 0px;\"><div style=\"box-sizing: border-box; display: block; max-width: 100%;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_image_2022_11_24_3.jpg\" width=\"1200\" height=\"675\" \/><\/div><\/div><\/div><p class=\"text-base leading-normal\">Here is an example of the simplest span creation (in GoLang):<\/p><p>import &#8220;go.opentelemetry.io\/otel\/trace&#8221;<\/p><p>var tracer = otel.Tracer(&#8220;test_app&#8221;)<\/p><p>\/\/ Create a span<br \/>ctx, span := tracer.Start(ctx, &#8220;test-operation-name&#8221;,<br \/>trace.WithSpanKind(trace.SpanKindServer))<\/p><p>testOperation()<\/p><p>\/\/ Add attributes<br \/>if span.IsRecording() {<br \/>span.SetAttributes(<br \/>attribute.Int64(&#8220;test.key1&#8221;, 1),<br \/>attribute.String(&#8220;test.key2&#8243;,&#8221;2&#8221;),<br \/>)<br \/>}<\/p><p>\/\/ End the span<br \/>span.End()<\/p><p class=\"text-base leading-normal\">Now we have our first trace.<\/p><div class=\"my-64 text-center\"><div style=\"display: inline-block; max-width: 100%; overflow: hidden; position: relative; box-sizing: border-box; margin: 0px;\"><div style=\"box-sizing: border-box; display: block; max-width: 100%;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_image_2022_11_24_4.jpg\" width=\"1200\" height=\"675\" \/><\/div><\/div><\/div><p class=\"text-base leading-normal\">A trace can be distributed through different software microservices. In this case, so as not to lose the interconnection, OpenTelemetry SDK can automatically propagate context through the network according to the protocol being used. One example is the W3C <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/w3c.github.io\/trace-context\/\" target=\"_blank\" rel=\"noopener noreferrer\">Trace Context<\/a> HTTP headers definition. However, not all language SDKs support automatic context propagation, so you may have to instrument it manually depending on the language you use.<\/p><p class=\"text-base leading-normal\">Detailed documentation about traces with format explanations can be found <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/opentelemetry.io\/docs\/reference\/specification\/overview\/#traces\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>.<\/p><h2 id=\"Signal interconnections\" class=\"text-h2 leading-none text-left\"><b>Signal interconnections<\/b><\/h2><p class=\"text-base leading-normal\">The ability to interconnect different types of signals makes an observability framework powerful. For example, it allows you to identify a service response that took too long via metrics and, in one click, jump to the correlating trace of this response execution to identify what part of the system caused the slow processing.<\/p><p class=\"text-base leading-normal\">Signals in OpenTelemetry can be interconnected in a couple of ways. One is the use of Exemplars \u2013 specific values supplied with trace, logs, and metrics. These consist of a particular record ID, time of observation, and optional filtered attributes specifically dedicated to allowing a direct connection between traces and metrics. Detailed documentation about Exemplars can be found <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/opentelemetry.io\/docs\/reference\/specification\/metrics\/datamodel\/#exemplars\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>.<\/p><p class=\"text-base leading-normal\">Another approach to signal interconnection is the association of the same metadata with the use of Baggage and Context. Baggage is a specific value supplied with traces, logs, and metrics that allows you to annotate it and consists of user-defined pairs of keys and values. By annotating corresponding metrics and traces with the same values in Baggage, the user can correlate them. Detailed documentation about Baggage can be found <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/opentelemetry.io\/docs\/reference\/specification\/baggage\/api\/\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>.<\/p><h2 id=\"Conclusion\" class=\"text-h2 leading-none text-left\"><b>Conclusion<\/b><\/h2><p class=\"text-base leading-normal\">We covered the pillars of OpenTelemetry and some details of application instrumentation. But we don\u2019t just need to instrument our applications \u2013 we should also introduce tooling for the aggregation, storage, and visualization of the signals we supply. In the third part of this series, we will discuss tooling and the OpenTelemetry collector component in detail.<\/p><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2004c86 elementor-widget elementor-widget-shortcode\" data-id=\"2004c86\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t<div data-elementor-type=\"page\" data-elementor-id=\"18103\" class=\"elementor elementor-18103\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-748947f elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"748947f\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[{&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;_id&quot;:&quot;c4f773e&quot;,&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7995c19\" data-id=\"7995c19\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a437045 elementor-widget elementor-widget-image-box\" data-id=\"a437045\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><div class=\"elementor-image-box-content\"><h3 class=\"elementor-image-box-title\">About Version 2 Digital<\/h3><p class=\"elementor-image-box-description\">Version 2 Digital is one of the most dynamic IT companies in Asia. The company distributes a wide range of IT products across various areas including cyber security, cloud, data protection, end points, infrastructures, system monitoring, storage, networking, business productivity and communication products.\n<br><br>\nThrough an extensive network of channels, point of sales, resellers, and partnership companies, Version 2 offers quality products and services which are highly acclaimed in the market. Its customers cover a wide spectrum which include Global 1000 enterprises, regional listed companies, different vertical industries, public utilities, Government, a vast number of successful SMEs, and consumers in various Asian cities.<\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\n\t\t<div data-elementor-type=\"page\" data-elementor-id=\"54571\" class=\"elementor elementor-54571\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6b25dc0d elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"6b25dc0d\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[{&quot;_id&quot;:&quot;c4f773e&quot;,&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3cc1b37d\" data-id=\"3cc1b37d\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-52c4a230 elementor-widget elementor-widget-text-editor\" data-id=\"52c4a230\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>About Nord Security<\/strong><br \/>The web has become a chaotic space where safety and trust have been compromised by cybercrime and data protection issues. Therefore, our team has a global mission to shape a more trusted and peaceful online future for people everywhere.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>In the first part of our blog series about observabilit [&hellip;]<\/p>\n","protected":false},"author":143524195,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[488,973,61],"tags":[489,974],"class_list":["post-60154","post","type-post","status-publish","format-standard","hentry","category-488","category-nord-security","category-press-release","tag-489","tag-nord-security"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>OpenTelemetry: A modern observability standard - Version 2<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nordsecurity.com\/blog\/opentelemetry-a-modern-observability-standard\" \/>\n<meta property=\"og:locale\" content=\"zh_HK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OpenTelemetry: A modern observability standard - Version 2\" \/>\n<meta property=\"og:description\" content=\"In the first part of our blog series about observabilit [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nordsecurity.com\/blog\/opentelemetry-a-modern-observability-standard\" \/>\n<meta property=\"og:site_name\" content=\"Version 2\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-24T06:40:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-22T06:31:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_thumbnail_2022_11_24_2.jpg\" \/>\n<meta name=\"author\" content=\"version2hk\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"version2hk\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9810\u8a08\u95b1\u8b80\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 \u5206\u9418\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/opentelemetry-a-modern-observability-standard#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/2022\\\/11\\\/opentelemetry-a-modern-observability-standard\\\/\"},\"author\":{\"name\":\"version2hk\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/person\\\/d14d2d3cd77ffdb618b9f1330fe084db\"},\"headline\":\"OpenTelemetry: A modern observability standard\",\"datePublished\":\"2022-11-24T06:40:40+00:00\",\"dateModified\":\"2023-02-22T06:31:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/2022\\\/11\\\/opentelemetry-a-modern-observability-standard\\\/\"},\"wordCount\":1548,\"publisher\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/opentelemetry-a-modern-observability-standard#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/nordsec\\\/f_auto,c_limit,w_3840,q_auto\\\/v1\\\/nord-security-web\\\/blog\\\/categories\\\/engineering\\\/2022\\\/11\\\/Blog_thumbnail_2022_11_24_2.jpg\",\"keywords\":[\"2022\",\"Nord Security\"],\"articleSection\":[\"2022\",\"Nord Security\",\"Press Release\"],\"inLanguage\":\"zh-HK\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/version-2.com\\\/2022\\\/11\\\/opentelemetry-a-modern-observability-standard\\\/\",\"url\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/opentelemetry-a-modern-observability-standard\",\"name\":\"OpenTelemetry: A modern observability standard - Version 2\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/opentelemetry-a-modern-observability-standard#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/opentelemetry-a-modern-observability-standard#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/nordsec\\\/f_auto,c_limit,w_3840,q_auto\\\/v1\\\/nord-security-web\\\/blog\\\/categories\\\/engineering\\\/2022\\\/11\\\/Blog_thumbnail_2022_11_24_2.jpg\",\"datePublished\":\"2022-11-24T06:40:40+00:00\",\"dateModified\":\"2023-02-22T06:31:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/opentelemetry-a-modern-observability-standard#breadcrumb\"},\"inLanguage\":\"zh-HK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/opentelemetry-a-modern-observability-standard\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-HK\",\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/opentelemetry-a-modern-observability-standard#primaryimage\",\"url\":\"https:\\\/\\\/res.cloudinary.com\\\/nordsec\\\/f_auto,c_limit,w_3840,q_auto\\\/v1\\\/nord-security-web\\\/blog\\\/categories\\\/engineering\\\/2022\\\/11\\\/Blog_thumbnail_2022_11_24_2.jpg\",\"contentUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/nordsec\\\/f_auto,c_limit,w_3840,q_auto\\\/v1\\\/nord-security-web\\\/blog\\\/categories\\\/engineering\\\/2022\\\/11\\\/Blog_thumbnail_2022_11_24_2.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/opentelemetry-a-modern-observability-standard#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9801\",\"item\":\"https:\\\/\\\/version-2.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OpenTelemetry: A modern observability standard\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#website\",\"url\":\"https:\\\/\\\/version-2.com\\\/zh\\\/\",\"name\":\"Version 2\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/version-2.com\\\/zh\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-HK\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#organization\",\"name\":\"Version 2\",\"url\":\"https:\\\/\\\/version-2.com\\\/zh\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-HK\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/version-2.com\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/version-2.com\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1\",\"width\":1795,\"height\":335,\"caption\":\"Version 2\"},\"image\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/person\\\/d14d2d3cd77ffdb618b9f1330fe084db\",\"name\":\"version2hk\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-HK\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d280627252b42d7489de74dd88aa04043a495f25e258575000dc767e287bf94c?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d280627252b42d7489de74dd88aa04043a495f25e258575000dc767e287bf94c?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d280627252b42d7489de74dd88aa04043a495f25e258575000dc767e287bf94c?s=96&d=identicon&r=g\",\"caption\":\"version2hk\"},\"sameAs\":[\"http:\\\/\\\/version2xfortcom.wordpress.com\"],\"url\":\"https:\\\/\\\/version-2.com\\\/zh\\\/author\\\/version2hk\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"OpenTelemetry: A modern observability standard - Version 2","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nordsecurity.com\/blog\/opentelemetry-a-modern-observability-standard","og_locale":"zh_HK","og_type":"article","og_title":"OpenTelemetry: A modern observability standard - Version 2","og_description":"In the first part of our blog series about observabilit [&hellip;]","og_url":"https:\/\/nordsecurity.com\/blog\/opentelemetry-a-modern-observability-standard","og_site_name":"Version 2","article_published_time":"2022-11-24T06:40:40+00:00","article_modified_time":"2023-02-22T06:31:42+00:00","og_image":[{"url":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_thumbnail_2022_11_24_2.jpg","type":"","width":"","height":""}],"author":"version2hk","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"version2hk","\u9810\u8a08\u95b1\u8b80\u6642\u9593":"10 \u5206\u9418"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nordsecurity.com\/blog\/opentelemetry-a-modern-observability-standard#article","isPartOf":{"@id":"https:\/\/version-2.com\/2022\/11\/opentelemetry-a-modern-observability-standard\/"},"author":{"name":"version2hk","@id":"https:\/\/version-2.com\/zh\/#\/schema\/person\/d14d2d3cd77ffdb618b9f1330fe084db"},"headline":"OpenTelemetry: A modern observability standard","datePublished":"2022-11-24T06:40:40+00:00","dateModified":"2023-02-22T06:31:42+00:00","mainEntityOfPage":{"@id":"https:\/\/version-2.com\/2022\/11\/opentelemetry-a-modern-observability-standard\/"},"wordCount":1548,"publisher":{"@id":"https:\/\/version-2.com\/zh\/#organization"},"image":{"@id":"https:\/\/nordsecurity.com\/blog\/opentelemetry-a-modern-observability-standard#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_thumbnail_2022_11_24_2.jpg","keywords":["2022","Nord Security"],"articleSection":["2022","Nord Security","Press Release"],"inLanguage":"zh-HK"},{"@type":"WebPage","@id":"https:\/\/version-2.com\/2022\/11\/opentelemetry-a-modern-observability-standard\/","url":"https:\/\/nordsecurity.com\/blog\/opentelemetry-a-modern-observability-standard","name":"OpenTelemetry: A modern observability standard - Version 2","isPartOf":{"@id":"https:\/\/version-2.com\/zh\/#website"},"primaryImageOfPage":{"@id":"https:\/\/nordsecurity.com\/blog\/opentelemetry-a-modern-observability-standard#primaryimage"},"image":{"@id":"https:\/\/nordsecurity.com\/blog\/opentelemetry-a-modern-observability-standard#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_thumbnail_2022_11_24_2.jpg","datePublished":"2022-11-24T06:40:40+00:00","dateModified":"2023-02-22T06:31:42+00:00","breadcrumb":{"@id":"https:\/\/nordsecurity.com\/blog\/opentelemetry-a-modern-observability-standard#breadcrumb"},"inLanguage":"zh-HK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nordsecurity.com\/blog\/opentelemetry-a-modern-observability-standard"]}]},{"@type":"ImageObject","inLanguage":"zh-HK","@id":"https:\/\/nordsecurity.com\/blog\/opentelemetry-a-modern-observability-standard#primaryimage","url":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_thumbnail_2022_11_24_2.jpg","contentUrl":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2022\/11\/Blog_thumbnail_2022_11_24_2.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/nordsecurity.com\/blog\/opentelemetry-a-modern-observability-standard#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9801","item":"https:\/\/version-2.com\/"},{"@type":"ListItem","position":2,"name":"OpenTelemetry: A modern observability standard"}]},{"@type":"WebSite","@id":"https:\/\/version-2.com\/zh\/#website","url":"https:\/\/version-2.com\/zh\/","name":"Version 2","description":"","publisher":{"@id":"https:\/\/version-2.com\/zh\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/version-2.com\/zh\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-HK"},{"@type":"Organization","@id":"https:\/\/version-2.com\/zh\/#organization","name":"Version 2","url":"https:\/\/version-2.com\/zh\/","logo":{"@type":"ImageObject","inLanguage":"zh-HK","@id":"https:\/\/version-2.com\/zh\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/version-2.com\/wp-content\/uploads\/2020\/08\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1","contentUrl":"https:\/\/i0.wp.com\/version-2.com\/wp-content\/uploads\/2020\/08\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1","width":1795,"height":335,"caption":"Version 2"},"image":{"@id":"https:\/\/version-2.com\/zh\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/version-2.com\/zh\/#\/schema\/person\/d14d2d3cd77ffdb618b9f1330fe084db","name":"version2hk","image":{"@type":"ImageObject","inLanguage":"zh-HK","@id":"https:\/\/secure.gravatar.com\/avatar\/d280627252b42d7489de74dd88aa04043a495f25e258575000dc767e287bf94c?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d280627252b42d7489de74dd88aa04043a495f25e258575000dc767e287bf94c?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d280627252b42d7489de74dd88aa04043a495f25e258575000dc767e287bf94c?s=96&d=identicon&r=g","caption":"version2hk"},"sameAs":["http:\/\/version2xfortcom.wordpress.com"],"url":"https:\/\/version-2.com\/zh\/author\/version2hk\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pbQRKm-fEe","post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/version-2.com\/zh\/wp-json\/wp\/v2\/posts\/60154","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/version-2.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/version-2.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/version-2.com\/zh\/wp-json\/wp\/v2\/users\/143524195"}],"replies":[{"embeddable":true,"href":"https:\/\/version-2.com\/zh\/wp-json\/wp\/v2\/comments?post=60154"}],"version-history":[{"count":7,"href":"https:\/\/version-2.com\/zh\/wp-json\/wp\/v2\/posts\/60154\/revisions"}],"predecessor-version":[{"id":60161,"href":"https:\/\/version-2.com\/zh\/wp-json\/wp\/v2\/posts\/60154\/revisions\/60161"}],"wp:attachment":[{"href":"https:\/\/version-2.com\/zh\/wp-json\/wp\/v2\/media?parent=60154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/version-2.com\/zh\/wp-json\/wp\/v2\/categories?post=60154"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/version-2.com\/zh\/wp-json\/wp\/v2\/tags?post=60154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}