1 unstable release
| 0.1.0 | Aug 16, 2023 |
|---|
#1323 in Debugging
72KB
1.5K
SLoC
THIS IS A PERSONAL PROJECT. IT IS STILL IN DEVELOPMENT. USE ON YOUR OWN RISK.
An exporter exports trace, metric and log data in the OTLP format.
Support Matrix
Protocol
| protocol | trace | metric | log |
|---|---|---|---|
| grpc(tonic) | ✓ | ☐ | ☐ |
| grpc(grpcio)[^1] | ✓ | ☐ | ☐ |
| http/protobuf | ✓ | ☐ | ☐ |
| http/json | blocking | ☐ | ☐ |
TLS
| dep | std | provided ca | client key |
|---|---|---|---|
| tonic | not test | not test | not test |
| grpcio | not test | not test | not test |
| reqwest | not test | not test | not test |
Examples
- For
grpc, we can useinstall_simplesimply. It usesfuture_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();
}
- For
http/protocolandhttp/json, it depends onreqwestwhich depends ontokio. So, we must useinstall_batchwithTokio.
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]: As of 2023-08-16, grpc 0.12.1 can't be compiled with gcc 13, you can patch it with its git repo.
Dependencies
~8–34MB
~526K SLoC