Sampler терминальный дашборд для ленивых админов

22 Feb, 2024

Репозиторий давно не обновлялся

Последнее обновление было 2 года назад.

14,575
🔱 662
👥 167

Знакомо чувство, когда нужно быстро проверить нагрузку на сервер или отследить изменения в базе данных, а разворачивать полноценную систему мониторинга слишком долго? С проектом Sampler вы получаете мгновенные визуальные дашборды для любых shell-команд — буквально за пару минут.

Что это за волшебная палочка?

Sampler — это утилита на Go, которая:

  • Выполняет ваши shell-команды с заданной частотой
  • Отображает результаты в виде красивых графиков прямо в терминале
  • Поддерживает алерты и уведомления
  • Конфигурируется через простой YAML-файл

Главный пример работы Sampler

В отличие от Grafana или Prometheus, Sampler не требует:

  • Отдельного сервера
  • Базы данных
  • Сложной настройки

Кому пригодится?

  • DevOps-инженерам для быстрого мониторинга серверов
  • Разработчикам при отладке работы с базами данных
  • Админам для отслеживания сетевой активности
  • Любителям терминальных красоток

5 причин попробовать Sampler прямо сейчас

1. Любая команда — мгновенный график

Достаточно прописать команду в YAML-конфиге, и Sampler превратит её вывод в график. Хотите отслеживать:

Реклама
  • Загрузку CPU? ps -A -o %cpu | awk '{s+=$1} END {print s}'
  • Свободную память? memory_pressure | grep 'Pages free'
  • Задержку ответа сайта? curl -o /dev/null -s -w '%{time_total}'
# Пример конфига для мониторинга CPU
sparklines:
  - title: CPU usage
    rate-ms: 200
    scale: 0
    sample: ps -A -o %cpu | awk '{s+=$1} END {print s}'

2. Шесть типов визуализаций на выбор

Sampler поддерживает разные форматы отображения данных:

  1. Runchart — классический график изменений во времени
  2. Sparkline — компактная «искра» для быстрого взгляда
  3. Barchart — столбчатая диаграмма
  4. Gauge — стрелочный индикатор
  5. Textbox — текстовый вывод
  6. Asciibox — ASCII-арт для эстетов

Примеры всех типов графиков

3. Умные алерты и триггеры

Можно настроить звуковые и визуальные уведомления при достижении пороговых значений:

triggers:
  - title: High CPU alert
    condition: '[ $cur -gt 80 ] && echo 1 || echo 0' # Если загрузка > 80%
    actions:
      sound: true    # Звуковое уведомление
      visual: true   # Всплывающее сообщение
      script: say "Warning! CPU is high" # Можно выполнить любой скрипт

4. Работа с базами данных и удалёнными серверами

Sampler умеет подключаться к:

  • MySQL, PostgreSQL, MongoDB
  • Удалённым серверам по SSH
  • JMX для мониторинга Java-приложений

Пример мониторинга MongoDB:

variables:
  mongo_connection: mongo --quiet --host=localhost test
sparklines:
  - title: MongoDB documents
    init: $mongo_connection
    sample: db.getCollection('events').count()

5. Полная кастомизация

  • Тёмная/светлая тема
  • Настройка цветов (поддержка 256-цветной палитры)
  • Гибкое позиционирование элементов на экране
theme: light # Или dark (по умолчанию)
color: 43    # Зелёный цвет для ASCII-арта

Как начать использовать?

Установка занимает пару команд. Для macOS:

brew install sampler

Или для Linux:

sudo wget https://github.com/sqshq/sampler/releases/download/v1.1.0/sampler-1.1.0-linux-amd64 -O /usr/local/bin/sampler
sudo chmod +x /usr/local/bin/sampler

Создаём конфиг config.yml и запускаем:

sampler -c config.yml

Вывод: стоит ли пробовать?

Sampler — это не замена полноценным системам мониторинга, а удобный инструмент для:

  • Быстрого прототипирования дашбордов
  • Локального мониторинга во время разработки
  • Ситуаций, когда «тяжелые» решения избыточны

Особенно рекомендую попробовать, если:

  • Часто работаете в терминале
  • Нужно быстро проверить гипотезу по метрикам
  • Хотите красоты в консоли без лишних телодвижений

Простота — главное преимущество Sampler. Как говорил Эйнштейн: «Всё должно быть сделано настолько простым, насколько возможно, но не проще». Этот инструмент идеально вписывается в эту философию.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.