Границы материала

Я описываю рабочий порядок для Plesk Obsidian for Linux и Zabbix 7.0 LTS. Имена служб, PHP handlers, точки монтирования, интервалы и пороги всегда сверяю с конкретным сервером до применения.

Официальная документация и доступность URL проверены 2026-09-04. Область статьи — Plesk Obsidian for Linux и поддерживаемая ветка Zabbix 7.0 LTS. Статья не предполагает, что у читателя уже установлена эта версия: перед настройкой я проверяю версии Plesk, ОС, Zabbix server/proxy/agent 2, шаблонов, СУБД и PHP, а также фактическую топологию nginx, Apache и PHP-FPM.

Введение

Когда панель Plesk открывается, это ещё не доказывает, что пользователь получает сайт. И наоборот: сайт может отвечать из кэша, пока control plane, почта, cron или резервное копирование уже требуют вмешательства. Поэтому я разделяю внешний результат и внутренние причины. Независимый Zabbix-проверяющий идёт по цепочке DNS → TLS → HTTP → приложение, а агент на Linux объясняет состояние web stack, PHP-FPM, базы, хранилища, почты и фоновых задач.

Я с командой использую эту же наблюдаемость для подготовки переноса. До копирования фиксируем состав subscriptions, PHP handlers, systemd units, mountpoints и внешние зависимости; после копирования теми же проверками сравниваем старый и новый origin. Такой подход не превращает Plesk control plane в главный индикатор доступности и не позволяет зелёному процессу скрыть ошибку пользователя.

Ниже — проектная спецификация, а не импортируемый шаблон. Я закрепляю документацию на Zabbix 7.0 LTS, но сначала подтверждаю фактически установленную поддерживаемую версию. Пути, unit names, MTA, СУБД и схема nginx/Apache различаются; все placeholders заменяются только после инвентаризации и проверки прав.

К разделу: Monitoring | Plesk Obsidian documentation; (Plesk for Linux) Monitoring Plesk Services With Watchdog | Plesk Obsidian documentation; Web monitoring items | Zabbix documentation 7.0; Introduction | Plesk Obsidian documentation

1. Начинаю с инвентаризации Plesk Obsidian for Linux

Я строю карту не по названию панели, а по обслуживаемым контрактам. Для каждой subscription фиксирую домены и aliases, document root, IP-привязку, сертификат, DNS ownership, PHP version и handler, базы и пользователей, почтовые домены, scheduled tasks, backup policy и внешние интеграции. Отдельно отмечаю server-wide настройки: repositories, firewall, fail2ban, custom service configuration, extensions и всё, что не относится к переносимому контенту subscription.

На Linux я сверяю реальные процессы и units. В одном окружении домен идёт nginx → Apache → PHP-FPM, в другом nginx обслуживает FPM напрямую; dedicated FPM создаёт отдельные pools. Наличие nginx или Apache в списке процессов само по себе не раскрывает маршрут конкретного vhost. Я связываю domain → listener → vhost → upstream/socket → handler и только затем создаю items.

Безопасная первичная сверка выполняется командами чтения: plesk version; plesk bin subscription --list; plesk bin php_handler --list; systemctl --type=service --state=running; findmnt --output TARGET,SOURCE,FSTYPE,OPTIONS; df -hT; df -ih. Вывод может содержать внутренние имена, поэтому в статью и историю item его целиком не отправляю. Команды не меняют конфигурацию, но требуют разрешённого административного scope.

К разделу: System Services | Plesk Obsidian documentation; Choosing the PHP Handler | Plesk Obsidian documentation; subscription: Subscriptions | Plesk Obsidian CLI Reference for Linux; php_handler: PHP Handlers | Plesk Obsidian CLI Reference for Linux

2. Развожу внешний контроль, Plesk Monitoring и Watchdog

