Как застройщик 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»