критично
Это перечень всего, о чём узел способен рассказать, и выбор между этими каналами — половина устройства любой системы наблюдения за парком.
Каждая поверхность отвечает на свой вопрос своей ценой:
| Поверхность | Отвечает на вопрос | Цена |
|---|---|---|
| веб-монитор | что происходит сейчас | опрос, ключ управления |
| консоль (текст, XML, JSON, DOM) | то же, но из скрипта | доступ к машине |
| журнал | что делал узел и почему сорвалось | место на диске |
| учёт | что стало с письмами, полностью | место, задержка до закрытия файла |
| поиск по учёту | найти письмо в накопленном | только формат CSV |
| метрики | сводные числа в чужом формате | порт, ничего больше |
| внешняя аналитика | как письма приняли на той стороне | данные уходят наружу |
Три вопроса — три разных типа ответа, и парку нужны все три: «сейчас» (монитор, консоль, метрики), «что было» (учёт, журнал), «как приняли» (внешняя аналитика, жалобы).
Подробность журнала настраивается по приёмнику, а не только на весь узел. Это важная мелочь: поднять подробность одному разбираемому приёмнику стоит почти ничего, а поднять её всему узлу — обычный способ заполнить диск.
Консоль отдаёт четыре формата, включая JSON, — то есть машинное чтение возможно без разбора экранного вывода.
Учёт — вебхуком, это источник всей аналитики парка. Монитор — опросом раз в минуту, это текущее состояние и команды. Журнал — руками, при разборе, по SSH.
Не пользуемся: метриками (место в схеме есть — metrics_port, — но не заполняется), поиском по учёту, внешней аналитикой.
🔎 Разбивка панели парка — очереди, адреса отправки, задания, последняя ошибка по приёмнику — совпала с тем, что показывает монитор вендора. Пришли к этому независимо; полезно знать при сравнении возможностей.
Собственных значений у механизма нет — каждая поверхность включается своим:
| Поверхность | Чем включается |
|---|---|
| веб-монитор | http-mgmt-port и http-access |
| журнал | log-file и переключатели log-* |
| учёт | блок <acct-file> |
| метрики | блок <prometheus-listener> |
# три поверхности, которыми пользуется парк http-mgmt-port 1000 # что происходит сейчасlog-file /var/log/pmta/log # что делал узел <acct-file /var/log/pmta/webhook.json> records d, b, rb, t, feedback-loop http-webhook-url https://hub.example.com/api/telemetry/pmta/7 </acct-file> # что стало с письмами
что делают не так и чем это кончается2 ошибки▶
наш опыт
§ 1.4
8 связей
Аналитика вендора — и что уходит с узла ради неёСедьмая поверхность и единственная, отдающая данные наружу: как письма приняли на той стороне. § 1.4Разобраться, почему копится очередь к одному приёмникуРазбор одного приёмника и есть выбор между этими поверхностями по порядку. § 4.1.1
Состояние узлаСтраница монитора, отвечающая на вопрос «что происходит сейчас». § 1.4Состояние очередей вместе с историей событийТот же вопрос из консоли — и в машинных форматах, а не только на экран. § 1.4Доставлено — запись, по которой считают всёЗапись учёта, из которой складывается ответ «что стало с письмом». § 1.4Сводка по файлам учётаПриложение статистики: ещё один читатель того же учёта. § 1.4Поиск по файлам учётаПоиск по накопленному учёту — работает только с формой CSV. § 1.4
Как письмо попадает в MTAГде видно, какой дверью письма приходят на самом деле. inferenceСторож, который перезапускает MTAПисьмо сторожа — единственная поверхность, на которой видно падение с автоматическим подъёмом. inferencetrack-time-first-attemptGlobalВеличина появляется сразу на двух поверхностях: в учёте и в метриках. § 1.4Договор о телеметрииОдна из трёх поверхностей наблюдения за узлом — та, из которой берётся история, а не текущее состояние. § 1.4Форматы ответа монитораСмежный механизм: они работают вместе. § 4.1.1Форматы вывода командСмежный механизм: они работают вместе. § 4.1.1
ss -lntp | grep -E ':(1000|9090)'
3 статьи
◇Сторож, который перезапускает MTAПрисматривает за MTA и после падения поднимает его сам, отправляя отчёт о падении на адрес ответственного.◇Договор о телеметрииОдин блок описывает выход учёта целиком: какие виды записей, какие поля, куда они идут, как сменяются файлы и что обезличивается.◇Журнал и учёт — два файла и два разных вопросаMTA ведёт отдельный журнал и отдельный файл учёта; разделение сделано ради формата, производительности и возможности отдать журнал не раскрывая данные.