Plesk Monitoring полезен для ресурсов сервера, а Watchdog на Plesk for Linux способен наблюдать службы и диски, уведомлять и при настройке перезапускать службы. Я рассматриваю их как локальные инструменты, а не как замену независимому Zabbix. Если сервер, сеть или сама панель недоступны, внешний наблюдатель всё равно должен увидеть пользовательский отказ.

Control plane получает отдельную проверку панели: DNS/TLS/HTTP с разрешённой точки и без попыток входа. Сайты получают собственные web scenarios. Зависимость события панели от узловой недоступности может убрать шум, но событие публичного сайта я не делаю симптомом панели: неисправность Plesk не обязана означать outage сайта, а исправная панель не подавляет пользовательскую недоступность.

Автоматический restart в Watchdog включаю только после отдельного решения: понятна причина, ограничена частота, есть журналирование и исключён restart loop. Для Zabbix в этой схеме базовый режим — оповещение и диагностика. Изменяющие действия не маскируют первичный сигнал и не запускаются из примеров статьи.

К разделу: Monitoring | Plesk Obsidian documentation; (Plesk for Linux) Monitoring Plesk Services With Watchdog | Plesk Obsidian documentation; Web monitoring items | Zabbix documentation 7.0

3. Узел, файловые системы и systemd: сначала данные, затем пороги

