10 breaking releases
0.11.0 | Sep 13, 2024 |
---|---|
0.10.0 | Jun 17, 2024 |
0.9.0 | Nov 30, 2023 |
0.8.0 | Jan 26, 2023 |
0.2.1 | Jul 22, 2022 |
#313 in Web programming
610 downloads per month
Used in tracing-layer-axiom
110KB
2.5K
SLoC
axiom-rs
Axiom unlocks observability at any scale.
- Ingest with ease, store without limits: Axiom’s next-generation datastore enables ingesting petabytes of data with ultimate efficiency. Ship logs from Kubernetes, AWS, Azure, Google Cloud, DigitalOcean, Nomad, and others.
- Query everything, all the time: Whether DevOps, SecOps, or EverythingOps, query all your data no matter its age. No provisioning, no moving data from cold/archive to “hot”, and no worrying about slow queries. All your data, all. the. time.
- Powerful dashboards, for continuous observability: Build dashboards to collect related queries and present information that’s quick and easy to digest for you and your team. Dashboards can be kept private or shared with others, and are the perfect way to bring together data from different sources
For more information check out the official documentation and our community Discord.
Quickstart
Add the following to your Cargo.toml
:
[dependencies]
axiom-rs = "0.10"
If you use the Axiom CLI, run
eval $(axiom config export -f)
to configure your environment variables.
Otherwise, create a personal token in the Axiom settings and make note of the organization ID from the settings page of the organization you want to access.
Create and use a client like this:
use axiom_rs::Client;
use serde_json::json;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Build your client by providing a personal token and an org id:
let client = Client::builder()
.with_token("my-token")
.with_org_id("my-org")
.build()?;
// Alternatively you autoconfigure the client from the environment variables
// AXIOM_TOKEN and AXIOM_ORG_ID:
let client = Client::new()?;
client.datasets().create("my-dataset", "").await?;
client
.ingest(
"my-dataset",
vec![json!({
"foo": "bar",
})],
)
.await?;
let res = client
.query(r#"['my-dataset'] | where foo == "bar" | limit 100"#, None)
.await?;
println!("{:?}", res);
client.datasets().delete("my-dataset").await?;
Ok(())
}
For further examples, head over to the examples directory.
Optional Features
The following are a list of Cargo features that can be enabled or disabled:
default-tls
(enabled by default): Provides TLS support to connect over HTTPS.native-tls
: Enables TLS functionality provided bynative-tls
.rustls-tls
: Enables TLS functionality provided byrustls
.tokio
(enabled by default): Enables the usage with thetokio
runtime.async-std
: Enables the usage with theasync-std
runtime.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Dependencies
~9–22MB
~324K SLoC