SmokePing измеряет задержку и потери пакетов до набора узлов и рисует графики по данным RRDtool. В отличие от разовых проверок ping, он хранит историю за месяцы и годы, показывает джиттер и позволяет сравнить несколько точек. Для домашней сети и небольшого офиса это наглядный способ заметить деградацию канала до того, как пользователи начнут жаловаться.

Как это работает

Демон периодически запускает probe — обёртку над fping, curl, dig или собственным скриптом — и записывает время отклика в Round Robin Database. Каждый target описывается в конфигурации, а веб-интерфейс строит по RRD графики за час, день, неделю и год. Потери считаются отдельно от задержки, поэтому «медленно» и «рвётся» видны по-разному.

  • FPing — основной probe для ICMP, самый дешёвый по ресурсам.
  • DNS — измеряет время ответа резолвера, полезен для проверки локального кэша.
  • Curl — проверяет полный HTTP-запрос, включая TLS-рукопожатие.
  • TCPConnect — фиксирует доступность порта без ICMP.

Установка

В Ubuntu и Linux Mint пакет smokeping есть в репозитории. Вместе с ним ставятся fping и веб-интерфейс на Perl/CGI. Если Apache уже занят другим сайтом, поднимите отдельный виртуальный хост; для первого запуска проще стандартная конфигурация.

sudo apt update
sudo apt install smokeping fping apache2
sudo systemctl enable --now smokeping
systemctl status smokeping --no-pager

Проверьте, что fping имеет право отправлять ICMP: getcap /usr/bin/fping должен показать cap_net_raw. Если capabilities сняты, графики будут пустыми, а в логе появится сообщение об ошибке доступа.

Конфигурация целей

Основной файл — /etc/smokeping/config, он подключает файлы из config.d. Цели удобно держать в Targets: группа задаётся одним плюсом, хост — двумя. В menu пишется короткое имя для веб-интерфейса, в title — заголовок графика, в host — адрес или имя.

*** Targets ***
probe = FPing
menu = Top
title = Network Latency
remark = Задержка и потери

+ Home
menu = Home
title = Домашняя сеть

++ Router
menu = Router
title = Роутер
host = 192.168.1.1

++ Provider
menu = Provider
title = Шлюз провайдера
host = 203.0.113.1

После правки конфигурации перезапустите службу. Синтаксис проверяется при старте: ошибка в отступе или лишний плюс не дадут демону подняться, поэтому смотрите journalctl -u smokeping.

Probes и интервалы

По умолчанию FPing отправляет 20 пакетов раз в 5 минут: эти значения задаются в секции General параметрами pings и step. Для нестабильного канала шаг можно уменьшить, но это увеличивает нагрузку и размер RRD. Не ставьте интервал меньше минуты без необходимости: графики станут шумными, а пользы не прибавится.

*** General ***
step = 300
pings = 20

*** Probes ***
+ FPing
binary = /usr/bin/fping
packetsize = 56

Для DNS-проверки нужен отдельный probe и указание сервера. Curl полезен, когда ICMP блокируется, но помните: он измеряет не сеть, а полный запрос вместе с приложением.

Алерты

SmokePing умеет отправлять письма при потере пакетов или превышении задержки. Правила задаются в Alerts: тип loss или rtt и шаблон pattern. Шаблон читается слева направо и описывает последние измерения; проще начать с одного условия и усложнять постепенно.

*** Alerts ***
to = admin@example.com
from = smokeping@example.com

+loss
type = loss
pattern = >10%,>10%,>10%
comment = Потери выше 10 процентов

+rtt
type = rtt
pattern = >150,>150,>150
comment = Задержка выше 150 мс

Письма отправляет системный sendmail или настроенный relay. Проверьте доставку вручную, иначе алерт останется только в логе. Для дежурств удобнее отправлять события в систему мониторинга, но это требует отдельной интеграции.

Несколько точек опроса

Если сеть распределена, один сервер может собирать данные с удалённых площадок. На площадке запускается SmokePing в режиме slave: он не хранит графики, а отправляет результаты мастеру по HTTP с общим секретом. Мастер описывает площадку в разделе Slaves и указывает её имя в целях.

*** Slaves ***
secrets = /etc/smokeping/smokeping_secrets

+office
display_name = Office

smokeping --master-url=http://mon.example.com/smokeping.cgi \
  --shared-secret="$SMOKEPING_SECRET" \
  --cache-dir=/var/lib/smokeping --slave-name=office

Файл секретов содержит строку office:change-me и доступен только владельцу. Значение должно совпадать с обеих сторон, а время — быть синхронизировано. Для одной площадки slave не нужен: он усложняет отладку и добавляет сетевой обмен.

  • Синхронизируйте время через systemd-timesyncd или chrony.
  • Секрет храните с правами 600 и не коммитьте в git.
  • Для каждой площадки задайте отдельное имя slave.

Хранение и бэкап

Все графики лежат в /var/lib/smokeping в виде RRD-файлов. Копировать их на работающей службе рискованно: часть данных может попасть в середину записи. Надёжнее остановить службу на секунду или сделать снапшот файловой системы. Для домашней сети достаточно недельного бэкапа каталога: история полезна, когда нужно доказать провайдеру наличие потерь.

Веб-интерфейс

Пакет ставит конфигурацию Apache в conf-available. Включите её командой a2enconf smokeping и перезагрузите Apache. Интерфейс доступен по адресу /smokeping/smokeping.cgi; если отдаётся 403, проверьте права на каталог /var/lib/smokeping и настройку Require в конфиге.

sudo a2enconf smokeping
sudo systemctl reload apache2
curl -I http://localhost/smokeping/smokeping.cgi
namei -l /var/lib/smokeping

Каталог данных должен принадлежать пользователю smokeping. После смены владельца старые RRD не ломаются, но новые цели создаются только при следующем цикле опроса.

Диагностика

Если графики пустые, идите по цепочке: служба, права fping, конфигурация цели, запись RRD. Запуск в foreground с —debug показывает, какие цели опрашиваются и какие ошибки возникают. Фильтр —filter позволяет проверить одну группу, не трогая остальные.

sudo -u smokeping fping -c 3 192.168.1.1
sudo smokeping --config=/etc/smokeping/config --debug --filter='+/Home'
ls -l /var/lib/smokeping
journalctl -u smokeping -n 50 --no-pager
  • Пустые графики — чаще всего права на fping или каталог RRD.
  • «Target not found» — опечатка в menu или неверный отступ.
  • Рваный график — нестабильный канал либо слишком частый опрос.
  • Высокая нагрузка — уменьшите число пакетов и целей.

Чек-лист

  • Ставьте fping из репозитория и проверяйте capabilities.
  • Начните с 5–7 целей: шлюз, провайдер, два внешних сервиса.
  • Интервал 300 секунд достаточен для домашней сети.
  • Алерты настраивайте после недели наблюдений, когда известна норма.
  • Каталог /var/lib/smokeping держите на диске с местом и бэкапом.

Итог

SmokePing даёт длинную историю задержек и потерь без сложной инфраструктуры. Установка сводится к пакету, fping и Apache, конфигурация — к списку целей и паре алертов. Главное преимущество — наглядность: по графику видно, проблема в домашнем роутере, у провайдера или на конкретном сервисе, и это экономит часы споров со службой поддержки.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте