http-webhook-max-interval

<acct-file>Хаб задаёт сам

Как часто узел отправляет накопленную пачку записей
в конфигурации это строкаhttp-webhook-max-interval 5mвнутри блока <acct-file>
Задержка телеметрии задаётся здесь

Записи не уходят по одной: они копятся и отправляются пачкой. Строка задаёт, как часто. Умолчание — 5m, минимум — 1m.

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

Второе ограничение пачки — размер, max-size. Пачка уходит по тому условию, которое наступит раньше: на большом потоке она уйдёт по размеру, не дожидаясь интервала.

Для обычного файлового учёта та же роль у move-interval — руководство отдельно оговаривает, что для вебхука надо пользоваться этой строкой, а не той.

Главная ловушка — поставить большой интервал ради экономии. Экономия выходит небольшой, а данные стареют на весь интервал. И наоборот: минута при недоступном приёмнике означает минутный ритм повторов, а не потерю — накопление идёт в промежуточных файлах.
Что делает Хаб. Пишет — ставит 1m, минимально возможное. Панель парка обновляется по этим пачкам, и пять минут задержки на ней были бы заметны глазом.

Рядом стоит max-size 1M: на всплеске пачка уйдёт по размеру раньше, чем истечёт минута. Наш приёмник отклоняет тело больше 32 МБ ответом 413, так что запас между 1M и потолком приёмника тридцатикратный.

Рекомендуемые значения

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

Значение Когда
1m (минимум) данные показываются человеку в реальном времени
5m (умолчание) отчётность, накопление в хранилище
больше приёмник дорог по запросам, свежесть не нужна

Пачка уходит и по размеру — max-size задаёт второе условие.

Умолчание 5m, минимум 1m и указание пользоваться этой строкой вместо move-interval — из руководства (§ 3.3.11.21, § 3.3.11.2). Разбор нашего выбора и запаса по размеру — по коду Хаба.
Пример в конфигурации
# минимальный интервал — данные идут на панель, которую смотрят
<acct-file /var/log/pmta/mtahub-webhook.json>
    http-webhook-url https://hub.example.com/api/telemetry/pmta/7
    http-webhook-max-interval 1m    max-size 1M
</acct-file>
Две строки задают два условия отправки. Пачка уходит по тому, которое наступит раньше.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

Типичные ошибки и проблемы

что делают не так и чем это кончается2 ошибки▶

Настраивают частоту вебхука директивой move-interval

§ 3.3.11.2

Чем чреватоТа строка управляет переносом обычных файлов учёта и на ритм вебхука не влияет. Руководство отсылает к этой директиве прямо.
Как заметитьmove-interval задан, а пачки уходят по-прежнему раз в пять минут.
Как правильноЗадавать ритм вебхука строкой http-webhook-max-interval.

Ставят большой интервал, чтобы «разгрузить приёмник»

наш опыт

Чем чреватоЧисло запросов падает, а объём каждого растёт: то же количество записей уходит реже и крупнее. Разгрузки почти нет, свежесть данных теряется вся.
Как заметитьПанель показывает картину получасовой давности.
Как правильноРазгружать приёмник сжатием (http-webhook-transfer-encoding), а не интервалом.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
http-webhook-max-interval <time-interval>
Значения
интервал времени, не меньше 1m
Умолчание
5m § 3.3.11.21
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<acct-file>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследования нет: строка живёт внутри своего <acct-file>. У разных потоков учёта интервалы могут различаться — например, оперативная телеметрия раз в минуту и выгрузка в хранилище раз в час.
Как проверить на узле
Ритм отправки виден по промежуточным файлам — они появляются и исчезают с заданной частотой:
watch -n5 'ls -la /var/log/pmta/mtahub-webhook*'
Файлы должны появляться и пропадать. Если они только накапливаются, дело не в интервале: приёмник отвечает не 2xx.
В Хабе
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Собрать телеметрию