Состояние сайтов и SEO
Следите за сайтами пакетно, один монитор на сайт: получайте уведомление, когда
сайт ломается (ошибка, недоступность, недействительный сертификат, цикл
перенаправлений), когда его страница становится пустой, когда он выпадает
из поисковых систем (noindex, robots.txt, блокирующий всё) и когда
меняются метаданные, которые показывает Google (заголовок, описание,
canonical URL, конечный адрес). Каждый сайт также относится к платформе, на
которой он работает (WordPress, Shopify, Wix, Next.js…).
Если нужно содержимое страницы, а не её состояние, см. Изменения на сайтах.
Настройка
Заголовок раздела «Настройка»- В адресе вставьте страницу для проверки, обычно главную, с https:// или без. Перенаправления отслеживаются: http на https и example.com на www.example.com — это норма, сообщается только о цикле перенаправлений или переходе на другой адрес.
- При желании заполните «Expected text» фразой, которая всегда должна присутствовать на странице, и настройте «Blank page below», если страница намеренно короткая.
- Первая проверка записывает эталон: конечный адрес, заголовок, описание, canonical URL, правила индексации. Они сравниваются снова каждые 6 часов по умолчанию («Check for changes every»), тогда как доступность проверяется на каждом интервале опроса. Об изменении сообщается, только когда его увидели две проверки подряд, поэтому A/B-тесты и капризные кэши не вызывают шума.
- Чтобы добавить много сайтов сразу, импортируйте CSV-файл из списка мониторов: каждый сайт помещается в
Websites/<platform>(WordPress, Shopify…), если вы не укажете папку.
Что делает каждая проверка
Заголовок раздела «Что делает каждая проверка»На каждом интервале опроса (по умолчанию 60 с) страница читается один раз:
- Перенаправления отслеживаются одно за другим, до Max redirects (по
умолчанию 10), и цепочка записывается: каждый адрес и его статус. Переход с
http://наhttps://или сexample.comнаwww.example.com— то, что делает большинство сайтов, и никогда не является ошибкой. Перенаправление, возвращающееся на уже виденный адрес, — это цикл, а превышение допустимого числа перенаправлений тоже ошибка: в обоих случаях проверка завершается неудачей с цепочкой в сообщении, как для сайта, который не отвечает. - Конечный ответ: его HTTP-статус, общее время (с перенаправлениями) и TLS-сертификат, проверяемый так же, как это делает браузер. Отклонённый сертификат приводит к неудаче проверки.
- Видимый текст страницы, как в Изменения на сайтах: скрипты, стили и скрытые блоки исключаются. Если символов меньше, чем Blank page below (по умолчанию 20, чтобы короткие легитимные страницы проходили), страница считается пустой. При заданном Expected text эта фраза должна в нём присутствовать (регистр и пробелы игнорируются).
- SEO-метаданные конечной страницы:
<title>, meta description, canonical URL, мета-теги robots и заголовкиX-Robots-Tag(noindex,nofollow,none),og:title,og:description,<html lang>, число<h1>и альтернативhreflang. Директивы индексации и счётчики сообщаются при каждой проверке; сравнение метаданных с эталоном происходит только при проверках изменений, см. ниже. - При проверках изменений и не чаще раза в час —
robots.txtконечного сайта: запрещает ли он Googlebot (или*) обходить/? И карта сайта, о которой он сообщает, или/sitemap.xml: отвечает ли она и читается ли как карта сайта?
User-Agent — DumbMonit/<version>, если User agent не задаёт иное.
Изменения, подтверждённые дважды
Заголовок раздела «Изменения, подтверждённые дважды»Конечный адрес и метаданные сравниваются с эталоном, но не при каждой проверке:
только при проверках изменений, каждые Check for changes every минут (по
умолчанию 360, то есть 6 часов; DUMBMONIT_WEBSITE_CHANGE_CHECK_MINUTES задаёт
значение по умолчанию для всего сервера, 0 сравнивает при каждой проверке).
Доступность, пустая страница и ожидаемый текст по-прежнему читаются на каждом
интервале опроса.
Другое значение, увиденное при проверке изменений, пока только ожидает
подтверждения; ближайшая следующая проверка (через один интервал опроса, а не
через 6 часов) смотрит на него снова, и оно становится изменением, если эта
проверка тоже его видит. Поэтому об изменении сообщается не позже чем через один
период изменений плюс один интервал опроса после его появления. Страница,
отдаваемая в двух версиях (A/B-тест), колеблющийся кэш или усечённый ответ
поэтому не вызывают шума. Значения сравниваются без учёта пробелов и регистра;
адреса игнорируют схему, ведущий www., завершающий / и, при включённом
Ignore query strings (по умолчанию включено), параметры URL, такие как
?utm_source=….
Подтверждённое изменение сохраняется в истории монитора (поле, до, после,
дата), а его индикатор (dumbmonit_website_title_changed…) остаётся равным 1 в
течение 24 часов. Первая проверка только записывает эталон. Смена адреса или
Ignore query strings начинает новый эталон, вместо того чтобы сообщать об
изменении.
Параметры
Заголовок раздела «Параметры»| Параметр | По умолчанию | Значение |
|---|---|---|
| Expected text | пусто | Фраза, которая должна присутствовать на странице. |
| Blank page below (characters) | 20 | Видимый текст короче этого значения — пустая страница; 0 отключает проверку. |
| Max redirects | 10 | Максимум отслеживаемых перенаправлений (от 0 до 30). |
| User agent | DumbMonit/<version> | Отправляется вместо собственного User-Agent DumbMonit. |
| Ignore query strings | on | Параметры URL не учитываются при сравнении адресов. |
| Check for changes every (minutes) | 360 | Как часто сравниваются метаданные, конечный адрес и robots.txt, от 0 до 10080; 0 означает при каждой проверке. Пусто: значение по умолчанию сервера (DUMBMONIT_WEBSITE_CHANGE_CHECK_MINUTES). |
| Wait before the next request to this domain (seconds) | 2 | Минимальный промежуток после проверки этого сайта перед другой проверкой того же домена, от 0 до 3600. Пусто: значение по умолчанию сервера (DUMBMONIT_WEBSITE_HOST_SPACING_SECS). |
| Allow loopback and link-local targets | off | Для сайта, который обслуживает сам хост DumbMonit. |
Темп для сотен сайтов
Заголовок раздела «Темп для сотен сайтов»Проверки никогда не уходят одним залпом, чтобы файрвол или CDN перед сайтами не принял DumbMonit за атаку:
- Распределение по интервалу: каждый сайт стартует в собственный фиксированный момент внутри своего интервала опроса, так что сайты, добавленные вместе (импорт CSV), не срабатывают в одну секунду.
- Глобальный предел: не более
DUMBMONIT_WEBSITE_MAX_CONCURRENTпроверок сайтов одновременно (по умолчанию 10), сверхDUMBMONIT_MAX_CONCURRENT_PROBES. - На домен: не более
DUMBMONIT_WEBSITE_MAX_PER_HOSTпроверок одновременно в сторону одного домена (по умолчанию 1) и не менееDUMBMONIT_WEBSITE_HOST_SPACING_SECSсекунд между двумя из них (по умолчанию 2, либо Wait before the next request to this domain сайта). Домен — это регистрируемое имя:www.example.com,shop.example.comиexample.comделят один,example.co.uk— один; клиентские поддомены хостинг-платформ (*.myshopify.com,*.wordpress.com,*.github.io,*.netlify.app…) считаются каждый отдельно.
Сайт, предыдущая проверка которого всё ещё ждёт своей очереди, пропускает раунд, а не встаёт в очередь дважды. Поэтому много сайтов на одном домене с коротким интервалом опроса проверяются реже, чем запрошено: увеличьте интервал или лимиты на домен, если список мониторов показывает их с опозданием. См. Конфигурация.
Определение платформы
Заголовок раздела «Определение платформы»Платформа определяется по порядку: по тегу <meta name="generator">, по
заголовкам, характерным для хоста или движка (x-shopify-*, x-wix-*,
x-drupal-cache, x-powered-by: Next.js…), по следам в разметке
(/wp-content/, cdn.shopify.com, data-wf-site, __NEXT_DATA__, /_nuxt/…)
и, наконец, по самому хосту (*.myshopify.com, *.wixsite.com…). Распознаются:
WordPress, Shopify, Wix, Squarespace, Webflow, Ghost, Drupal, Joomla,
PrestaShop, Magento, Next.js, Nuxt, Gatsby, Hugo, Jekyll; всё остальное —
Other. Платформа — это метка platform метрики dumbmonit_website_info.
Импорт списка сайтов (CSV)
Заголовок раздела «Импорт списка сайтов (CSV)»Из списка мониторов или со страницы добавления монитора Import websites (CSV) принимает файл или вставленный текст со строкой заголовка и не более чем 1000 строк:
| Столбец | Обязателен | Значение |
|---|---|---|
url | да | Адрес сайта. |
name | нет | Имя монитора; по умолчанию хост. |
folder | нет | Папка монитора; пусто: Websites/<platform>, определяется однократным чтением сайта. |
tags | нет | key=value;key=value. |
interval | нет | Интервал опроса. |
expect_text | нет | То же, что параметр. |
url,name,folder,tags,interval,expect_texthttps://example.com,Example,,client=acme,60s,Example Inc.https://shop.example.org,Shop,Customers/Acme,,300s,Add to cartПредварительный просмотр показывает каждую строку и её ошибки до того, как что-либо будет создано; уже отслеживаемый сайт (с тем же конечным адресом) пропускается.
Метрики
Заголовок раздела «Метрики»| Метрика | Значение |
|---|---|
dumbmonit_website_up | 1, когда конечный ответ успешен (2xx или 3xx), иначе 0. |
dumbmonit_website_status_code | HTTP-статус конечного ответа. |
dumbmonit_website_response_seconds | Общее время, включая перенаправления. |
dumbmonit_website_redirect_hops | Отслеженные перенаправления. |
dumbmonit_website_https | 1, когда конечный адрес использует https. |
dumbmonit_website_security_header{header} | 0/1 для каждой метки header (только https): HSTS, nosniff, CSP, X-Frame-Options, frame-ancestors. |
dumbmonit_website_info{platform} | Всегда 1; метка содержит платформу. |
dumbmonit_website_text_chars | Символов видимого текста (ответы 2xx). |
dumbmonit_website_blank | 1, когда этот текст ниже порога. |
dumbmonit_website_expect_text_missing | 1, когда ожидаемый текст отсутствует (параметр задан). |
dumbmonit_website_noindex / dumbmonit_website_nofollow | Директивы индексации. |
dumbmonit_website_h1_count / dumbmonit_website_hreflang_count | Заголовки <h1>, альтернативы hreflang. |
dumbmonit_website_title_changed, …_description_changed, …_canonical_changed, …_final_url_changed | 1 в течение 24 часов после подтверждённого изменения. |
dumbmonit_website_robots_blocks_all | 1, когда robots.txt запрещает всё для Googlebot. |
dumbmonit_website_sitemap_ok | 1, когда карта сайта отвечает и читается. |
Встроенные оповещения
Заголовок раздела «Встроенные оповещения»| Оповещение | Когда | Серьёзность |
|---|---|---|
| Monitor unreachable | Нет ответа, сертификат отклонён, цикл перенаправлений или слишком много перенаправлений | critical |
| Website down | Конечный ответ — ошибка 4xx или 5xx, в течение 3 минут | critical |
| Website page blank | Видимый текст ниже порога, в течение 3 минут | critical |
| Website expected text missing | Ожидаемый текст отсутствует, в течение 3 минут | warning |
| Website not indexable | noindex на странице, в течение 10 минут | critical |
| Website blocked by robots.txt | robots.txt запрещает всё, в течение 10 минут | critical |
| Website canonical URL changed | Подтверждённое изменение | warning |
| Website address changed | Конечный хост или путь изменились, подтверждено | warning |
| Website title or description changed | Подтверждённое изменение | info |
| Website slow | Более 5 секунд, в течение 10 минут | warning |
Проверка выполняется на самом сервере DumbMonit: она не может идти через relay-агент.