time-first-attempt-domains-file

<prometheus-listener>

Файл приёмников, по которым метрика разбивается отдельно
в конфигурации это строкаtime-first-attempt-domains-fileвнутри блока <prometheus-listener>
Кого считать поимённо, а кого скопом

Метрика pmta_smtp_first_attempt_seconds несёт метку приёмника, но не для всех подряд. Строка задаёт файл со списком имён — по одному на строку, — и только они получают собственную метку. Остальные попадают в other.

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

Строка применима только при включённом track-time-first-attempt, и живёт она в блоке <prometheus-listener> — то есть настраивает не подсчёт, а его представление в метрике.

Без неё метрика не бесполезна: она остаётся, просто у всех приёмников метка other. Общая задержка видна, разбивки по приёмникам нет.

Главная ловушка — думать, что не попавшие в список приёмники выпали из метрики. Они там есть, все вместе, под меткой other. А значит, значение other — это смесь, и по нему нельзя судить об отдельном приёмнике из хвоста списка.
Что делает Хаб. Не пишет: слушателя метрик мы не настраиваем.

Если настроим, список стоит собирать из парка автоматически — приёмники, дающие основную долю трафика, у нас известны, и сто имён с запасом покрывают всё, что имеет смысл разбирать поимённо.

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

Список короткий и осмысленный, а не полный:

Что Замечание
формат текстовый файл, по имени на строку
потолок сто уникальных имён
не попавшие получают метку other, из метрики не исчезают

Строка бесполезна без track-time-first-attempt.

Потолок в сто имён, метка other для остальных и условие «только при включённом подсчёте» — из руководства (§ 3.3.25.1). Объяснение, почему потолок вообще есть, — наше.
Пример в конфигурации
# поимённо — только те, кого разбирают; остальные в other
track-time-first-attempt true

<prometheus-listener 0/0:9090>
    time-first-attempt-domains-file /etc/pmta/tfa-domains.txt</prometheus-listener>
В файле — по имени приёмника на строку. Список стоит держать коротким: сто имён это потолок, а не цель.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Кладут в файл весь список приёмников парка

§ 3.3.25.1

Чем чреватоСверх ста имён работать не будет, а каждое имя в метрике — это отдельный ряд. Хранилище метрик раздувается, а разбирают всё равно единицы.
Как заметитьВ файле сотни строк, в метрике сто меток и other.
Как правильноОставить тех, кто даёт основную долю трафика и кого действительно разбирают.

Судят об отдельном приёмнике по значению other

наш опыт

Чем чреватоЭто смесь всех, кто не попал в список. Величина по ней ничего не говорит о конкретном приёмнике.
Как заметитьЗадержка в other выросла, а какой приёмник виноват — неизвестно.
Как правильноДобавить подозреваемых в файл и подождать новых данных.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
time-first-attempt-domains-file <path>
Значения
путь к текстовому файлу; в нём по имени приёмника на строку, не более ста
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<prometheus-listener>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследования нет: строка живёт внутри <prometheus-listener>, а такой блок на узле может быть только один. Значит, и список приёмников для метрики на узле один.
Как проверить на узле
Смотрим саму метрику — по меткам сразу видно, кто попал в список:
curl -s http://NODE:9090/metrics | grep pmta_smtp_first_attempt_seconds
Метки с именами приёмников означают, что файл прочитан. Только domain=”other” — файл не задан, не найден или подсчёт выключен.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Разобраться с доставляемостью · Собрать телеметрию