tracing लाइब्रेरी के साथ Rust एप्लिकेशन की निगरानी

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

tracing क्या है और इसकी आवश्यकता क्यों है?

tracing Rust में एप्लिकेशन को इंस्ट्रूमेंट और मॉनिटर करने के लिए एक शक्तिशाली फ्रेमवर्क है। सरल लॉगिंग के विपरीत, tracing प्रोग्राम निष्पादन के बारे में संरचित डेटा प्रदान करता है, जिससे न केवल संदेशों बल्कि संदर्भ, spans और events को भी ट्रैक किया जा सकता है। यह प्रदर्शन निदान, वितरित सिस्टम और माइक्रोसर्विसेज के लिए विशेष रूप से उपयोगी है।

मुख्य विशेषताएं

  • Spans: संचालन (जैसे, HTTP अनुरोध प्रसंस्करण) के निष्पादन समय अंतराल को ट्रैक करना।
  • Events: संदर्भ (स्तर, फ़ील्ड, समय) के साथ बिंदु-वार लॉग।
  • संरचित डेटा: मशीन प्रसंस्करण के लिए फ़ील्ड (key-value) का समर्थन।
  • अतुल्यकालिकता: tokio और async/await के साथ पूर्ण संगतता।
  • फ़िल्टरिंग: लॉगिंग स्तरों (trace, debug, info, warn, error) का गतिशील प्रबंधन।

स्थापना

Cargo.toml में जोड़ें:

[dependencies]tracing = "0.1"tracing-subscriber = "0.3"

Rust में कोड उदाहरण

use tracing::{info, span, Level};use tracing_subscriber::FmtSubscriber;

fn main() { // सब्सक्राइबर को इनिशियलाइज़ करें (stdout पर आउटपुट) let subscriber = FmtSubscriber::builder() .with_max_level(Level::TRACE) .finish(); tracing::subscriber::set_global_default(subscriber) .expect("ग्लोबल सब्सक्राइबर सेट करने में विफल");

// ऑपरेशन के लिए span बनाएं let span = span!(Level::INFO, "main_operation", user_id = 42); let _guard = span.enter();

// इवेंट लॉग करें info!("अनुरोध प्रसंस्करण शुरू");

// नेस्टेड span let inner_span = span!(Level::DEBUG, "sub_task", task_id = "calc"); let _inner_guard = inner_span.enter(); tracing::event!(Level::TRACE, "उप-कार्य निष्पादित करना"); drop(_inner_guard);

info!("अनुरोध पूर्ण");}

टर्मिनल आउटपुट (समय टिकट और संदर्भ के साथ):

2025-03-22T10:00:00.123Z INFO main_operation{user_id=42}: अनुरोध प्रसंस्करण शुरू2025-03-22T10:00:00.124Z TRACE main_operation{user_id=42}:sub_task{task_id="calc"}: उप-कार्य निष्पादित करना2025-03-22T10:00:00.125Z INFO main_operation{user_id=42}: अनुरोध पूर्ण

tracing का उपयोग कब करें?

  • माइक्रोसर्विसेज: वितरित spans के माध्यम से अनुरोध श्रृंखलाओं को ट्रैक करना (जैसे, opentelemetry के साथ)।
  • उच्च-लोड सिस्टम: ओवरहेड कम करने के लिए मानक लॉगिंग को बदलना।
  • अतुल्यकालिक कोड डीबगिंग: spans स्वचालित रूप से tokio कार्यों से जुड़ जाते हैं।
  • प्रोडक्शन में मॉनिटरिंग: ट्रेस निर्यात के माध्यम से Grafana, Jaeger, Datadog के साथ एकीकरण।

tracing लाइब्रेरी Rust इकोसिस्टम में मॉनिटरिंग के लिए डी-फैक्टो मानक है। इसका उपयोग tokio, hyper, actix-web और axum जैसी परियोजनाओं में किया जाता है।

अनुशंसाएँ