Что узел рассказывает о себе и по каким каналам

критично

monitoring and management tools
Карта того, что можно спросить у узла

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

Каждая поверхность отвечает на свой вопрос своей ценой:

Поверхность Отвечает на вопрос Цена
веб-монитор что происходит сейчас опрос, ключ управления
консоль (текст, XML, JSON, DOM) то же, но из скрипта доступ к машине
журнал что делал узел и почему сорвалось место на диске
учёт что стало с письмами, полностью место, задержка до закрытия файла
поиск по учёту найти письмо в накопленном только формат CSV
метрики сводные числа в чужом формате порт, ничего больше
внешняя аналитика как письма приняли на той стороне данные уходят наружу

Три вопроса — три разных типа ответа, и парку нужны все три: «сейчас» (монитор, консоль, метрики), «что было» (учёт, журнал), «как приняли» (внешняя аналитика, жалобы).

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

Консоль отдаёт четыре формата, включая JSON, — то есть машинное чтение возможно без разбора экранного вывода.

Главная ловушка — строить наблюдение на одной поверхности. Монитор не помнит прошлого, учёт не показывает настоящего, метрики не знают отдельных писем, а журнал не знает их судьбы. Каждый из них по отдельности отвечает «не знаю» на две трети вопросов.
Что делает Хаб. Пользуется тремя из семи и по-разному.

Учёт — вебхуком, это источник всей аналитики парка. Монитор — опросом раз в минуту, это текущее состояние и команды. Журнал — руками, при разборе, по SSH.

Не пользуемся: метриками (место в схеме есть — metrics_port, — но не заполняется), поиском по учёту, внешней аналитикой.

🔎 Разбивка панели парка — очереди, адреса отправки, задания, последняя ошибка по приёмнику — совпала с тем, что показывает монитор вендора. Пришли к этому независимо; полезно знать при сравнении возможностей.

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

Собственных значений у механизма нет — каждая поверхность включается своим:

Поверхность Чем включается
веб-монитор http-mgmt-port и http-access
журнал log-file и переключатели log-*
учёт блок <acct-file>
метрики блок <prometheus-listener>
Перечень поверхностей, четыре формата вывода консоли, оба формата учёта и настройка подробности журнала по приёмнику — из руководства (§ 1.4). Разделение на три типа вопросов и разбор нашего выбора — наши.
Пример в конфигурации
# три поверхности, которыми пользуется парк
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

Чем чреватоПодробность настраивается по приёмнику, и разбираемый обычно один. Общее повышение даёт объём кратно числу приёмников и заполняет диск.
Как заметитьЖурнал вырос скачком после правки конфигурации.
Как правильноВключать подробность в блоке разбираемого приёмника или источника.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Наследование
Наследования у механизма нет — наследуются директивы, которыми включается каждая поверхность. Единственная из них, настраиваемая по приёмнику, — подробность журнала; остальные задаются на узел.
⇄

Связанные записи

8 связей

Как проверить на узле
Проверка одна на все поверхности: посмотреть, что вообще отвечает:
ss -lntp | grep -E ':(1000|9090)'
Порт управляющего интерфейса и порт метрик — это две из семи поверхностей. Остальные проверяют по файлам: журнал и учёт должны расти, каждый по-своему.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Разобраться с доставляемостью · Разобрать зависшую очередь · Собрать телеметрию
Важность
критично