Skip to content

Commit

Permalink
Merge branch 'support-bundle-simulated-implementation' into support-b…
Browse files Browse the repository at this point in the history
…undle-bg-task
  • Loading branch information
smklein committed Dec 19, 2024
2 parents 900c670 + 053adca commit 5f3f507
Show file tree
Hide file tree
Showing 55 changed files with 5,454 additions and 628 deletions.
26 changes: 26 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ members = [
"cockroach-admin/types",
"common",
"dev-tools/cert-dev",
"dev-tools/clickana",
"dev-tools/clickhouse-cluster-dev",
"dev-tools/ch-dev",
"dev-tools/crdb-seed",
Expand Down Expand Up @@ -158,6 +159,7 @@ default-members = [
"cockroach-admin/types",
"common",
"dev-tools/cert-dev",
"dev-tools/clickana",
"dev-tools/clickhouse-cluster-dev",
"dev-tools/ch-dev",
"dev-tools/crdb-seed",
Expand Down Expand Up @@ -332,6 +334,7 @@ chrono = { version = "0.4", features = [ "serde" ] }
chrono-tz = "0.10.0"
ciborium = "0.2.2"
clap = { version = "4.5", features = ["cargo", "derive", "env", "wrap_help"] }
clickana = { path = "dev-tools/clickana" }
clickhouse-admin-api = { path = "clickhouse-admin/api" }
clickhouse-admin-keeper-client = { path = "clients/clickhouse-admin-keeper-client" }
clickhouse-admin-server-client = { path = "clients/clickhouse-admin-server-client" }
Expand Down
2 changes: 2 additions & 0 deletions clickhouse-admin/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ slog.workspace = true
slog-async.workspace = true
slog-dtrace.workspace = true
slog-error-chain.workspace = true
slog-term.workspace = true
serde.workspace = true
serde_json.workspace = true
thiserror.workspace = true
tokio.workspace = true
tokio-postgres.workspace = true
Expand Down
22 changes: 8 additions & 14 deletions clickhouse-admin/types/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1200,7 +1200,7 @@ pub enum Timestamp {
#[derive(Debug, Serialize, Deserialize, JsonSchema, PartialEq)]
#[serde(rename_all = "snake_case")]
pub struct SystemTimeSeries {
pub time: Timestamp,
pub time: String,
pub value: f64,
// TODO: Would be really nice to have an enum with possible units (s, ms, bytes)
// Not sure if I can even add this, the system tables don't mention units at all.
Expand Down Expand Up @@ -2099,15 +2099,15 @@ snapshot_storage_disk=LocalSnapshotDisk

let expected = vec![
SystemTimeSeries {
time: crate::Timestamp::Unix("1732494720".to_string()),
time: "1732494720".to_string(),
value: 110220450825.75238,
},
SystemTimeSeries {
time: crate::Timestamp::Unix("1732494840".to_string()),
time: "1732494840".to_string(),
value: 110339992917.33331,
},
SystemTimeSeries {
time: crate::Timestamp::Unix("1732494960".to_string()),
time: "1732494960".to_string(),
value: 110421854037.33331,
},
];
Expand All @@ -2127,21 +2127,15 @@ snapshot_storage_disk=LocalSnapshotDisk

let expected = vec![
SystemTimeSeries {
time: crate::Timestamp::Utc(
"2024-11-25T00:34:00Z".parse::<DateTime<Utc>>().unwrap(),
),
time: "2024-11-25T00:34:00Z".to_string(),
value: 110220450825.75238,
},
SystemTimeSeries {
time: crate::Timestamp::Utc(
"2024-11-25T00:35:00Z".parse::<DateTime<Utc>>().unwrap(),
),
time: "2024-11-25T00:35:00Z".to_string(),
value: 110339992917.33331,
},
SystemTimeSeries {
time: crate::Timestamp::Utc(
"2024-11-25T00:36:00Z".parse::<DateTime<Utc>>().unwrap(),
),
time: "2024-11-25T00:36:00Z".to_string(),
value: 110421854037.33331,
},
];
Expand Down Expand Up @@ -2176,7 +2170,7 @@ snapshot_storage_disk=LocalSnapshotDisk

assert_eq!(
format!("{}", root_cause),
"data did not match any variant of untagged enum Timestamp at line 1 column 12",
"invalid type: integer `2024`, expected a string at line 1 column 12",
);
}
}
31 changes: 31 additions & 0 deletions dev-tools/clickana/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
[package]
name = "clickana"
version = "0.1.0"
edition = "2021"
license = "MPL-2.0"

[dependencies]
anyhow.workspace = true
camino.workspace = true
chrono.workspace = true
clap.workspace = true
clickhouse-admin-types.workspace = true
clickhouse-admin-server-client.workspace = true
dropshot.workspace = true
futures.workspace = true
omicron-common.workspace = true
ratatui.workspace = true
schemars.workspace = true
slog.workspace = true
slog-async.workspace = true
slog-dtrace.workspace = true
slog-error-chain.workspace = true
slog-term.workspace = true
serde_json.workspace = true
tokio.workspace = true
tokio-postgres.workspace = true

omicron-workspace-hack.workspace = true

[lints]
workspace = true
57 changes: 57 additions & 0 deletions dev-tools/clickana/src/bin/clickana.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/.

use anyhow::Result;
use camino::Utf8PathBuf;
use clap::Parser;
use clickana::Clickana;
use std::net::SocketAddr;

const CLICKANA_LOG_FILE: &str = "/tmp/clickana.log";

#[tokio::main]
async fn main() -> Result<()> {
let args = Cli::parse();

let terminal = ratatui::init();
let result = Clickana::new(
args.clickhouse_addr,
args.log_path,
args.sampling_interval,
args.time_range,
args.refresh_interval,
)
.run(terminal)
.await;
ratatui::restore();
result
}

#[derive(Debug, Parser)]
struct Cli {
/// Path to the log file
#[arg(
long,
short,
env = "CLICKANA_LOG_PATH",
default_value = CLICKANA_LOG_FILE,
)]
log_path: Utf8PathBuf,

/// Address where a clickhouse admin server is listening on
#[arg(long, short = 'a')]
clickhouse_addr: SocketAddr,

/// The interval to collect monitoring data in seconds
#[arg(long, short, default_value_t = 60)]
sampling_interval: u64,

/// Range of time to collect monitoring data in seconds
#[arg(long, short, default_value_t = 3600)]
time_range: u64,

/// The interval at which the dashboards will refresh
#[arg(long, short, default_value_t = 60)]
refresh_interval: u64,
}
Loading

0 comments on commit 5f3f507

Please sign in to comment.