mirror of
https://gitlab.computer.surgery/matrix/grapevine.git
synced 2025-12-17 07:41:23 +01:00
Move observability config to separate config section
This renames: allow_prometheus -> observability.metrics.enable allow_jaeger -> observability.traces.enable tracing_flame -> observability.flame.enable log -> observability.logs.filter log_colors -> observability.logs.colors log_format -> observability.logs.format New config values in these sections will follow.
This commit is contained in:
parent
8a30817930
commit
98d49554ce
3 changed files with 68 additions and 22 deletions
|
|
@ -58,23 +58,13 @@ pub(crate) struct Config {
|
||||||
pub(crate) allow_unstable_room_versions: bool,
|
pub(crate) allow_unstable_room_versions: bool,
|
||||||
#[serde(default = "default_default_room_version")]
|
#[serde(default = "default_default_room_version")]
|
||||||
pub(crate) default_room_version: RoomVersionId,
|
pub(crate) default_room_version: RoomVersionId,
|
||||||
#[serde(default = "false_fn")]
|
|
||||||
pub(crate) allow_jaeger: bool,
|
|
||||||
#[serde(default = "false_fn")]
|
|
||||||
pub(crate) allow_prometheus: bool,
|
|
||||||
#[serde(default = "false_fn")]
|
|
||||||
pub(crate) tracing_flame: bool,
|
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub(crate) proxy: ProxyConfig,
|
pub(crate) proxy: ProxyConfig,
|
||||||
pub(crate) jwt_secret: Option<String>,
|
pub(crate) jwt_secret: Option<String>,
|
||||||
#[serde(default = "default_trusted_servers")]
|
#[serde(default = "default_trusted_servers")]
|
||||||
pub(crate) trusted_servers: Vec<OwnedServerName>,
|
pub(crate) trusted_servers: Vec<OwnedServerName>,
|
||||||
#[serde(default = "default_log")]
|
|
||||||
pub(crate) log: EnvFilterClone,
|
|
||||||
#[serde(default = "true_fn")]
|
|
||||||
pub(crate) log_colors: bool,
|
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub(crate) log_format: LogFormat,
|
pub(crate) observability: ObservabilityConfig,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub(crate) turn: TurnConfig,
|
pub(crate) turn: TurnConfig,
|
||||||
|
|
||||||
|
|
@ -184,6 +174,55 @@ pub(crate) struct DatabaseConfig {
|
||||||
pub(crate) rocksdb_max_open_files: i32,
|
pub(crate) rocksdb_max_open_files: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, Default, Deserialize)]
|
||||||
|
#[serde(default)]
|
||||||
|
pub(crate) struct MetricsConfig {
|
||||||
|
pub(crate) enable: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, Default, Deserialize)]
|
||||||
|
#[serde(default)]
|
||||||
|
pub(crate) struct OtelTraceConfig {
|
||||||
|
pub(crate) enable: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, Default, Deserialize)]
|
||||||
|
#[serde(default)]
|
||||||
|
pub(crate) struct FlameConfig {
|
||||||
|
pub(crate) enable: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize)]
|
||||||
|
#[serde(default)]
|
||||||
|
pub(crate) struct LogConfig {
|
||||||
|
pub(crate) filter: EnvFilterClone,
|
||||||
|
pub(crate) colors: bool,
|
||||||
|
pub(crate) format: LogFormat,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for LogConfig {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self {
|
||||||
|
filter: default_log(),
|
||||||
|
colors: true,
|
||||||
|
format: LogFormat::default(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Default, Deserialize)]
|
||||||
|
#[serde(default)]
|
||||||
|
pub(crate) struct ObservabilityConfig {
|
||||||
|
/// Prometheus metrics
|
||||||
|
pub(crate) metrics: MetricsConfig,
|
||||||
|
/// OpenTelemetry traces
|
||||||
|
pub(crate) traces: OtelTraceConfig,
|
||||||
|
/// Folded inferno stack traces
|
||||||
|
pub(crate) flame: FlameConfig,
|
||||||
|
/// Logging to stdout
|
||||||
|
pub(crate) logs: LogConfig,
|
||||||
|
}
|
||||||
|
|
||||||
fn false_fn() -> bool {
|
fn false_fn() -> bool {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -442,7 +442,7 @@ fn routes(config: &Config) -> Router {
|
||||||
.put(c2s::send_state_event_for_empty_key_route),
|
.put(c2s::send_state_event_for_empty_key_route),
|
||||||
);
|
);
|
||||||
|
|
||||||
let router = if config.allow_prometheus {
|
let router = if config.observability.metrics.enable {
|
||||||
router.route(
|
router.route(
|
||||||
"/metrics",
|
"/metrics",
|
||||||
get(|| async { observability::METRICS.export() }),
|
get(|| async { observability::METRICS.export() }),
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,9 @@ pub(crate) enum FoundIn {
|
||||||
/// Initialize observability
|
/// Initialize observability
|
||||||
pub(crate) fn init(config: &Config) -> Result<Guard, error::Observability> {
|
pub(crate) fn init(config: &Config) -> Result<Guard, error::Observability> {
|
||||||
let jaeger_layer = config
|
let jaeger_layer = config
|
||||||
.allow_jaeger
|
.observability
|
||||||
|
.traces
|
||||||
|
.enable
|
||||||
.then(|| {
|
.then(|| {
|
||||||
opentelemetry::global::set_text_map_propagator(
|
opentelemetry::global::set_text_map_propagator(
|
||||||
opentelemetry_jaeger_propagator::Propagator::new(),
|
opentelemetry_jaeger_propagator::Propagator::new(),
|
||||||
|
|
@ -102,36 +104,41 @@ pub(crate) fn init(config: &Config) -> Result<Guard, error::Observability> {
|
||||||
.install_batch(opentelemetry_sdk::runtime::Tokio)?;
|
.install_batch(opentelemetry_sdk::runtime::Tokio)?;
|
||||||
let telemetry = tracing_opentelemetry::layer().with_tracer(tracer);
|
let telemetry = tracing_opentelemetry::layer().with_tracer(tracer);
|
||||||
|
|
||||||
Ok::<_, error::Observability>(
|
Ok::<_, error::Observability>(telemetry.with_filter(
|
||||||
telemetry.with_filter(EnvFilter::from(&config.log)),
|
EnvFilter::from(&config.observability.logs.filter),
|
||||||
)
|
))
|
||||||
})
|
})
|
||||||
.transpose()?;
|
.transpose()?;
|
||||||
|
|
||||||
let (flame_layer, flame_guard) = config
|
let (flame_layer, flame_guard) = config
|
||||||
.tracing_flame
|
.observability
|
||||||
|
.flame
|
||||||
|
.enable
|
||||||
.then(|| {
|
.then(|| {
|
||||||
let (flame_layer, guard) =
|
let (flame_layer, guard) =
|
||||||
FlameLayer::with_file("./tracing.folded")?;
|
FlameLayer::with_file("./tracing.folded")?;
|
||||||
let flame_layer = flame_layer.with_empty_samples(false);
|
let flame_layer = flame_layer.with_empty_samples(false);
|
||||||
|
|
||||||
Ok::<_, error::Observability>((
|
Ok::<_, error::Observability>((
|
||||||
flame_layer.with_filter(EnvFilter::from(&config.log)),
|
flame_layer.with_filter(EnvFilter::from(
|
||||||
|
&config.observability.logs.filter,
|
||||||
|
)),
|
||||||
guard,
|
guard,
|
||||||
))
|
))
|
||||||
})
|
})
|
||||||
.transpose()?
|
.transpose()?
|
||||||
.unzip();
|
.unzip();
|
||||||
|
|
||||||
let fmt_layer =
|
let fmt_layer = tracing_subscriber::fmt::Layer::new()
|
||||||
tracing_subscriber::fmt::Layer::new().with_ansi(config.log_colors);
|
.with_ansi(config.observability.logs.colors);
|
||||||
let fmt_layer = match config.log_format {
|
let fmt_layer = match config.observability.logs.format {
|
||||||
LogFormat::Pretty => fmt_layer.pretty().boxed(),
|
LogFormat::Pretty => fmt_layer.pretty().boxed(),
|
||||||
LogFormat::Full => fmt_layer.boxed(),
|
LogFormat::Full => fmt_layer.boxed(),
|
||||||
LogFormat::Compact => fmt_layer.compact().boxed(),
|
LogFormat::Compact => fmt_layer.compact().boxed(),
|
||||||
LogFormat::Json => fmt_layer.json().boxed(),
|
LogFormat::Json => fmt_layer.json().boxed(),
|
||||||
};
|
};
|
||||||
let fmt_layer = fmt_layer.with_filter(EnvFilter::from(&config.log));
|
let fmt_layer = fmt_layer
|
||||||
|
.with_filter(EnvFilter::from(&config.observability.logs.filter));
|
||||||
|
|
||||||
let subscriber = Registry::default()
|
let subscriber = Registry::default()
|
||||||
.with(jaeger_layer)
|
.with(jaeger_layer)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue