Експортери
Надсилайте телеметрію до OpenTelemetry Collector, щоб переконатися, що вона експортується правильно. Використання Collector у виробничих середовищах є найкращою практикою. Щоб візуалізувати вашу телеметрію, експортуйте її до бекенду, такого як Jaeger, Zipkin, Prometheus або бекенд, специфічний для постачальника.
Доступні експортери
Реєстр містить список експортерів для Rust.
Серед експортерів, експортери OpenTelemetry Protocol (OTLP) розроблені з урахуванням моделі даних OpenTelemetry, що передають дані OTel без втрати інформації. Крім того, багато інструментів, які працюють з телеметричними даними, підтримують OTLP (таких як Prometheus, Jaeger і більшість постачальників), надаючи вам високий ступінь гнучкості, коли це потрібно. Щоб дізнатися більше про OTLP, дивіться Специфікацію OTLP.
Ця сторінка охоплює основні експортери OpenTelemetry Rust та як їх налаштувати.
Точка доступу OTLP
Щоб надіслати дані трасування до точки доступу OTLP (наприклад, до collector або Jaeger), вам потрібно використовувати crate exporter, такий як opentelemetry-otlp:
Наприклад, ви можете оновити сервер кубиків з Початку роботи, додавши нову залежність:
[dependencies]
opentelemetry-otlp = { version = "0.28.0", features = ["grpc-tonic"] }
Далі, оновіть init_tracer_provider у dice_server.rs, щоб налаштувати експортер на вказівку на точку доступу до OTLP:
use std::convert::Infallible;
use std::net::SocketAddr;
use std::sync::OnceLock;
use http_body_util::Full;
use hyper::{Method, Request, Response, body::Bytes, server::conn::http1, service::service_fn};
use hyper_util::rt::TokioIo;
use opentelemetry::global::{self, BoxedTracer};
use opentelemetry::trace::{Span, SpanKind, Status, Tracer};
use opentelemetry_otlp::SpanExporter;
use opentelemetry_sdk::{Resource, propagation::TraceContextPropagator, trace::SdkTracerProvider};
use rand::Rng;
use tokio::net::TcpListener;
// ...
fn init_tracer_provider() -> SdkTracerProvider {
let exporter = SpanExporter::builder()
.with_tonic()
.build()
.expect("Failed to create span exporter");
let provider = SdkTracerProvider::builder()
.with_resource(Resource::builder().with_service_name("dice_server").build())
.with_batch_exporter(exporter)
.build();
global::set_text_map_propagator(TraceContextPropagator::new());
global::set_tracer_provider(provider.clone());
provider
}
Щоб швидко спробувати експортер OTLP, ви можете запустити Jaeger у контейнері Docker. Jaeger нативно підтримує OTLP, тому вам потрібно лише відкрити веб-інтерфейс (16686) та точку доступу OTLP gRPC (4317):
docker run -d --rm --name jaeger \
-p 16686:16686 \
-p 4317:4317 \
jaegertracing/all-in-one:latest
Зазвичай експортер OTLP надсилає дані на http://localhost:4317, що відповідає точці доступу OTLP gRPC, відкритій Jaeger вище, тому додаткова конфігурація точки доступу не потрібна.
Робіть запити на http://localhost:8080/rolldice, потім перегляньте трейси в Jaeger:
- Відкрийте http://localhost:16686 та оновіть сторінку.
- Виберіть
dice_serverзі списку Service. - Натисніть Find Traces.
Натисніть на трейс, щоб відкрити детальний перегляд, який показує ієрархію відрізків та час у вигляді діаграми Ганта.
Коли закінчите, зупиніть контейнер Jaeger:
docker stop jaeger
Зворотний зв’язок
Чи була ця сторінка корисною?
Дякуємо. Ми цінуємо ваші відгуки!
Будь ласка, дайте нам знати як ми можемо покращити цю сторінку. Ми цінуємо ваші відгуки!