Crate oculus

Crate oculus 

Source
Expand description

Oculus - Unified Telemetry Library

This crate provides the core functionality for the Oculus monitoring system. It can be used as a library by other Rust projects, or run as a standalone binary with the oculus executable.

§Architecture

  • Collectors: Data collection from various sources (network, crypto, stock, prediction markets)
  • Storage: SQLite-based persistence layer with async read/write separation
  • Rule Engine: Simple (YAML) and complex (SQL) rule evaluation
  • Presentation: Web UI and REST API
  • Notification: Multi-channel alert delivery

§Quick Start

use oculus::{StorageBuilder, MetricSeries, MetricValue, MetricCategory, StaticTags};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Build storage layer
    let handles = StorageBuilder::new("sqlite:oculus.db?mode=rwc").build().await?;

    // Create and insert a metric
    let series = MetricSeries::new(
        MetricCategory::NetworkTcp,
        "latency",
        "127.0.0.1:6379",
        StaticTags::new(),
        Some("Redis latency".to_string()),
    );
    let value = MetricValue::new(series.series_id, 42.0, true);
    handles.writer.upsert_metric_series(series)?;
    handles.writer.insert_metric_value(value)?;

    // Query metrics
    let results = handles.metric_reader.query(Default::default()).await?;
    println!("Found {} metrics", results.len());

    handles.shutdown().await?;
    Ok(())
}

Re-exports§

pub use storage::DynamicTags;
pub use storage::Event;
pub use storage::EventKind;
pub use storage::EventPayload;
pub use storage::EventQuery;
pub use storage::EventReader;
pub use storage::EventSeverity;
pub use storage::EventSource;
pub use storage::MetricCategory;
pub use storage::MetricQuery;
pub use storage::MetricReader;
pub use storage::MetricResult;
pub use storage::MetricSeries;
pub use storage::MetricValue;
pub use storage::SortOrder;
pub use storage::StaticTags;
pub use storage::StorageAdmin;
pub use storage::StorageBuilder;
pub use storage::StorageError;
pub use storage::StorageHandles;
pub use storage::StorageWriter;
pub use collector::Collector;
pub use collector::CollectorError;
pub use collector::CollectorRegistry;
pub use collector::IpValidationError;
pub use collector::JobInfo;
pub use collector::Schedule;
pub use collector::ping::PingCollector;
pub use collector::ping::PingConfig;
pub use collector::tcp::TcpCollector;
pub use collector::tcp::TcpConfig;

Modules§

collector
Collector Layer
config
Configuration module for Oculus application.
server
Web server module for Oculus.
storage
Storage Layer