#influx-db #metrics #process #provider

influxive

High-level Rust integration of opentelemetry metrics and InfluxDB

12 releases

0.0.4-alpha.1 Feb 19, 2025
0.0.3-alpha.1 Jun 5, 2024
0.0.2-alpha.1 Oct 16, 2023
0.0.1-alpha.11 Aug 4, 2023
0.0.1-alpha.9 Jul 31, 2023

#124 in Debugging

Download history 389/week @ 2024-12-14 98/week @ 2024-12-21 155/week @ 2024-12-28 526/week @ 2025-01-04 580/week @ 2025-01-11 375/week @ 2025-01-18 393/week @ 2025-01-25 498/week @ 2025-02-01 644/week @ 2025-02-08 542/week @ 2025-02-15 492/week @ 2025-02-22 506/week @ 2025-03-01 280/week @ 2025-03-08 798/week @ 2025-03-15 725/week @ 2025-03-22 665/week @ 2025-03-29

2,505 downloads per month
Used in 2 crates (via holochain_metrics)

MIT/Apache

85KB
2K SLoC

Project Forum Chat

License: MIT License: Apache-2.0

High-level Rust integration of opentelemetry metrics and InfluxDB.

Examples

Easy, zero-configuration InfluxDB as a child process

let tmp = tempfile::tempdir().unwrap();

// create our meter provider
let (_influxive, meter_provider) = influxive::influxive_child_process_meter_provider(
    influxive::InfluxiveChildSvcConfig::default()
        .with_database_path(Some(tmp.path().to_owned())),
    influxive::InfluxiveMeterProviderConfig::default(),
).await.unwrap();

// register our meter provider
opentelemetry_api::global::set_meter_provider(meter_provider);

// create a metric
let m = opentelemetry_api::global::meter("my.meter")
    .f64_histogram("my.metric")
    .init();

// make a recording
m.record(3.14, &[]);

Connecting to an already running InfluxDB system process

// create our meter provider
let meter_provider = influxive::influxive_external_meter_provider_token_auth(
    influxive::InfluxiveWriterConfig::default(),
    influxive::InfluxiveMeterProviderConfig::default(),
    "http://127.0.0.1:8086",
    "my.bucket",
    "my.token",
);

// register our meter provider
opentelemetry_api::global::set_meter_provider(meter_provider);

// create a metric
let m = opentelemetry_api::global::meter("my.meter")
    .f64_histogram("my.metric")
    .init();

// make a recording
m.record(3.14, &[]);

Dependencies

~10–23MB
~332K SLoC