Для каждого значимого mountpoint собираю bytes и inode отдельно. Штатные agent keys vfs.fs.size[{#FSNAME},free], vfs.fs.size[{#FSNAME},pused], vfs.fs.inode[{#FSNAME},pfree] дают разные типы и единицы; я не смешиваю байты, проценты и количество inode. Discovery фильтрую по реально используемым локальным и сетевым файловым системам и отмечаю назначения: web, mail, database, logs, backup repository и временное пространство Migrator.

Для Agent 2 использую подтверждённую схему systemd.unit.info[<unit>,ActiveState]: item имеет тип значения Text и получает строку. Для ActiveState документация перечисляет active, reloading, inactive, failed, activating, deactivating; только их включаю в value map, оставляя неизвестную строку видимой для диагностики. Это не числовой state из JSON ключа systemd.unit.get. Unit names сначала получаю из inventory; nginx.service — пример, а не универсальное имя. Проверка zabbix_agent2 -t 'systemd.unit.info[nginx.service,ActiveState]' допустима только после подтверждения бинарника и unit, ничего не меняет.

Collection interval и freshness — разные условия. Значение может быть последним известным и выглядеть нормальным после остановки collector. Поэтому отдельно проверяю supported state/item error и nodata() с macro, превышающей нормальный интервал и допустимую задержку proxy. Порог диска задаю парой абсолютного остатка и процента, а окно и значения macros получаю из baseline роста, политики capacity и времени на реакцию, без универсальной магической цифры.

К разделу: Zabbix agent | Zabbix documentation 7.0; Zabbix agent 2 | Zabbix documentation 7.0

4. Внешняя цепочка DNS → TLS → HTTP → приложение

Пример PHP-сайта: браузер обращается к веб-серверу по HTTP, затем запрос идёт к PHP-FPM и DB; DNS/TLS отмечены у внешнего соединения, а Plesk и SMTP вынесены отдельно.
Для примера PHP-сайта я показываю путь от веб-сервера к PHP-FPM и DB; Plesk управляет сервером сбоку, а DNS/TLS не изображены отдельным транзитным узлом.

Web scenario запускаю с независимого Zabbix server или proxy, который не находится на самом Plesk-узле. Для каждого шага фиксирую URL, expected status codes, required string и timeout. Сохраняю стандартные items сценария: response time, response code и failed step. 200 без устойчивого маркера может быть страницей заглушки, ошибкой неверного vhost или ответом CDN; required string выбираю стабильную и не содержащую персональные данные.

TLS не отключаю. Для проверки нового origin до DNS switch использую документированный curl --resolve: curl --fail-with-body --show-error --silent --resolve 'www.example.test:443:192.0.2.20' 'https://www.example.test/health-page'. www.example.test и 192.0.2.20 — placeholders. URL сохраняет hostname, поэтому curl передаёт правильный Host и SNI и проверяет сертификат; -k/--insecure не применяю. Endpoint выбираю read-only, а ответ проверяю по status и содержимому.

Accepted DNS change не равен фактическому маршруту. Я отдельно наблюдаю authoritative answers, несколько recursive perspectives, A и AAAA. IPv6 способен оставить часть пользователей на старом origin, даже когда A уже изменён. External outage остаётся самостоятельным событием: зависимости могут приглушить вторичные PHP/DB симптомы, но не должны скрывать сам пользовательский отказ.

К разделу: Web monitoring items | Zabbix documentation 7.0; curl man page — --resolve

5. Web stack и PHP-FPM: процесс жив, приложение не отвечает

Zabbix сопоставляет внешний HTTP-ответ с состоянием PHP-FPM, базы, возрастом почтовой очереди и свободными inode.
Живой процесс ещё не доказывает доступность сайта: я проверяю внешний ответ и сопоставляю его со свежими внутренними сигналами.

Я проверяю варианты маршрута отдельно: nginx → Apache → PHP-FPM и nginx → PHP-FPM. Для каждого домена подтверждаю Plesk PHP handler. Переключение handler или схемы обслуживания — изменение конфигурации вне диагностики; его сначала проверяют на изолированном новом origin. При nginx-served FPM отдельно тестирую правила, которые раньше зависели от .htaccess, потому что nginx их не интерпретирует.

Уровень процесса включает ActiveState units, proc count и ресурсы, но пользовательский контракт подтверждает только HTTP. Если включён локально защищённый FPM status endpoint, собираю active processes, idle processes, текущий listen queue и накопительный max children reached: последний равен нулю, пока лимит процессов ни разу не достигался, и становится не меньше единицы после достижения. Из Text/JSON master зависимыми items извлекаю неотрицательные Numeric values. Для накопительного счётчика строю delta/rate или тревогу по приросту за окно, а не вечное условие >0; уменьшение после рестарта pool считаю reset и не трактую как отрицательную нагрузку. Не делаю curl напрямую к Unix socket FPM: это FastCGI, не HTTP. Status endpoint публиковать наружу нельзя; доступ ограничивается loopback или доверенным collector через правильно настроенный web-server location.

Диагностическая корреляция выглядит так: процесс active, но required string отсутствует; одновременно растут HTTP latency и FPM listen queue — вероятно насыщение или застрявшие workers. Если FPM спокойно отвечает, а DB latency растёт, иду к базе. Это не автоматический диагноз: событие показывает совпавшие сигналы, а operator проверяет логи и изменения.

К разделу: Choosing the PHP Handler | Plesk Obsidian documentation; Zabbix agent 2 | Zabbix documentation 7.0; PHP: Status Page - Manual

6. База данных: официальный template и минимальные права

Для MySQL/MariaDB или PostgreSQL выбираю официальный Zabbix integration/template, совместимый именно с Zabbix 7.0 LTS, Agent 2/plugin и установленной СУБД. MySQL и MariaDB не считаю полностью взаимозаменяемыми без проверки требований template. Мониторинговая учётная запись получает только права, перечисленные официальным template; сетевой доступ ограничивается нужным host/socket, а секрет хранится в защищённой конфигурации или secret macro, не в item key, argv или статье.

Минимальная карта включает availability, лёгкий read-only connect/query, connections и лимит, running threads, slow/long queries и locks по поддерживаемой схеме, размер данных и признаки I/O. Репликационные items добавляю только при реальной репликации. Data type и units задаю явно: connections — unsigned count, latency — seconds или milliseconds с одним соглашением, utilization — numeric float в процентах.

До переноса фиксирую engines, encodings/collations, extensions и server modes. Число баз и таблиц — контроль полноты, но не доказательство согласованности. Живой datadir через rsync не копирую: для БД применяю поддерживаемый механизм Plesk Migrator или согласованный backup/replication workflow с точкой консистентности и отдельной проверкой восстановления.

К разделу: MySQL monitoring and integration with Zabbix; PostgreSQL monitoring and integration with Zabbix

7. Почта и cron: считаю не только очередь, но и возраст

Plesk for Linux может использовать разные поддерживаемые MTA/IMAP-компоненты, а почта домена может быть внешней. Поэтому я сначала определяю реальный authoritative mail route, MX и владельца сервиса. Для локальной почты наблюдаю systemd units, SMTP/IMAP TLS с разрешённых точек, queue count, oldest message age и ошибки доставки. Большая очередь после рассылки и одна старая застрявшая запись — разные ситуации; count без oldest age недостаточен.

Парсер очереди — custom item, если официального штатного ключа нет. Я прямо помечаю custom.mail.queue.count и custom.mail.queue.oldest_age как проектные ключи обёртки, фиксирую MTA/version, код возврата, тип Numeric (unsigned) и единицы messages/seconds. Обёртка работает с минимальными правами, не печатает адреса и темы и становится unsupported при ошибке разбора, а не возвращает ложный ноль.

Для каждого критичного cron/scheduled task нужен контракт run/result/freshness. Custom wrapper сохраняет timestamp последнего запуска, нормализованный неотрицательный exit status и timestamp последнего успеха в защищённом state-файле; Zabbix читает только эти поля. custom.cron.last_run, custom.cron.last_result, custom.cron.last_success_age — проектные custom keys, не штатные agent items. nodata() проверяет доставку, а age — давность успеха; это разные тревоги.

К разделу: System Services | Plesk Obsidian documentation; Zabbix agent | Zabbix documentation 7.0

8. Резервные копии: last success не заменяет restore proof

Я собираю результат последней backup job, время успешного завершения, возраст, ожидаемое назначение и доступность repository. Custom collector не объявляю штатным ключом Zabbix. Если он читает логи или метаданные Plesk, схема фиксируется для конкретной версии, ошибки парсинга переводят item в unsupported, а чувствительные имена не уходят в history.

Файл ожидаемого размера и статус success подтверждают только этап создания. Доказательство восстановления — отдельная периодическая restore verification в изолированное место: открыть выбранные файлы, восстановить тестовую базу под другим именем, выполнить read-only проверки и удалить тестовые ресурсы по одобренной процедуре. Статья не даёт production-команд restore, потому что они зависят от хранилища и могут перезаписать данные.

Для миграционного gate я требую свежий успешный backup и актуальное restore proof, но не обещаю, что backup автоматически покрывает server-wide конфигурацию, внешнюю почту или DNS. Эти области входят в inventory и отдельный план восстановления.

К разделу: Backing Up and Restoration | Plesk Obsidian documentation; Zabbix agent | Zabbix documentation 7.0

9. Карта items, freshness и триггеров Zabbix

Ниже я фиксирую интерфейс мониторинга. Строки custom.* — проектные ключи, которые нужно реализовать и проверить отдельно; остальные сопоставляю с документацией Zabbix 7.0. Макросы порогов и окон заполняю по baseline конкретной системы. Items supported и freshness проверяются отдельно от значения, чтобы ошибка collector не стала нулём.

Примеры выражений используют placeholder host PLESK-LINUX; при переносе их заменяет реальное имя template/host. Выражение внешнего outage не ставлю в зависимость от Plesk panel. Симптомы PHP/DB можно сделать зависимыми от доказанной недоступности узла или collector: пока parent в PROBLEM, dependent trigger не переоценивается, его состояние не меняется, actions не выполняются и notifications не отправляются; после выхода parent из PROBLEM нужна новая метрика dependent item, поэтому обновление может быть не мгновенным. Такая dependency не исправляет данные и не должна скрывать самостоятельный внешний outage сайта.

Матрица элементов

Endpoint processKeyTypeData typeUnitsCollection freshnessContract

External HTTPS / public FQDN

web.test.rspcode[Public site,Homepage] / web.test.time[Public site,Homepage,resp] / web.test.fail[Public site]

Web scenario items

Numeric (unsigned) / Numeric (float) / Numeric (unsigned)

code / s / step

{$WEB.INTERVAL}; nodata отдельно

status + required string + time + failed step

Linux mountpoint

vfs.fs.size[{#FSNAME},free] / vfs.fs.size[{#FSNAME},pused] / vfs.fs.inode[{#FSNAME},pfree]

Zabbix agent items

Numeric (unsigned) / Numeric (float) / Numeric (float)

B / % / %

{$FS.INTERVAL}; discovery lifetime согласовать

bytes и inode для каждого значимого mountpoint

systemd unit

systemd.unit.info[{#UNIT.NAME},ActiveState]

Zabbix agent 2 item prototype

Text

state

{$UNIT.INTERVAL}; unsupported и nodata отдельно

raw ActiveState string; map only active/reloading/inactive/failed/activating/deactivating

PHP-FPM protected status

custom.php_fpm.status[{#POOL}]

HTTP agent or custom-agent master; dependent items

master Text containing JSON; dependents Numeric (unsigned)

requests / processes

{$FPM.INTERVAL}; schema error=unsupported

current listen queue and active/idle processes; cumulative max children reached with reset-aware delta/rate

MySQL/MariaDB or PostgreSQL

official template/plugin items

Zabbix agent 2 plugin items

Numeric (unsigned) / Numeric (float)

connections / s / %

{$DB.INTERVAL}; plugin error отдельно

read-only availability, load and locks

Actual MTA queue

custom.mail.queue.count / custom.mail.queue.oldest_age

Custom Zabbix agent items

Numeric (unsigned)

messages / s

{$MAIL.INTERVAL}; parse error=unsupported

project keys: count AND age without message data

Critical cron task state

custom.cron.last_run / custom.cron.last_result / custom.cron.last_success_age

Custom Zabbix agent items

Numeric (unsigned) / Numeric (unsigned) / Numeric (unsigned)

unixtime / normalized exit status / s

{$CRON.INTERVAL}; nodata отдельно

project keys: run, nonnegative result and freshness

Plesk backup metadata

custom.plesk.backup.last_success_age / custom.plesk.backup.last_result

Custom Zabbix agent items

Numeric (unsigned) / Numeric (unsigned)

s / normalized nonnegative status

{$BACKUP.INTERVAL}; parser health отдельно

project keys: job success plus separate restore proof

Матрица триггеров

EventExpression exampleThreshold policyDependencyVerification

Web scenario не проходит три проверки подряд

min(/PLESK-LINUX/web.test.fail[Public site],#3)>0

#3 — пример числа повторений, не длительное окно; interval и число повторов — policy/baseline

не подавлять состоянием Plesk panel

web.test.fail=0 при успехе и номер failed step >0 при ошибке; все три последних значения должны быть >0; nodata и supported проверяются отдельно

Нет свежих данных systemd item

nodata(/PLESK-LINUX/systemd.unit.info[nginx.service,ActiveState],{$UNIT.NODATA})=1

{$UNIT.NODATA} > interval + proxy delay

может зависеть от agent/proxy unavailable

сначала supported/last error, затем unit inventory

Устойчивая нехватка свободных inode

max(/PLESK-LINUX/vfs.fs.inode[/var,pfree],{$FS.WINDOW})<{$FS.INODE.PFREE.MIN}

окно и порог macro по baseline роста и времени реакции; универсального порога нет

не заменять проверкой свободных bytes

все имеющиеся значения в окне ниже порога; наличие, свежесть и достаточное число измерений проверяются отдельно; затем findmnt/df -ih и источник роста

К разделу: Trigger expression | Zabbix documentation 7.0; Trigger dependencies | Zabbix documentation 7.0; Web monitoring items | Zabbix documentation 7.0

10. Pre-check Migrator и матрица совместимости

До первого копирования я запускаю предусмотренный Plesk Migrator pre-check и разбираю каждое предупреждение. Сверяю поддерживаемые source/target platforms, версии Plesk, ОС, extensions, PHP versions/handlers, databases, disk capacity, network reachability и требуемые credentials. Новый сервер держу изолированным от публичного трафика и исходящей почты, пока проверки не завершены.

Migrator переносит выбранные accounts/subscriptions и их контент, а для некоторых пар Plesk также предлагает отдельные категории server-wide settings, но не является клоном сервера. По документации отдельно фиксирую выбранные категории и проверяю непереносимые настройки и прочие исключения: установленные PHP handlers, Fail2Ban, ModSecurity, firewall, сторонние приложения/расширения, настройки вне выбранных объектов и внешние зависимости. Не формулирую собственный универсальный список — итоговый scope беру из параметров запуска, отчёта pre-check и документации для конкретной пары платформ.

Матрица содержит domain/subscription, PHP handler и extensions, web routing, DB engine/version/collation, mail location, DNS owner/A/AAAA/MX, certificates, scheduled tasks, mountpoints, backup target, external APIs и наблюдаемые проверки. Строка получает owner, evidence и решение: compatible, remediated, consciously excluded или blocker.

К разделу: Introduction | Plesk Obsidian documentation; Migrating via the Plesk Interface | Plesk Obsidian documentation; Choosing the PHP Handler | Plesk Obsidian documentation

11. Основная копия, final delta и один writer

Первичный перенос выполняю средствами Plesk Migrator в изолированную цель. После него сравниваю inventory и запускаю сайт через --resolve, не меняя публичный DNS. Повторная синхронизация Migrator полезна для изменившегося контента, но я не называю её транзакционной гарантией: отдельно планирую базы, uploads, mailboxes и очереди.

Для выбранного файлового каталога безопасная репетиция выглядит так: rsync -aHAXn --itemize-changes /source/path/ user@new-host:/destination/path/. -n означает dry-run; --delete отсутствует. Пути, trailing slash, ACL/xattrs и права проверяются заранее. Команду нельзя применять к datadir работающей СУБД, и она не обещает консистентность изменяемых файлов.

Перед final delta я закрываю новые writes согласованным способом: maintenance/read-only gate приложения, остановка только утверждённых workers или другой механизм владельца сервиса. В каждый момент writer один. Затем выполняется поддерживаемая дельта БД/файлов, отдельная mail delta с учётом очереди и доставки, контрольные суммы/счётчики по допустимой схеме и gate. Публичное переключение запрещено, если старый и новый узлы способны независимо принимать несогласованные записи.

К разделу: Migrating via the Plesk Interface | Plesk Obsidian documentation; rsync(1) manual page

12. Переключение DNS и проверка фактического маршрута

TTL уменьшаю заранее у authoritative DNS owner и жду прежний TTL перед cutover. Низкий TTL не делает обновление мгновенным: caches, клиенты и промежуточные системы могут удерживать старые ответы. Я документирую владельца зоны и точный набор записей, включая A, AAAA, CNAME, MX и связанные mail-настройки. Изменение принимает только уполномоченный владелец DNS.

Decision gate проверяет: pre-check закрыт; final delta завершена; один writer подтверждён; новый origin проходит TLS без отключения проверки, HTTP status/required string/time, PHP/DB/storage/mail/cron checks; backup свежий и restore proof актуален; rollback route согласован. Только после этого владелец меняет DNS.

После accepted change я проверяю authoritative answer и несколько recursive resolvers, но главным доказательством остаётся фактический traffic. На старом и новом origin наблюдаю access logs, writes, mail queue и ошибки. Остаточный трафик на старом сервере ожидаем до истечения caches; старый узел не выключаю и не делаю вторым writer.

К разделу: BIND 9 Administrator Reference Manual — Configuration Reference; curl man page — --resolve; Appendix A: Post-Migration Checks | Plesk Obsidian documentation

13. Откат после divergence — это работа с данными, а не только DNS

Возврат права записи на исходный сервер проходит через остановку записи, согласование данных и проверку; во время остановки запись не принимает ни один сервер.
Если на новом сервере появились записи, я сначала останавливаю запись, выполняю согласование данных и проверку и только затем возвращаю право записи при откате.

Критерии rollback определяю до переключения: неустранимый пользовательский outage, нарушение целостности данных, критическая несовместимость или невозможность удержать единственного writer. Если новых записей на новом узле ещё нет, возврат проще: остановить новые writes, подтвердить отсутствие divergence, вернуть writer ownership старому и только затем вернуть маршрут.

Если новые записи уже появились, безопасного автоматического отката DNS нет. Сначала останавливаю writes на новом, диагностирую различия, выбираю согласованную reverse delta или reconciliation для БД, uploads и mail, проверяю полноту и только затем назначаю writer старому узлу. Два активных writer запрещены. Иногда безопаснее устранить неисправность на новом сервере, чем возвращать трафик с потерей данных.

Возврат DNS также проверяю по authoritative/recursive answers, A и AAAA и остаточному traffic. Старый сервер сохраняет мониторинг, конфигурацию и данные до завершения окна приёмки; его удаление не является частью rollback и выполняется позже отдельным change.

К разделу: BIND 9 Administrator Reference Manual — Configuration Reference; Appendix A: Post-Migration Checks | Plesk Obsidian documentation; rsync(1) manual page

14. Приёмка: теми же сигналами доказываю результат

После переключения мы с командой идём снаружи внутрь: authoritative и recursive DNS; TLS/SNI и redirect chain; web scenario со status, required string, response time и failed step; новый origin через --resolve; web stack и PHP-FPM; read-only DB check; bytes/inodes; mail delivery и queue count/oldest age; cron run/result/freshness; backup job и restore evidence. Затем сверяем post-migration checks Plesk по сайтам, почте, DNS, базам и системным пользователям.

Параллельно проверяю здоровье самого мониторинга: Agent 2 items supported, нет неожиданных nodata, clocks/proxy queue в допустимом состоянии, custom parsers возвращают ошибки как unsupported, а не как нули. Dependencies уменьшают каскад уведомлений, но корневые события пользователя, единственного writer и свежести данных остаются видимыми.

Для меня качественный перенос завершён не в момент изменения DNS, а когда новый маршрут, данные и побочные системы подтверждены, старый traffic сошёл, а команда может выполнить согласованный rollback без split-brain. Если не получается самостоятельно настроить мониторинг Plesk в Zabbix или подготовить безопасный перенос сайтов, обращайтесь ко мне: [Telegram @ITfresh_Boss](https://t.me/ITfresh_Boss), [+7 903 729-62-41](tel:+79037296241), [ITfresh.ru](https://itfresh.ru/).

К разделу: Appendix A: Post-Migration Checks | Plesk Obsidian documentation; Trigger dependencies | Zabbix documentation 7.0

Источники и границы применимости

  1. System Services | Plesk Obsidian documentationPlesk показывает установленные system services и позволяет управлять поддерживаемыми службами; Фактический набор служб зависит от сервера
  2. Monitoring | Plesk Obsidian documentationPlesk Monitoring наблюдает ресурсы сервера; Локальный мониторинг дополняется внешней проверкой пользовательского пути
  3. (Plesk for Linux) Monitoring Plesk Services With Watchdog | Plesk Obsidian documentationWatchdog применим к Plesk for Linux; Watchdog может следить за службами и дисками, уведомлять и при настройке перезапускать службы
  4. Choosing the PHP Handler | Plesk Obsidian documentationPlesk поддерживает несколько PHP handler modes; FPM может обслуживаться через Apache или nginx; Совместимость правил .htaccess различается для вариантов web routing
  5. Introduction | Plesk Obsidian documentationPlesk Migrator переносит выбранные accounts/subscriptions и контент; Миграция не равна полному клонированию сервера; Установленные PHP handlers, Fail2Ban, ModSecurity, firewall и другие Plesk service settings не переносятся
  6. Migrating via the Plesk Interface | Plesk Obsidian documentationИнтерфейс Migrator выполняет pre-migration checks; Можно выбрать переносимые объекты и повторно синхронизировать изменившийся контент; Для поддерживаемой миграции Plesk интерфейс может отдельно предложить перенос некоторых server-wide email, administrator profile и extension settings
  7. Appendix A: Post-Migration Checks | Plesk Obsidian documentationПосле миграции Plesk рекомендует проверить websites, mail, DNS, databases и system users
  8. Backing Up and Restoration | Plesk Obsidian documentationPlesk поддерживает backup и restoration; Backup может охватывать выбранные уровни и назначения
  9. Zabbix agent 2 | Zabbix documentation 7.0systemd.unit.info принимает unit, property и interface и возвращает String; Для ActiveState документация приводит значения active, reloading, inactive, failed, activating и deactivating; Числовое поле state вместе с text относится к JSON systemd.unit.get, а не к результату systemd.unit.info
  10. subscription: Subscriptions | Plesk Obsidian CLI Reference for LinuxLinux CLI Reference документирует plesk bin subscription --list как вывод списка subscriptions
  11. php_handler: PHP Handlers | Plesk Obsidian CLI Reference for LinuxLinux CLI Reference документирует plesk bin php_handler --list как вывод зарегистрированных PHP handlers
  12. Zabbix agent | Zabbix documentation 7.0Agent предоставляет vfs.fs.size и vfs.fs.inode с разными modes; Ключи filesystem возвращают bytes, проценты или inode в зависимости от mode
  13. Web monitoring items | Zabbix documentation 7.0web.test.fail имеет тип Numeric (unsigned), возвращает 0 при успешном выполнении всех steps и номер failed step при ошибке; Scenario steps поддерживают required status codes и required content, а response time и response code собираются отдельными items
  14. Trigger expression | Zabbix documentation 7.0min() возвращает минимум выбранной истории, поэтому min(values)>threshold означает, что все выбранные значения выше порога; max() возвращает максимум выбранной истории, поэтому max(values)<threshold означает, что все выбранные значения ниже порога; History functions принимают time period или число значений с префиксом #; nodata проверяет отсутствие данных
  15. Trigger dependencies | Zabbix documentation 7.0Пока parent trigger в PROBLEM, dependent trigger не меняет состояние, зависимые actions не выполняются и notifications не отправляются; Dependent trigger не переоценивается до выхода parent из PROBLEM и затем ждёт новую метрику, поэтому обновление может быть не мгновенным
  16. PHP: Status Page - Manuallisten queue — текущее число запросов, ожидающих свободный process; idle processes и active processes — текущие количества простаивающих и обрабатывающих запросы процессов; max children reached равно 0, пока предел процессов не достигался, и не меньше 1 после достижения
  17. MySQL monitoring and integration with ZabbixZabbix публикует официальный MySQL integration/template и требования к подключению
  18. PostgreSQL monitoring and integration with ZabbixZabbix публикует официальный PostgreSQL integration/template и требования к подключению
  19. curl man page — --resolve--resolve задаёт address для пары host:port без изменения DNS; URL hostname сохраняется для Host/SNI и проверки сертификата
  20. rsync(1) manual page-n/--dry-run выполняет trial run без изменений; --itemize-changes показывает планируемые изменения
  21. BIND 9 Administrator Reference Manual — Configuration ReferenceTTL определяет время кэширования DNS resource records; Authoritative данные и cached answers являются разными наблюдаемыми состояниями

Евгений Семёнов · IT Fresh

Если самостоятельно не сможете — обращайтесь ко мне

Помогу настроить мониторинг Plesk в Zabbix и подготовить безопасный перенос сайтов.

@ITfresh_Boss+7 903 729-62-41https://itfresh.ru/