Jump to content

[Релиз] Легковесный CLI-агент мониторинга пропускной способности и базовых метрик (Python)


Recommended Posts

Posted

Приветствую, коллеги!

Мы в команде OpenSpeedTest.ru выкатили новый функционал, который, возможно, будет полезен местному сообществу.

Исторически мы занимались только замерами скорости, но от админов и небольших провайдеров постоянно прилетал запрос: нужен простой скрипт, чтобы кинуть его на удаленный шлюз, малину (Raspberry) или VPS, и чтобы он по крону мерял реальную пропускную способность до внешки, попутно поглядывая за базовым железом.

Поднимать ради этого полноценного Zabbix-агента, node_exporter или PRTG часто бывает избыточно (особенно если машинка слабая или это временный узел). В итоге мы написали своего легковесного демона на Python и сделали под него веб-дашборд.

Что под капотом у агента:

  • Написан на чистом Python 3. Из зависимостей требует только requests и psutil.

  • Аппаратные метрики: раз в 60 секунд собирает утилизацию CPU, RAM, Disk и Uptime.

  • Сетевые метрики: по расписанию (настраивается из веб-морды) или по ручному триггеру проводит замер Download, Upload, Ping и Jitter.

  • Работает по Pull-модели (polling). Скрипт сам делает HTTPS-запросы к нашему API. Никакие входящие порты на сервере открывать не нужно.

  • Код скрипта открыт (не обфусцирован), перед запуском можно спокойно прочитать, что именно он отправляет.

Как ставится: Разворачивается в 3 команды, сам создает systemd сервис и прописывается в автозагрузку.

# Ставим зависимости
pip3 install requests psutil

# Качаем скрипт
curl -sLo ost-agent.py https://openspeedtest.ru/cli/ost-agent.py

# Регистрируем токен (ключ берется в ЛК)
python3 ost-agent.py --register --api-key ВАШ_КЛЮЧ

# Поднимаем systemd-демона
sudo python3 ost-agent.py --daemon

 

Веб-морда и Алертинг: Всё управление мы вынесли в облачный личный кабинет (денег за него не просим, полностью free). Там отрисовываются графики (ApexCharts) и настраиваются триггеры.

Можно настроить логику алертов. Например:

  • Упал линк / агент не на связи > 5 минут.

  • Скорость загрузки упала ниже 100 Мбит/с.

  • Диск забился > 95%.

Уведомления умеем слать в Telegram, на E-mail, в VK. Для любителей интегрировать всё в свои системы есть возможность дергать любой Webhook. Интервал тестов можно задавать классическим Cron-синтаксисом прямо из веба (например, 0 2 * * * для ночных замеров).

Где посмотреть: Дока и описание лежат тут: https://openspeedtest.ru/cli

Будем очень рады конструктивной критике от сообщества НАГа. Инструмент активно пилится. Если чего-то не хватает (экспорта в определенных форматах, специфичных метрик, особых хуков) — пишите, добавим.

Заранее спасибо за фидбек!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...