入门指南
欢迎使用OpenTelemetry C++入门指南!本指南将为您提供安装、仪表化、配置和导出OpenTelemetry数据的基本步骤。
您可以使用CMake或Bazel构建OpenTelemetry C++。下面的入门指南将使用CMake,并提供最基本的步骤,以便您拥有一个可工作的示例应用程序(一个HTTP服务器和HTTP客户端)。要了解更多详细信息,请阅读这些说明。
先决条件
您可以在Windows、macOS或Linux上构建OpenTelemetry C++。首先,您需要安装一些依赖项:
sudo apt-get install git cmake g++ libcurl4-openssl-dev
sudo yum install git cmake g++ libcurl-devel
sudo apk add git cmake g++ make curl-dev
xcode-select —install
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install git cmake
构建
获取opentelemetry-cpp
源代码:
git clone --recursive https://github.com/open-telemetry/opentelemetry-cpp
导航到上面克隆的存储库,并创建CMake构建配置:
cd opentelemetry-cpp
mkdir build && cd build
cmake -DBUILD_TESTING=OFF -DWITH_EXAMPLES_HTTP=ON ..
创建构建配置后,构建CMake目标http_client
和http_server
:
cmake --build . --target http_client http_server
如果一切顺利,您应该在./examples/http
目录下找到http_server
和http_client
二进制文件:
$ ls ./examples/http
CMakeFiles Makefile cmake_install.cmake http_client http_server
运行应用程序
开启两个终端,首先在第一个终端中启动HTTP服务器:
$ ./examples/http/http_server
Server is running..Press ctrl-c to exit..
然后在另一个终端中运行HTTP客户端:
./examples/http/http_client
您应该看到类似于以下内容的客户端输出:
{
name : /helloworld
trace_id : 05eec7a55d3544434265dad89d7fe96f
span_id : 45fb62c58c907f05
tracestate :
parent_span_id: 0000000000000000
start : 1665577080650384378
duration : 1640298
description :
span kind : Client
status : Unset
attributes :
http.header.Date: Wed, 12 Oct 2022 12:18:00 GMT
http.header.Content-Length: 0
http.status_code: 200
http.method: GET
.header.Host: localhost
http.header.Content-Type: text/plain
http.header.Connection: keep-alive
.scheme: http
http.url: http://localhost:8800/helloworld
events :
links :
resources :
service.name: unknown_service
telemetry.sdk.version: 1.6.1
telemetry.sdk.name: opentelemetry
telemetry.sdk.language: cpp
instr-lib : http-client
}
同时,服务器应该在控制台上输出追踪信息:
{
name : /helloworld
trace_id : 05eec7a55d3544434265dad89d7fe96f
span_id : 8df967d8547813fe
tracestate :
parent_span_id: 45fb62c58c907f05
start : 1665577080651459495
duration : 46331
description :
span kind : Server
status : Unset
attributes :
http.header.Traceparent: 00-05eec7a55d3544434265dad89d7fe96f-45fb62c58c907f05-01
http.header.Accept: */*
http.request_content_length: 0
http.header.Host: localhost:8800
http.scheme: http
http.client_ip: 127.0.0.1:49466
http.method: GET
net.host.port: 8800
net.host.name: localhost
events :
{
name : Processing request
timestamp : 1665577080651472827
attributes :
}
links :
resources :
service.name: unknown_service
telemetry.sdk.version: 1.6.1
telemetry.sdk.name: opentelemetry
telemetry.sdk.language: cpp
instr-lib : http-server
}
接下来要做什么
使用手动方式为自动生成的仪表化添加自定义代码库的详细信息。这将为您提供自定义的可观察性数据。
您还需要配置合适的导出器,将遥测数据导出到一个或多个遥测后端。
如果您想探索更复杂的示例,请查看OpenTelemetry演示,其中包括基于C++的Currency Service。
最后修改 December 10, 2023: translate (a4350d6e)