Форматов два, и выбор между ними не настраивается директивой. Его делает расширение в пути блока: .json даёт JSON, любое другое — CSV. Форма с каналом всегда пишет CSV.
CSV — по стандарту RFC 4180, в UTF-8, с заголовочной строкой. Первая колонка всегда вид записи — именно это позволяет держать несколько видов в одном файле. Плата за такую смесь: заголовок несёт все колонки всех выбранных видов, и каждая строка заполняет только свои.
JSON — по объекту на строку, без заголовка, формат NDJSON. Каждая запись самоописательна: в ней присутствуют все настроенные поля, даже пустые. Проблемы общего заголовка нет вовсе.
🔴 Расширение решает и заголовок типа содержимого у вебхука: .json — application/x-ndjson, всё остальное — text/csv. Значит, путь, изменённый по совсем другому поводу, молча меняет формат отправляемых данных, и приёмник сломается на данных, которые выглядят исправными.
Формат меток времени настраивается отдельно — iso-times, и он общий для обоих форматов.
Телеметрия идёт в .json, то есть NDJSON: приёмник разбирает пачку построчно, и каждая запись самоописательна. Расширение здесь часть протокола, а не украшение — в коде конфигуратора это отмечено комментарием, потому что с любым другим расширением придёт CSV и разбирать пачку будет нечем.
Страховочный файл — .csv, с умолчанием по видам (d,b), и смесь двух видов в нём терпима.
Собственных значений у механизма нет: формат выбирает путь.
| Путь заканчивается на | Формат | Тип содержимого у вебхука |
|---|---|---|
| .json | NDJSON, без заголовка | application/x-ndjson |
| что угодно другое | CSV с заголовком | text/csv |
| канал | CSV | — |
Переопределить тип содержимого можно только файлом http-webhook-extra-headers.
# расширение — часть протокола, а не украшение <acct-file /var/log/pmta/mtahub-webhook.json> records d, b, rb, t, feedback-loop http-webhook-url https://hub.example.com/api/telemetry/pmta/7 </acct-file>
что делают не так и чем это кончается2 ошибки▶
наш опыт
§ 12.1.2.2
2 связи
head -1 "$(ls -t /var/log/pmta/acct-*.csv | head -1)"
3 статьи
◇Что узел рассказывает о себе и по каким каналамСемь поверхностей наблюдения: веб-монитор, консоль в четырёх форматах, журнал, учёт, поиск по учёту, метрики и выгрузка во внешнюю аналитику.◇Два обработчика входящих отчётов и что с ними делатьОтказы письмом и жалобы разбираются двумя одинаково устроенными блоками; у каждого свой список адресов и своя пара решений о судьбе письма.◇Пять способов очереди отдать письмоОчередь не обязана ходить по SMTP: она умеет писать в файл, запускать программу, стучаться по HTTP или выбрасывать.