ts_opentelemetry_sdk/metrics/mod.rs
1//! The rust of the OpenTelemetry metrics SDK.
2//!
3//! ## Configuration
4//!
5//! The metrics SDK configuration is stored with each [MeterProvider].
6//! Configuration for [Resource]s, [View]s, and [ManualReader] or
7//! [PeriodicReader] instances can be specified.
8//!
9//! ### Example
10//!
11//! ```
12//! use ts_opentelemetry_api::{
13//! metrics::{MeterProvider as _, Unit},
14//! Context, KeyValue,
15//! };
16//! use ts_opentelemetry_sdk::{metrics::MeterProvider, Resource};
17//!
18//! let cx = Context::current();
19//!
20//! // Generate SDK configuration, resource, views, etc
21//! let resource = Resource::default(); // default attributes about the current process
22//!
23//! // Create a meter provider with the desired config
24//! let provider = MeterProvider::builder().with_resource(resource).build();
25//!
26//! // Use the meter provider to create meter instances
27//! let meter = provider.meter("my_app");
28//!
29//! // Create instruments scoped to the meter
30//! let counter = meter
31//! .u64_counter("power_consumption")
32//! .with_unit(Unit::new("kWh"))
33//! .init();
34//!
35//! // use instruments to record measurements
36//! counter.add(&cx, 10, &[KeyValue::new("rate", "standard")]);
37//! ```
38//!
39//! [Resource]: crate::Resource
40
41pub(crate) mod aggregation;
42pub mod data;
43pub mod exporter;
44pub(crate) mod instrument;
45pub(crate) mod internal;
46pub(crate) mod manual_reader;
47pub(crate) mod meter;
48mod meter_provider;
49pub(crate) mod periodic_reader;
50pub(crate) mod pipeline;
51pub mod reader;
52pub(crate) mod view;
53
54pub use aggregation::*;
55pub use instrument::*;
56pub use manual_reader::*;
57pub use meter::*;
58pub use meter_provider::*;
59pub use periodic_reader::*;
60pub use pipeline::Pipeline;
61pub use view::*;