TL;DR

  • Sampler (sqshq/sampler) là CLI Go biến shell command thành dashboard terminal real-time, cấu hình bằng YAML.
  • 14,540 stars, 663 forks, GPL-3.0. Tag release cuối là v1.1.0 (2019), commit cuối trên master tháng 2/2024 — ổn định chứ không chết.
  • 6 component: runchart, sparkline, barchart, gauge, textbox, asciibox. Hỗ trợ trigger với alert âm thanh, visual, hoặc chạy shell command (gửi Slack, Telegram...).
  • Không phải đối thủ của Grafana — đây là phương án "cài 1 binary, viết 30 dòng YAML, có dashboard ngay" cho dev và SRE khi không muốn dựng Prometheus + Grafana.
  • Đang được resharing trên X bởi @tom_doerr — đáng để bookmark.

Sampler runchart hiển thị thời gian phản hồi của Google, Yahoo, Bing trực tiếp trong terminal

Có gì đáng nói

Đây không phải tool mới — Sampler ra đời từ tháng 1/2019. Cái "mới" là nó tiếp tục được rediscovered: một bài đăng X gần đây của tom_doerr kéo lại sự chú ý cho cộng đồng dev. Lý do nó vẫn được share lại sau 7 năm: không có tool nào khác đơn giản đến mức đó. Bạn viết một file YAML, gọi sampler --config dashboard.yml, là có dashboard.

Một ví dụ tối thiểu:

runcharts:
  - title: Search engine response time
    items:
      - label: GOOGLE
        sample: curl -o /dev/null -s -w "%{time_total}" https://google.com
      - label: BING
        sample: curl -o /dev/null -s -w "%{time_total}" https://bing.com
    rate-ms: 500

Tại sao nó matter

Khi bạn SSH vào một con VPS lúc 2h sáng vì alert nổ, bạn cần thông tin ngay: CPU, lag Kafka, error rate, queue depth. Bật Grafana mất 5 phút và đòi hỏi cả một stack đã set up sẵn. top chỉ cho CPU/RAM. watch thì không vẽ chart. Sampler lấp đúng cái khoảng giữa đó: chart real-time cho bất cứ thứ gì có thể echo ra stdout, không server, không database, không browser.

Ngoài incident, nó cũng tốt cho demo (nhìn pro hơn nhiều so với htop screenshot), cho dashboard cá nhân chạy ở góc tmux, và cho monitoring tạm cho project nhỏ chưa đáng dựng Prom + Grafana.

Technical facts

PropertyValue
Ngôn ngữGo (binary tĩnh)
LicenseGPL-3.0
Stars / Forks14,540 / 663
Created25/01/2019
Latest tagv1.1.0 — 24/12/2019
Last commit master22/02/2024
Dependency runtimechỉ libasound2-dev trên Linux nếu cần sound alert
Cài đặtbrew install sampler · choco install sampler · yay -S sampler · dnf install golang-github-sqshq-sampler

Sáu component:

  1. Runchart — multi-series time-series, mỗi line là một shell command.
  2. Sparkline — single-value compact, lý tưởng cho CPU/RAM/network.
  3. Barchart — so sánh nhiều giá trị side-by-side.
  4. Gauge — min/cur/max, hiển thị progress hoặc tỷ lệ.
  5. Textbox — bê thẳng stdout vào panel (giống tail -f có khung).
  6. Asciibox — render text khổng lồ kiểu figlet (đồng hồ, status header).

Barchart CPU usage trong Sampler theme sáng

Triggers chạy điều kiện shell trên giá trị mới nhất, có thể fire: terminal bell, sound file, visual highlight, hoặc chạy bất kỳ shell command nào — nghĩa là gửi alert Slack/Telegram/PagerDuty đều OK, chỉ cần một curl.

So sánh nhanh với các option khác

ToolConfigPhạm viHợp khi
SamplerYAML, declarativeBất kỳ shell command nàoDashboard ad-hoc, demo, dev box
btop / htopkhông cầnSystem metricsXem CPU/RAM ngay tức thì
ctop / lazydockerkhông cầnDockerContainer ops
WTF (wtfutil)YAMLWidget có sẵn (Jira, GH...)Personal info dashboard
Grafana + PrometheusUI + JSONFull observabilityProduction scale

Tác giả Sampler nói thẳng: không phải replacement cho Grafana. Đây là tool dành cho lúc Grafana là overkill.

Use cases thực tế

  • Kafka consumer lag — runchart từ kafka-consumer-groups.sh --describe, một line mỗi consumer group.
  • Docker stats — sparkline CPU% và mem% cho từng container, parse từ docker stats --no-stream.
  • DB metrics — chạy MySQL/Postgres/Mongo trong PTY mode (init mở session, transform trích số), runchart QPS hoặc lock wait.
  • JMX — lấy heap / GC pause qua jmxterm, không cần Prometheus exporter.
  • Ping monitor — runchart latency tới N endpoint, kèm trigger bell khi mất gói.
  • Deploy progress — gauge cho rollout status từ kubectl rollout status, sound khi xong.

Asciibox của Sampler hiển thị UTC time dạng ASCII art

Limitations & pricing

  • Free, GPL-3.0. Không paid tier.
  • Không có persistence — đóng terminal là mất data. Sampler là live view, không phải TSDB.
  • Tag release cuối từ 2019; master vẫn nhận commit nhỏ tới 2024 nhưng project ở chế độ maintenance, không phải active development. PR đọng lại nhiều năm là chuyện thường.
  • Windows support marked experimental; Linux cần libasound2-dev nếu dùng sound trigger.
  • YAML phình to khi dashboard phức tạp, không có GUI editor.
  • Trigger chạy shell command với quyền của user gọi Sampler — cẩn thận với content alert.

What's next

Không có roadmap công khai. Cộng đồng giữ project sống thông qua các package fork (Fedora, Arch, MacPorts) và issue tracker tự giải quyết. Với một tool đã làm xong việc của nó từ 2019, đây không phải là tệ — bạn có một binary stable, một file YAML, và mọi thứ vẫn chạy y như ngày đầu.

Nếu bạn cần dashboard terminal nhanh, không server, không subscription, không Helm chart — clone repo, đọc 30 dòng README, là xong.

Nguồn: github.com/sqshq/sampler, dev.to — bài giới thiệu của tác giả, tom_doerr trên X.