критично
Записи учёта можно писать в файл, отдавать программе через канал или отправлять на эндпоинт по HTTP. Третий способ и есть вебхук, и устроен он не так, как кажется.
Вебхук — не поток, а пачки поверх файлов. Записи копятся в файле по указанному в блоке пути, файл уходит запросом POST и удаляется только после успешной отправки. Успех — ответ 2xx и ничего больше; всё остальное вызывает повтор через небольшую задержку.
Значит, недоступный приёмник даёт накопление, а не потерю. Это хорошая новость ровно до того момента, пока не сработает нижний порог свободного места на диске и MTA не начнёт удалять старые файлы учёта. Вот против чего надо проектировать: не против потери при отказе, а против диска.
Файл под низом — общая черта всех трёх способов, и она же общая точка отказа. Зато и надёжность у всех трёх одна: данные переживают перезапуск, потому что лежат на диске.
У канала есть отдельная опасность, названная вендором. Если запись в программу не удалась, узел бросает попытки до перезагрузки конфигурации или таймаута, и вендор советует держать рядом обычный файл, чтобы данные пережили сломанный канал.
Что мы за это платим: приёмник должен быть доступен. Он у нас отвечает быстро намеренно — проверяет токен, кладёт тело в кэш, ставит задачу, — потому что MTA ждёт 2xx и держит соединение.
Файловый учёт рядом с вебхуком мы держим — отдельным блоком <acct-file /var/log/pmta/acct.csv> в том же шаблоне. Это ровно та страховка, которую советует вендор: пока приёмник не обкатан, есть с чем сверить.
Собственных значений у механизма нет: способ выбирается тем, какие строки написаны в блоке.
| Способ | Чем включается | Что под низом |
|---|---|---|
| файл | путь в теге <acct-file> | он сам |
| эндпоинт | http-webhook-url | файл по тому же пути, удаляется после отправки |
| программа | канал в теге блока | файл рядом — по совету вендора |
Расширение пути решает формат: .json — NDJSON, остальное — CSV.
# два способа одновременно — так делают переход <acct-file /var/log/pmta/acct.csv> records d, b, t </acct-file> <acct-file /var/log/pmta/webhook.json> records d, b, t http-webhook-url https://hub.example.com/api/telemetry/pmta/7</acct-file>
что делают не так и чем это кончается3 ошибки▶
§ 12.1.1
§ 12.1.1
§ 12.1.1
3 связи
ls -la /var/log/pmta/ | tail -20
3 статьи
◇Что узел рассказывает о себе и по каким каналамСемь поверхностей наблюдения: веб-монитор, консоль в четырёх форматах, журнал, учёт, поиск по учёту, метрики и выгрузка во внешнюю аналитику.◇Журнал и учёт — два файла и два разных вопросаMTA ведёт отдельный журнал и отдельный файл учёта; разделение сделано ради формата, производительности и возможности отдать журнал не раскрывая данные.◇Сторож, который перезапускает MTAПрисматривает за MTA и после падения поднимает его сам, отправляя отчёт о падении на адрес ответственного.