You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
An SSH-driven Ceph investigation TUI with live cluster status, per-node
@@ -50,8 +50,16 @@ In a source clone, use `cargo run -- init-config`, edit the generated file, then
50
50
## Features
51
51
52
52
- Live cluster health, quorum, OSD counts, and IO throughput over a single SSH stream.
53
-
- Per-node readiness: connection state, OSD ids, CPU and memory percent, and Ceph version/deployment.
53
+
- Per-node readiness: connection state, OSD ids, CPU and memory percent, IO stall
54
+
share from `/proc/pressure/io`, and Ceph version/deployment.
55
+
- Per-OSD commit and apply latency from `ceph osd perf` next to the eBPF trace
56
+
numbers, and health check names read straight out of `ceph -s`.
54
57
- osdtrace eBPF latency tracing with per-OSD and per-PG breakdown of queue, BlueStore, and KV-commit latency.
58
+
- A flow view of the OSD, placement group, and object behind the observed
59
+
ops, built from the trace lines already streaming. radostrace names the
60
+
object so the view has three levels; with only osdtrace it collapses to
61
+
OSD and placement group. Rows carry the mean op size next to the latency; a
62
+
read reports the length it requested, not the bytes returned.
55
63
- No standing agent: no permanent daemon on the nodes; the osdtrace runner script removes itself on stop, quit, or TTL expiry. (The cephtrace tracer binaries you deploy do persist under `~/.cephlens/bin/`.)
56
64
- Edit hosts and trace settings live in the TUI; changes apply to open SSH streams immediately.
57
65
- Export recorded sessions as Markdown reports with the same diagnostic rules used by the TUI.
@@ -60,7 +68,8 @@ In a source clone, use `cargo run -- init-config`, edit the generated file, then
60
68
61
69
Controller (where the TUI runs):
62
70
63
-
- Rust 1.85+ (edition 2024) to build.
71
+
- Rust 1.88+ (edition 2024) to build. The source uses let chains, which are
72
+
stable only from 1.88 onward.
64
73
- An OpenSSH client on `PATH`, with every host reachable over non-interactive SSH (key-based, no password prompt). Windows 10/11 ship this as the optional OpenSSH Client feature; macOS and Linux include it by default.
65
74
66
75
Ceph nodes:
@@ -216,6 +225,7 @@ admin host:
216
225
sudo -n ceph -s --format json
217
226
sudo -n ceph osd tree --format json
218
227
sudo -n ceph osd df --format json
228
+
sudo -n ceph osd perf --format json
219
229
sudo -n rados --version
220
230
221
231
bench command:
@@ -281,6 +291,9 @@ p run a probe readiness check
281
291
c edit config
282
292
t/f/r view osdtrace / kfstrace / radostrace; press again to start or stop (confirmed)
283
293
a start or stop all trace sources (confirmed)
294
+
m flow view: the osd -> pg -> object mapping behind the live ops
295
+
o flow view: order by op count or by latency
296
+
s flow view: reverse the order
284
297
i install osdtrace
285
298
x clear captured trace events
286
299
? toggle the help overlay
@@ -312,9 +325,11 @@ The integrated trace panel can show osdtrace, kfstrace, or radostrace data. The
312
325
On wide terminals the trace panel appears on the right; on tall terminals it
313
326
appears below the dashboard.
314
327
Live TUI mode keeps one SSH stream open for cluster status and one stream per
315
-
host for node readiness. Each stream emits data once per second by default and
316
-
the node table shows connection state (`live`, `dial`, `retry`, `error`), OSD
317
-
ids, CPU percentage, and memory percentage.
328
+
host for node readiness. `refresh_secs` is the pause between ticks, so the
329
+
period an operator sees is that pause plus the time the remote queries take. On
330
+
a four node microceph cluster the cluster stream ticks about every 1.4s at the
331
+
default `refresh_secs = 1`. The node table shows connection state (`live`,
332
+
`dial`, `retry`, `error`), OSD ids, CPU percentage, and memory percentage.
318
333
When `trace_auto_start` is true, cephlens starts osdtrace runners as soon as the
319
334
TUI opens. The default config keeps it false so an operator explicitly starts
0 commit comments