7 releases (breaking)
0.7.0 | May 23, 2024 |
---|---|
0.6.1 | Mar 19, 2024 |
0.5.0 | Nov 30, 2023 |
0.4.0 | Jun 19, 2023 |
0.1.0 | Aug 26, 2022 |
#180 in Profiling
503 downloads per month
26KB
320 lines
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.
Usage
Add the following to your Cargo.toml
:
[dependencies]
tracing-axiom = "0.7"
Create a dataset in Axiom and export the name as AXIOM_DATASET
.
Then create an API token with ingest permission into that dataset in
the Axiom settings and export it as
AXIOM_TOKEN
.
Now you can set up tracing like this:
use tracing_subscriber::{layer::SubscriberExt as _, util::SubscriberInitExt as _, Registry};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let axiom_layer = tracing_axiom::default("readme")?; // Set AXIOM_DATASET and AXIOM_TOKEN in your env!
Registry::default().with(axiom_layer).init();
say_hello();
Ok(())
}
#[tracing::instrument]
pub fn say_hello() {
tracing::info!("Hello, world!");
}
For further examples, head over to the examples directory.
Note: Due to a limitation of an underlying library, events outside of a span are not recorded.
Features
The following are a list of Cargo features that can be enabled or disabled:
- rustls-tls (enabled by default): Enables TLS functionality provided by
rustls
. - default-tls: uses reqwest default TLS library.
- native-tls: Enables TLS functionality provided by
native-tls
.
FAQ & Troubleshooting
How do I log traces to the console in addition to Axiom?
You can use this library to get a tracing-subscriber::layer
and combine it with other layers, for example one that prints traces to the
console.
You can see how this works in the fmt example.
My test function hangs indefinitely
This can happen when you use #[tokio::test]
as that defaults to a
single-threaded executor, but the
opentelemetry
crate requires a multi-thread
executor.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or opensource.org/licenses/MIT)
at your option.
Dependencies
~12–26MB
~399K SLoC