Centralizes engine tuning values, poll intervals, logfmt column regex fragments, and app/settings identity strings that were previously defined ad hoc across engine.rs, ingest.rs, logfmt.rs, profile.rs, settings.rs, and main.rs. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A1ZJ3SrayzLzVndhVq9BmS
55 lines
2.5 KiB
Rust
55 lines
2.5 KiB
Rust
use std::time::Duration;
|
|
|
|
// mpsc channel capacity between ingest/API callers and the engine actor task.
|
|
pub const ENGINE_CHANNEL_CAPACITY: usize = 1024;
|
|
|
|
// Hard ceiling on how many params `auto_declare_params` will ever create automatically over the
|
|
// life of the engine, so one unusual input can't inflate the declared-param set forever.
|
|
pub const MAX_AUTO_DECLARED_PARAMS: usize = 64;
|
|
|
|
// Per-line ceiling on how many *new* params a single ingested line may contribute to the
|
|
// auto-derived set, so one unusually wide line can't burn the whole per-run budget at once.
|
|
pub const MAX_NEW_AUTO_PARAMS_PER_LINE: usize = 8;
|
|
|
|
// How long a sort helper index may sit unused before it's purged and left to rebuild on demand.
|
|
pub const SORT_HELPER_INDEX_PURGE_AFTER: Duration = Duration::from_secs(300);
|
|
|
|
// Window and capacity for the rolling ingestion-to-engine-processing lag high watermark.
|
|
pub const INGEST_LAG_WATERMARK_WINDOW_MS: i64 = 5000;
|
|
pub const INGEST_LAG_WATERMARK_MAX_ENTRIES: usize = 5;
|
|
|
|
// Bucket width used to merge multiple sub-series into one combined time series.
|
|
pub const MERGE_WINDOW_MS: i64 = 1_000;
|
|
|
|
// Default timeline query bucket width when the caller doesn't specify one.
|
|
pub const DEFAULT_TIMELINE_BUCKET_MS: i64 = 1_000;
|
|
|
|
// Reserved param names usable without declaring anything (ottyl-synthesized columns).
|
|
pub const OTTYL_RESERVED_PARAM_NAMES: [&str; 3] = ["ottyl_seq", "ottyl_ts", "ottyl_fmt"];
|
|
|
|
// Idle poll cadence while tailing stdin/a file for new log lines.
|
|
pub const STDIN_POLL_INTERVAL: Duration = Duration::from_millis(200);
|
|
|
|
// Poll cadence for a configured Prometheus/OpenMetrics `--metrics-url`.
|
|
pub const METRICS_POLL_INTERVAL: Duration = Duration::from_secs(15);
|
|
|
|
// Column-splitting regex fragments for the fixed-width logfmt column parser.
|
|
pub const COLUMN_SEPARATOR_PATTERN: &str = r"(?:\t|[ \t]{2,})";
|
|
pub const COLUMN_VALUE_PATTERN: &str = r"\S+(?: \S+)*";
|
|
|
|
// Name of the always-present profile every Settings file is seeded with.
|
|
pub const DEFAULT_PROFILE_NAME: &str = "Default";
|
|
|
|
// Name/label of the metric the Default profile is seeded with.
|
|
pub const SEEDED_METRIC_NAME: &str = "log_category";
|
|
pub const SEEDED_METRIC_LABEL: &str = "category";
|
|
|
|
// Host the HTTP server binds to; port is user-configurable, host is not.
|
|
pub const DEFAULT_BIND_HOST: &str = "0.0.0.0";
|
|
|
|
// App identity used to resolve the OS-conventional settings directory, and the settings file name.
|
|
pub const APP_QUALIFIER: &str = "";
|
|
pub const APP_ORGANIZATION: &str = "";
|
|
pub const APP_NAME: &str = "ottyl";
|
|
pub const SETTINGS_FILE_NAME: &str = "settings.json";
|