1个不稳定版本
0.1.0 | 2023年8月16日 |
---|
#642 in 调试
72KB
1.5K SLoC
这是一个个人项目。它仍在开发中。请自行承担风险使用。
导出器以OTLP格式导出跟踪、指标和日志数据。
支持矩阵
协议
协议 | 跟踪 | 指标 | 日志 |
---|---|---|---|
grpc(tonic) | ✓ | ☐ | ☐ |
grpc(grpcio)[^1] | ✓ | ☐ | ☐ |
http/protobuf | ✓ | ☐ | ☐ |
http/json | 阻塞 | ☐ | ☐ |
TLS
依赖项 | std | 提供CA | 客户端密钥 |
---|---|---|---|
tonic | 未测试 | 未测试 | 未测试 |
grpcio | 未测试 | 未测试 | 未测试 |
reqwest | 未测试 | 未测试 | 未测试 |
示例
- 对于
grpc
,我们可以简单地使用install_simple
。它使用future_executors
。
use opentelemetry_api::{trace::Tracer, global, KeyValue};
use opentelemetry_sdk::Resource;
#[tokio::main]
pub async fn main() {
let tracer = match otlp_exporter::new_pipeline()
.trace()
.with_env()
.with_tracer_config(
opentelemetry_sdk::trace::config().with_resource(Resource::new(vec![KeyValue::new(
opentelemetry_semantic_conventions::resource::SERVICE_NAME,
"otlp-exporter-example",
)])),
)
.install_simple()
{
Ok(tracer) => tracer,
Err(e) => {
println!("error: {e}");
return;
}
};
tracer.in_span("otlp-exporter trace example", |_cx| {});
global::shutdown_tracer_provider();
}
- 对于
http/protocol
和http/json
,它依赖于reqwest
,而reqwest
依赖于tokio
。因此,我们必须使用带有Tokio
的install_batch
。
use opentelemetry_api::{trace::Tracer, global, KeyValue};
use opentelemetry_sdk::{runtime::Tokio, Resource};
#[tokio::main]
pub async fn main() {
let tracer = match otlp_exporter::new_pipeline()
.trace()
.with_env()
.with_tracer_config(
opentelemetry_sdk::trace::config().with_resource(Resource::new(vec![KeyValue::new(
opentelemetry_semantic_conventions::resource::SERVICE_NAME,
"otlp-exporter-example",
)])),
)
.install_batch(Tokio)
{
Ok(tracer) => tracer,
Err(e) => {
println!("error: {e}");
return;
}
};
tracer.in_span("otlp-exporter trace example", |_cx| {});
global::shutdown_tracer_provider();
}
[^1]: 截至2023-08-16,grpc 0.12.1 无法与 gcc 13 编译,您可以使用其 git 仓库进行修补。
依赖项
~7–29MB
~485K SLoC