init4_bin_base/lib.rs
1//! Shared utilities for Signet services.
2
3#![warn(
4 missing_copy_implementations,
5 missing_debug_implementations,
6 missing_docs,
7 unreachable_pub,
8 clippy::missing_const_for_fn,
9 rustdoc::all
10)]
11#![cfg_attr(not(test), warn(unused_crate_dependencies))]
12#![deny(unused_must_use, rust_2018_idioms)]
13#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
14
15use utils::otlp::OtelGuard;
16
17/// Signet utilities.
18pub mod utils {
19 /// Prometheus metrics utilities.
20 pub mod metrics;
21
22 /// OpenTelemetry utilities.
23 pub mod otlp;
24
25 /// [`FromEnv`], [`FromEnvVar`] traits and related utilities.
26 ///
27 /// [`FromEnv`]: from_env::FromEnv
28 /// [`FromEnvVar`]: from_env::FromEnvVar
29 pub mod from_env;
30
31 /// Tracing utilities.
32 pub mod tracing;
33}
34
35/// Re-exports of common dependencies.
36pub mod deps {
37 pub use metrics;
38 pub use opentelemetry;
39 pub use opentelemetry_otlp;
40 pub use opentelemetry_sdk;
41 pub use tracing;
42 pub use tracing_core;
43 pub use tracing_opentelemetry;
44 pub use tracing_subscriber;
45}
46
47/// Init metrics and tracing, including OTLP if enabled.
48///
49/// This will perform the following:
50/// - Read environment configuration for tracing
51/// - Determine whether to enable OTLP
52/// - Install a global tracing subscriber, using the OTLP provider if enabled
53/// - Read environment configuration for metrics
54/// - Install a global metrics recorder and serve it over HTTP on 0.0.0.0
55///
56/// See [`init_tracing`] and [`init_metrics`] for more
57/// details on specific actions taken and env vars read.
58///
59/// # Returns
60///
61/// The OpenTelemetry guard, if OTLP is enabled. This guard should be kept alive
62/// for the lifetime of the program to ensure the exporter continues to send
63/// data to the remote API.
64///
65/// [`init_tracing`]: utils::tracing::init_tracing
66/// [`init_metrics`]: utils::metrics::init_metrics
67pub fn init4() -> Option<OtelGuard> {
68 let guard = utils::tracing::init_tracing();
69 utils::metrics::init_metrics();
70 guard
71}