lilydocs
HTTP APIWebSocketConsumer
Çalıştırma2 dk okuma

Tracing, metrics ve health

Telemetry’yi açıkça etkinleştirin ve readiness yanıtını HTTP sağlık görünümünden üretin.

Tracing varsayılan olarak kapalıdır. Telemetry’yi uygulamanızın exporter ve sahiplik tercihiyle açın. Health snapshot ise uygulamanın HTTP yaşam döngüsüne ait salt okunur bir görünüm sunar.

Tracing’i etkinleştirme#

Rust
let mut config = lilyrs::http_api::TraceConfig::default();
config.enabled = true;
config.service_name = "users-api".into();
config.export.console = true;
let builder = lilyrs::http_api::AppBuilder::new("127.0.0.1:8080")
    .tracing_config(config);

TraceConfig ve builder desteği http-api ile sunulur; bu örnek için ayrı trace bağımlılığı gerekmez. lilyrs::trace public modülünü doğrudan kullanacaksanız aynı lilyrs satırına trace feature’ını ekleyin. Bu feature console seçeneğini açar; dosya ve OTLP exporter’ları runtime configuration ile seçilir.

Bu builder parçasını uygulamanızın başlatma zincirine ekleyin. TraceConfig::default() tek başına tracing’i açmaz; enabled = true gerekir. Alternatif olarak strict tracing_config_path(path) kullanılabilir.

Exporter sahipliği#

App-owned tracing DI kurulmadan önce başlar, DI kapanışından sonra flush edilir. tracing_external() seçerseniz provider’ı build’den önce kurun ve kapanışını dış uygulamada tamamlayın.

Console, dosya rotation, OTLP, sampling ve filter seçenekleri lily_trace config yüzeyindedir. HTTP request/status/duration/body bytes, admission, timeout, connection ve DI yaşam döngüsü telemetry’si birlikte izlenebilir.

Metric label’larında kullanıcı ID’si gibi sınırsız değerler yerine route template’i tercih edin. Uygulama reddi ile teknik hata sınıflandırmasını response outcome sözleşmesinde koruyun.

Readiness endpoint’i#

Controller’da HttpHealthService, Service, ResponseBuilder ve HttpApiError import edilerek şu action eklenebilir:

Rust
#[get("/ready")]
async fn ready(&self, Service(health): Service<HttpHealthService>)
    -> Result<ResponseBuilder, HttpApiError>
{
    let snapshot = health.snapshot()
        .map_err(|_| HttpApiError::ServiceUnavailable("health unavailable".into()))?;
    let (code, reason) = if snapshot.ready { (200, "OK") } else { (503, "Service Unavailable") };
    Ok(ResponseBuilder::new().status(code, reason).json(snapshot))
}

snapshot.ready doğruysa 200, değilse 503 döner. Snapshot’ı JSON olarak döndürmek tek başına HTTP readiness status politikasını kurmaz; status seçimi örnekte açıktır.

Health kapsamı#

Framework otomatik /health route’u veya bütün veritabanlarına otomatik probe eklemez. Snapshot HTTP host’un sağlık görünümüdür. Ek uygulama bağımlılıkları için kendi health politikanızı açıkça belirleyin.

Bu sayfanın kaynakları v0.1.0

Anlatım, incelenen framework commit’ine dayanır.

HIZLI BAŞLANGIÇ
Dokümantasyon
Kaynak kod