parent
efb091c693
commit
710f477e35
|
|
@ -2094,6 +2094,7 @@ dependencies = [
|
|||
"dashmap",
|
||||
"hashbrown",
|
||||
"observability_deps",
|
||||
"opentelemetry",
|
||||
"opentelemetry-prometheus",
|
||||
"parking_lot",
|
||||
"prometheus",
|
||||
|
|
@ -2464,7 +2465,6 @@ dependencies = [
|
|||
name = "observability_deps"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"opentelemetry",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
|
|
@ -4719,6 +4719,7 @@ dependencies = [
|
|||
"http-body",
|
||||
"itertools 0.10.1",
|
||||
"observability_deps",
|
||||
"opentelemetry",
|
||||
"parking_lot",
|
||||
"pin-project 1.0.8",
|
||||
"rand 0.8.4",
|
||||
|
|
@ -4855,6 +4856,7 @@ version = "0.1.0"
|
|||
dependencies = [
|
||||
"logfmt",
|
||||
"observability_deps",
|
||||
"opentelemetry",
|
||||
"opentelemetry-jaeger",
|
||||
"opentelemetry-otlp",
|
||||
"regex",
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ edition = "2018"
|
|||
dashmap = { version = "4.0.1" }
|
||||
hashbrown = "0.11"
|
||||
observability_deps = { path = "../observability_deps" }
|
||||
opentelemetry = "0.15"
|
||||
opentelemetry-prometheus = "0.8"
|
||||
parking_lot = "0.11.1"
|
||||
prometheus = "0.12"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ use hashbrown::HashMap;
|
|||
|
||||
use crate::KeyValue;
|
||||
use hashbrown::hash_map::RawEntryMut;
|
||||
use observability_deps::opentelemetry::labels::{DefaultLabelEncoder, LabelSet};
|
||||
use opentelemetry::labels::{DefaultLabelEncoder, LabelSet};
|
||||
|
||||
/// A `Gauge` allows tracking multiple usize values by label set
|
||||
///
|
||||
|
|
|
|||
|
|
@ -14,18 +14,16 @@ use opentelemetry_prometheus::PrometheusExporter;
|
|||
use parking_lot::Mutex;
|
||||
use prometheus::{Encoder, Registry, TextEncoder};
|
||||
|
||||
use observability_deps::{
|
||||
opentelemetry::metrics::Meter as OTMeter,
|
||||
opentelemetry::{
|
||||
metrics::{
|
||||
registry::RegistryMeterProvider, MeterProvider, ObserverResult, ValueRecorderBuilder,
|
||||
},
|
||||
sdk::{
|
||||
export::metrics::ExportKindSelector,
|
||||
metrics::{controllers, selectors::simple::Selector},
|
||||
},
|
||||
use observability_deps::tracing::*;
|
||||
use opentelemetry::{
|
||||
metrics::{
|
||||
registry::RegistryMeterProvider, Meter as OTMeter, MeterProvider, ObserverResult,
|
||||
ValueRecorderBuilder,
|
||||
},
|
||||
sdk::{
|
||||
export::metrics::ExportKindSelector,
|
||||
metrics::{controllers, selectors::simple::Selector},
|
||||
},
|
||||
tracing::*,
|
||||
};
|
||||
|
||||
pub use crate::gauge::*;
|
||||
|
|
@ -537,7 +535,7 @@ pub struct TaggedObserverResult<'a, T> {
|
|||
|
||||
impl<'a, T> TaggedObserverResult<'a, T>
|
||||
where
|
||||
T: Into<observability_deps::opentelemetry::metrics::Number>,
|
||||
T: Into<opentelemetry::metrics::Number>,
|
||||
{
|
||||
fn with_callback<F>(
|
||||
labels: Vec<KeyValue>,
|
||||
|
|
|
|||
|
|
@ -4,11 +4,9 @@ use std::{
|
|||
time::{Duration, Instant},
|
||||
};
|
||||
|
||||
use observability_deps::opentelemetry::metrics::{
|
||||
Counter as OTCounter, ValueRecorder as OTHistogram,
|
||||
};
|
||||
use opentelemetry::metrics::{Counter as OTCounter, ValueRecorder as OTHistogram};
|
||||
|
||||
pub use observability_deps::opentelemetry::KeyValue;
|
||||
pub use opentelemetry::KeyValue;
|
||||
|
||||
const RED_REQUEST_STATUS_LABEL: &str = "status";
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ use std::sync::Arc;
|
|||
|
||||
use parking_lot::Mutex;
|
||||
|
||||
use observability_deps::opentelemetry::metrics::{Meter, ObserverResult};
|
||||
use opentelemetry::metrics::{Meter, ObserverResult};
|
||||
|
||||
type CallbackFunc<T> = Box<dyn Fn(&ObserverResult<T>) + Send + Sync + 'static>;
|
||||
|
||||
|
|
|
|||
|
|
@ -6,5 +6,4 @@ edition = "2018"
|
|||
description = "Observability ecosystem dependencies for InfluxDB IOx, to ensure consistent versions and unified updates"
|
||||
|
||||
[dependencies] # In alphabetical order
|
||||
opentelemetry = { version = "0.15", default-features = false, features = ["trace", "metrics", "rt-tokio"] }
|
||||
tracing = { version = "0.1", features = ["max_level_trace", "release_max_level_debug"] }
|
||||
|
|
|
|||
|
|
@ -1,8 +1,3 @@
|
|||
//! This crate exists to coordinate versions of `opentelemetry`, `tracing`,
|
||||
//! `prometheus` and related crates so that we can manage their updates in a
|
||||
//! single crate.
|
||||
|
||||
// Export these crates publicly so we can have a single reference
|
||||
pub use opentelemetry;
|
||||
pub use tracing;
|
||||
pub use tracing::instrument;
|
||||
|
|
|
|||
|
|
@ -33,10 +33,8 @@ use chrono::Utc;
|
|||
use futures::{self, StreamExt};
|
||||
use http::header::{CONTENT_ENCODING, CONTENT_TYPE};
|
||||
use hyper::{http::HeaderValue, Body, Method, Request, Response, StatusCode};
|
||||
use observability_deps::{
|
||||
opentelemetry::KeyValue,
|
||||
tracing::{self, debug, error},
|
||||
};
|
||||
use metrics::KeyValue;
|
||||
use observability_deps::tracing::{self, debug, error};
|
||||
use routerify::{prelude::*, Middleware, RequestInfo, Router, RouterError, RouterService};
|
||||
use serde::Deserialize;
|
||||
use snafu::{OptionExt, ResultExt, Snafu};
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ futures = "0.3"
|
|||
http = "0.2"
|
||||
http-body = "0.4"
|
||||
itertools = "0.10"
|
||||
opentelemetry = "0.15"
|
||||
observability_deps = { path = "../observability_deps" }
|
||||
parking_lot = "0.11"
|
||||
pin-project = "1.0"
|
||||
|
|
|
|||
|
|
@ -11,10 +11,8 @@ use tokio::sync::mpsc;
|
|||
use tokio::task::JoinError;
|
||||
use tokio_util::sync::CancellationToken;
|
||||
|
||||
use observability_deps::{
|
||||
opentelemetry::sdk::export::trace::{ExportResult, SpanData, SpanExporter},
|
||||
tracing::{error, info, warn},
|
||||
};
|
||||
use observability_deps::tracing::{error, info, warn};
|
||||
use opentelemetry::sdk::export::trace::{ExportResult, SpanData, SpanExporter};
|
||||
|
||||
use crate::ctx::{SpanContext, SpanId, TraceId};
|
||||
use crate::span::{MetaValue, SpanEvent, SpanStatus};
|
||||
|
|
@ -148,10 +146,10 @@ async fn exporter_loop<T: SpanExporter + 'static>(
|
|||
|
||||
impl From<Span> for SpanData {
|
||||
fn from(span: Span) -> Self {
|
||||
use observability_deps::opentelemetry::sdk::trace::{EvictedHashMap, EvictedQueue};
|
||||
use observability_deps::opentelemetry::sdk::InstrumentationLibrary;
|
||||
use observability_deps::opentelemetry::trace::{SpanId, SpanKind};
|
||||
use observability_deps::opentelemetry::{Key, KeyValue};
|
||||
use opentelemetry::sdk::trace::{EvictedHashMap, EvictedQueue};
|
||||
use opentelemetry::sdk::InstrumentationLibrary;
|
||||
use opentelemetry::trace::{SpanId, SpanKind};
|
||||
use opentelemetry::{Key, KeyValue};
|
||||
|
||||
let parent_span_id = match span.ctx.parent_span_id {
|
||||
Some(id) => id.into(),
|
||||
|
|
@ -187,7 +185,7 @@ impl From<Span> for SpanData {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'a> From<&'a SpanContext> for observability_deps::opentelemetry::trace::SpanContext {
|
||||
impl<'a> From<&'a SpanContext> for opentelemetry::trace::SpanContext {
|
||||
fn from(ctx: &'a SpanContext) -> Self {
|
||||
Self::new(
|
||||
ctx.trace_id.into(),
|
||||
|
|
@ -199,7 +197,7 @@ impl<'a> From<&'a SpanContext> for observability_deps::opentelemetry::trace::Spa
|
|||
}
|
||||
}
|
||||
|
||||
impl From<SpanEvent> for observability_deps::opentelemetry::trace::Event {
|
||||
impl From<SpanEvent> for opentelemetry::trace::Event {
|
||||
fn from(event: SpanEvent) -> Self {
|
||||
Self {
|
||||
name: event.msg,
|
||||
|
|
@ -210,7 +208,7 @@ impl From<SpanEvent> for observability_deps::opentelemetry::trace::Event {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<SpanStatus> for observability_deps::opentelemetry::trace::StatusCode {
|
||||
impl From<SpanStatus> for opentelemetry::trace::StatusCode {
|
||||
fn from(status: SpanStatus) -> Self {
|
||||
match status {
|
||||
SpanStatus::Unknown => Self::Unset,
|
||||
|
|
@ -220,19 +218,19 @@ impl From<SpanStatus> for observability_deps::opentelemetry::trace::StatusCode {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<SpanId> for observability_deps::opentelemetry::trace::SpanId {
|
||||
impl From<SpanId> for opentelemetry::trace::SpanId {
|
||||
fn from(id: SpanId) -> Self {
|
||||
Self::from_u64(id.0.get())
|
||||
}
|
||||
}
|
||||
|
||||
impl From<TraceId> for observability_deps::opentelemetry::trace::TraceId {
|
||||
impl From<TraceId> for opentelemetry::trace::TraceId {
|
||||
fn from(id: TraceId) -> Self {
|
||||
Self::from_u128(id.0.get())
|
||||
}
|
||||
}
|
||||
|
||||
impl From<MetaValue> for observability_deps::opentelemetry::Value {
|
||||
impl From<MetaValue> for opentelemetry::Value {
|
||||
fn from(v: MetaValue) -> Self {
|
||||
match v {
|
||||
MetaValue::String(v) => Self::String(v),
|
||||
|
|
@ -246,7 +244,7 @@ impl From<MetaValue> for observability_deps::opentelemetry::Value {
|
|||
mod tests {
|
||||
use super::*;
|
||||
use chrono::{TimeZone, Utc};
|
||||
use observability_deps::opentelemetry::{Key, Value};
|
||||
use opentelemetry::{Key, Value};
|
||||
use std::time::{Duration, UNIX_EPOCH};
|
||||
|
||||
#[test]
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ description = "(TR)acing and l(OGGING) configuration"
|
|||
[dependencies]
|
||||
logfmt = { path = "../logfmt" }
|
||||
observability_deps = { path = "../observability_deps" }
|
||||
opentelemetry = "0.15"
|
||||
opentelemetry-jaeger = { version = "0.14", features = ["tokio"], optional = true }
|
||||
opentelemetry-otlp = { version = "0.8", optional = true }
|
||||
thiserror = "1.0.23"
|
||||
|
|
@ -23,5 +24,5 @@ synchronized-writer = "1"
|
|||
regex = "1"
|
||||
|
||||
[features]
|
||||
jaeger = ["opentelemetry-jaeger"]
|
||||
otlp = ["opentelemetry-otlp"]
|
||||
jaeger = ["opentelemetry-jaeger", "opentelemetry/rt-tokio"]
|
||||
otlp = ["opentelemetry-otlp", "opentelemetry/rt-tokio"]
|
||||
|
|
|
|||
|
|
@ -21,12 +21,11 @@ pub use config::*;
|
|||
// Re-export tracing_subscriber
|
||||
pub use tracing_subscriber;
|
||||
|
||||
use observability_deps::{
|
||||
opentelemetry,
|
||||
opentelemetry::sdk::trace,
|
||||
opentelemetry::sdk::Resource,
|
||||
opentelemetry::KeyValue,
|
||||
tracing::{self, Subscriber},
|
||||
use observability_deps::tracing::{self, Subscriber};
|
||||
use opentelemetry::{
|
||||
self,
|
||||
sdk::{trace, Resource},
|
||||
KeyValue,
|
||||
};
|
||||
use std::cmp::min;
|
||||
use std::io;
|
||||
|
|
|
|||
Loading…
Reference in New Issue