Skip to content

Latest commit

 

History

History
112 lines (93 loc) · 3.02 KB

README.md

File metadata and controls

112 lines (93 loc) · 3.02 KB

OpenTelemetry C++ Example

HTTP

This is a simple example that demonstrates tracing an HTTP request from client to server. The example shows several aspects of tracing such as:

  • Using the TracerProvider
  • Using the GlobalPropagator
  • Span Attributes
  • Span Events
  • Using the ostream exporter
  • Nested spans (TBD)
  • W3C Trace Context Propagation

Running the example

  1. The example uses HTTP server and client provided as part of this repo:

  2. Build and Deploy the opentelemetry-cpp as described in INSTALL.md

  3. Start the server from the examples/http directory

    $ http_server 8800
     Server is running..Press ctrl-c to exit...
  4. In a separate terminal window, run the client to make a single request:

    $ ./http_client 8800
    ...
    ...
  5. You should see console exporter output for both the client and server sessions.

    • Client console
    {
      name          : /helloworld
      trace_id      : baa922bc0da6f79d46373371f4416463
      span_id       : 83bed4da7a01267d
      tracestate    :
      parent_span_id: 0000000000000000
      start         : 1620287026111457000
      duration      : 5164400
      description   :
      span kind     : Client
      status        : Unset
      attributes    :
            http.header.Date: Thu, 06 May 2021 07:43:46 GMT
            http.header.Content-Length: 0
            http.status_code: 200
            http.method: GET
            http.header.Host: localhost
            http.header.Content-Type: text/plain
            http.header.Connection: keep-alive
            http.scheme: http
            http.url: h**p://localhost:8800/helloworld
      events        :
      links         :
    
    }
    • Server console
    {
      name          : /helloworld
      trace_id      : baa922bc0da6f79d46373371f4416463
      span_id       : c3e7e23042eb670e
      tracestate    :
      parent_span_id: 83bed4da7a01267d
      start         : 1620287026115443300
      duration      : 50700
      description   :
      span kind     : Server
      status        : Unset
      attributes    :
            http.header.Traceparent: 00-baa922bc0da6f79d46373371f4416463-83bed4da7a01267d-01
            http.header.Accept: */*
            http.request_content_length: 0
            http.header.Host: localhost:8800
            http.scheme: http
            http.client_ip: 127.0.0.1:50792
            http.method: GET
            net.host.port: 8800
            http.server_name: localhost
      events        :
            {
              name          : Processing request
              timestamp     : 1620287026115464000
              attributes    :
            }
      links         :
    
    }

    As seen from example above, trace_id and parent_span_id is propagated from client to server.