use axiom_rs::Client;
use serde_json::json;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Auto-configure the client from the environment variable AXIOM_TOKEN:
let client = Client::new()?;
client
.ingest(
"DATASET_NAME",
vec![json!({
"foo": "bar",
})],
)
.await?;
let _res = client
.query(r#"['DATASET_NAME'] | where foo == "bar" | limit 100"#, None)
.await?;
Ok(())
}In addition to events (datasets / APL), axiom-rs exposes the
metrics-info, MPL query, and v2 dashboards APIs:
use axiom_rs::{metrics::MplQueryOptions, Client};
use chrono::{Duration, Utc};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Client::new()?;
let end = Utc::now();
let start = end - Duration::hours(1);
// Discover metrics in a dataset.
let info = client.metrics().list("my-metrics-dataset", start, end).await?;
for (name, meta) in &info {
println!("{name}\t{:?}", meta.kind);
}
// Run an MPL query.
let res = client
.metrics()
.query("metric('http_requests_total')", start, end, MplQueryOptions::default())
.await?;
println!("{} series, trace = {:?}", res.series.len(), res.trace_id);
// List dashboards.
for d in client.dashboards().list().await? {
println!("{}\t{}", d.uid, d.name().unwrap_or("(unnamed)"));
}
Ok(())
}cargo add axiom-rsYou can use the Cargo features:
default-tls: Provides TLS support to connect over HTTPS. Enabled by default.native-tls: Enables TLS functionality provided bynative-tls.rustls-tls: Enables TLS functionality provided byrustls.tokio: Enables usage with thetokioruntime. Enabled by default.async-std: Enables usage with theasync-stdruntime.
Read documentation on axiom.co/docs/guides/rust.