Рубрики
Uncategorized

Sampler. Панели, мониторинг и оповещение — справа от вашего терминала

Как застройщик Backend, мне всегда нужно что-то следить. Государственная машина в базе данных, записи CO … Теги с DevOps, Bash, производительностью, иди.

Как застройщик Backend, мне всегда нужно что-то следить. Государственная машина в базе данных, количество записей, отставание в очереди сообщений, метрики пользовательских приложений, производительность системы, прогресс моих сценариев развертывания. Тонны вещи!

Долгое время я пытался найти инструмент, который может сэкономить мне время — сможет сохранить все в одном месте и уведомить меня при необходимости. Системы мониторинга тяжелых производств не могут помочь с задачами развития, мне нужна швейцарский армейский нож — то, что можно настроить через минуту и дать мне результаты сразу.

Там не было такой вещи, поэтому я написал свой собственный. Встретить Sampler — UI командной строки для любых команд оболочки, написанные в чистом виде.

Чтобы установить, следуйте за Инструкции для MacOS, Linux или Windows

Идея очень проста — почти все метрики, которые вы можете захотеть мониторировать и визуализировать доступны через CLI:

  • Основы: CPU, память, дисковое пространство, сеть
  • Телеметрия от удаленной машины через SSH
  • Любые метрики базы данных и результаты ваших пользовательских запросов
  • Kafka, Rabbitmq, ActiveMQ
  • K8S RAM/CPU/события
  • Все доступно через http, например Весенние загрузочные метрики
  • Докер
  • Jmx.
  • Журналы

Это означает, что мы можем создавать наши приборные панели без сложных интеграций, драйверов и зависимостей. Мы можем сделать это прямо из терминала.

Использование Sampler в основном является 3-ступенчатым процессом:

  • Определите вашу конфигурацию в файле yaml
  • Беги Sampler -C Ваш конфигуратор-файл.yml
  • Отрегулируйте размер компонентов и местоположение на UI

Визуализации и их конфигурация YAML

RunCharts.
runcharts:
  - title: Search engine response time
    rate-ms: 500        # sampling rate, default = 1000
    scale: 2            # number of digits after sample decimal point, default = 1
    legend:
      enabled: true     # enables item labels, default = true
      details: false    # enables item statistics: cur/min/max/dlt values, default = true
    items:
      - label: GOOGLE
        sample: curl -o /dev/null -s -w '%{time_total}'  https://www.google.com
        color: 178      # 8-bit color number, default one is chosen from a pre-defined palette
      - label: YAHOO
        sample: curl -o /dev/null -s -w '%{time_total}'  https://search.yahoo.com
      - label: BING
        sample: curl -o /dev/null -s -w '%{time_total}'  https://www.bing.com
Sparkclines.
sparklines:
  - title: CPU usage
    rate-ms: 200
    scale: 0
    sample: ps -A -o %cpu | awk '{s+=$1} END {print s}'
  - title: Free memory pages
    rate-ms: 200
    scale: 0
    sample: memory_pressure | grep 'Pages free' | awk '{print $3}'
Бархартс
barcharts:
  - title: Local network activity
    rate-ms: 500        # sampling rate, default = 1000
    scale: 0            # number of digits after sample decimal point, default = 1
    items:
      - label: UDP bytes in
        sample: nettop -J bytes_in -l 1 -m udp | awk '{sum += $4} END {print sum}'
      - label: UDP bytes out
        sample: nettop -J bytes_out -l 1 -m udp | awk '{sum += $4} END {print sum}'
      - label: TCP bytes in
        sample: nettop -J bytes_in -l 1 -m tcp | awk '{sum += $4} END {print sum}'
      - label: TCP bytes out
        sample: nettop -J bytes_out -l 1 -m tcp | awk '{sum += $4} END {print sum}'
Датчики
gauges:
  - title: Minute progress
    rate-ms: 500        # sampling rate, default = 1000
    scale: 2            # number of digits after sample decimal point, default = 1
    percent-only: false # toggle display of the current value, default = false
    color: 178          # 8-bit color number, default one is chosen from a pre-defined palette
    cur:
      sample: date +%S  # sample script for current value
    max:
      sample: echo 60   # sample script for max value
    min:
      sample: echo 0    # sample script for min value
  - title: Year progress
    cur:
      sample: date +%j
    max:
      sample: echo 365
    min:
      sample: echo 0
Текстовые коробки
textboxes:
  - title: Local weather
    rate-ms: 10000      # sampling rate, default = 1000
    sample: curl wttr.in?0ATQF
    border: false       # border around the item, default = true
    color: 178          # 8-bit color number, default is white
  - title: Docker containers stats
    rate-ms: 500
    sample: docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.PIDs}}"
Asciiboxes.
asciiboxes:
  - title: UTC time
    rate-ms: 500        # sampling rate, default = 1000
    font: 3d            # font type, default = 2d
    border: false       # border around the item, default = true    
    color: 43           # 8-bit color number, default is white
    sample: env TZ=UTC date +%r

Интерактивная поддержка оболочки, режим PTY, триггеры, оповещения и переменные. Рецепты реальных мировых работ к работе с MySQL, PostgreSQL, Mongodb, Neo4j, Kafka, SSH и JMX. Вы можете прочитать о расширенных возможностях В документации Отказ

Не стесняйтесь задавать вопросы, внести свой вклад и ⭐ Star ⭐ Проект на Github Действительно

Оригинал: «https://dev.to/sqshq/sampler-dashboards-monitoring-and-alerting-right-from-your-terminal-5h5e»