π¦ π¦ TuskLang Rust Observability & Monitoring
π¦ TuskLang Rust Observability & Monitoring
"We don't bow to any king" - Rust Edition
Master observability and advanced monitoring with TuskLang Rust. From structured logging to distributed tracing, from metrics to alertingβbuild systems you can see, understand, and trust.
π Structured Logging
Tracing and Logging with tracing
use tracing::{info, warn, error, debug, span, Level};
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};fn main() {
tracing_subscriber::registry()
.with(tracing_subscriber::EnvFilter::new("info"))
.with(tracing_subscriber::fmt::layer())
.init();
info!("Application started");
debug!("Debugging info");
warn!("Warning message");
error!("Error message");
}
TSK Logging Config
[logging]
level: "info"
format: "json"
file: "/var/log/app.log"
rotation: "daily"
max_size: "100MB"
retention: 7
π Metrics Collection
Prometheus Metrics with prometheus crate
use prometheus::{Encoder, TextEncoder, IntCounter, register_int_counter};
use actix_web::{web, App, HttpServer, HttpResponse, Responder};lazy_static::lazy_static! {
static ref HTTP_REQUESTS_TOTAL: IntCounter = register_int_counter!("http_requests_total", "Total HTTP requests").unwrap();
}
async fn metrics() -> impl Responder {
let encoder = TextEncoder::new();
let metric_families = prometheus::gather();
let mut buffer = Vec::new();
encoder.encode(&metric_families, &mut buffer).unwrap();
HttpResponse::Ok().body(buffer)
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| App::new().route("/metrics", web::get().to(metrics)))
.bind("0.0.0.0:8080")?
.run()
.await
}
TSK Metrics Config
[metrics]
enabled: true
exporter: "prometheus"
endpoint: "/metrics"
scrape_interval: "15s"
custom_metrics: ["http_requests_total", "db_query_duration_seconds"]
π Distributed Tracing
Jaeger Integration with opentelemetry
use opentelemetry::sdk::export::trace::stdout;
use opentelemetry_jaeger::PipelineBuilder;
use tracing_subscriber::layer::SubscriberExt;
use tracing_opentelemetry::OpenTelemetryLayer;fn main() {
let tracer = opentelemetry_jaeger::new_pipeline()
.with_service_name("tuskapp-rust")
.install_simple()
.unwrap();
let telemetry = OpenTelemetryLayer::new(tracer);
tracing_subscriber::registry()
.with(telemetry)
.with(tracing_subscriber::fmt::layer())
.init();
tracing::info!("Tracing initialized");
}
TSK Tracing Config
[tracing]
enabled: true
exporter: "jaeger"
endpoint: "http://localhost:14268/api/traces"
sampling_rate: 1.0
max_trace_duration: "5m"
π¨ Alerting & Notifications
Alertmanager Integration
alertmanager.yml
route:
receiver: 'slack-notifications'
receivers:
- name: 'slack-notifications'
slack_configs:
- api_url: 'https://hooks.slack.com/services/XXX/YYY/ZZZ'
channel: '#alerts'
send_resolved: true
TSK Alerting Config
[alerting]
enabled: true
receivers: ["slack", "email"]
slack_webhook: @env("SLACK_WEBHOOK")
email_recipients: ["ops@mycompany.com"]
alert_rules: ["high_error_rate", "high_latency", "db_down"]
π‘οΈ Security & Compliance
- Mask sensitive data in logs - Use TLS for metrics and tracing endpoints - Audit log access and retention - Monitor for anomalous patternsπ§ͺ Testing Observability
#[tokio::test]
async fn test_metrics_endpoint() {
let resp = reqwest::get("http://localhost:8080/metrics").await.unwrap();
assert!(resp.status().is_success());
let body = resp.text().await.unwrap();
assert!(body.contains("http_requests_total"));
}
π― What You've Learned
1. Structured logging - tracing, log rotation, and masking 2. Metrics - Prometheus, custom metrics, and exporters 3. Distributed tracing - Jaeger, OpenTelemetry, and context propagation 4. Alerting - Slack, email, and custom rules 5. Security & compliance - Masking, TLS, and audit
π Next Steps
1. Integrate observability into your Rust apps 2. Set up Prometheus, Grafana, and Jaeger 3. Define alerting rules and receivers 4. Monitor, analyze, and improve system health 5. Automate compliance and auditing
---
You now have complete observability and monitoring mastery with TuskLang Rust! From structured logging to distributed tracing, from metrics to alertingβTuskLang gives you the tools to build systems you can see, understand, and trust.