opentelemetry-cpp/examples/http
WenTao Ou 76c664a20b
Rename `http_client_curl` to `opentelemetry_http_client_curl` (#1301)
Signed-off-by: owent <admin@owent.net>
2022-03-31 11:51:26 -07:00
..
BUILD Mark tags to bazel targets (#1075) 2021-11-22 14:10:03 -08:00
CMakeLists.txt Rename `http_client_curl` to `opentelemetry_http_client_curl` (#1301) 2022-03-31 11:51:26 -07:00
README.md Enable line-length lint for markdown docs (#1268) 2022-03-16 07:17:12 -07:00
client.cc sem ver (#1140) 2021-12-20 12:25:30 -08:00
server.cc sem ver (#1140) 2021-12-20 12:25:30 -08:00
server.h
tracer_common.h fix: issue 368- consistent namespace scope resolution (#1008) 2021-11-15 19:53:34 -08:00

README.md

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 opentelementry-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.