Keyword check: HTML-жауапта түйін сөзді тексеру

4 мин чтения
Обновлено 8 мая 2026

Keyword check — HTTP-мониторларға қосымша тексеру: статус-кодты бақылаумен қатар Tracker.ru жауаптың денесінде берілген подстрингті іздейді және URL-ды подстринг табылған кезде ғана жұмысқа жарамды деп санайды. Бет 200 OK қайтарған, бірақ күтілген сөз жоғалған болса — URL down күйіне ауысады және хабарламалар жіберіледі. Мұндай тексеру 200 коды болса да сәтсіз деп есептеледі: ол uptime пен Apdex-ті төмендетеді және статус-бетте көрінеді.

Бұл сервер техникалық тірі болғанда, ал контент бұзылған бір топ инциденттерді жабады: бос шаблон, деплойдан кейінгі ақ бет, reverse-proxy-ден заглушка, дефейс немесе істемейтін feature-flag панелі. Keyword check-сіз мұндай жағдайлар HTTP-мониторингтен үнсіз өтіп кетеді.

Keyword check қашан керек

  • Anti-deface. Подстринг — сайтта әрқашан болуға тиіс ерекше мәтіннің фрагменті (мысалы, подвалдағы copyright). Шабуылшы басты бетті ауыстырса — keyword табылмайды, алерт кетеді.
  • Feature-flag SLO. Бетте Feature: enabled сияқты маркер бар. Feature flag сынғанда және бет маркерсіз 200 қайтарғанда — мониторинг регрессияны ұстайды.
  • 200-де шаблонды бақылау. Кэш ескірген HTML берді, фронтенд сынды, бірақ статус әлі 200 — күтілетін блоктағы keyword (пайдаланушы аты, нав-меню, нақты тақырып) бірден бір нәрсе дұрыс емес екенін айтады.
  • Status page. Жұртшылыққа арналған status-page-те «All systems operational» сияқты сөз тіркесі болады. Осы тіркес бойынша keyword-check оны «бәрі дұрыс па» мониторына айналдырады.
  • Деплой нұсқасының маркері. Footer-де немесе meta-тегте нұсқа нөмірі (v1.42.0). Деплой өтпей кетсе — нұсқа жаңартылмаса — алерт.

Қалай баптау керек

URL өңдеу формасында «Keyword» өрісін толтырыңыз. 255 таңбаға дейін кез келген подстрингті енгізуге болады: фраза, HTML-разметка фрагменті, footer-дан мәтін, CSS класының аты — күтілетін бетте міндетті түрде кездесетін кез келген нәрсе.

API арқылы:

curl -X POST https://tracker.ru/api/v1/urls \
  -H "Authorization: Bearer <api_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/status",
    "monitor_type": "http",
    "period": 60,
    "expected_keyword": "All systems operational"
  }'

Ұзындық лимиті — 255 таңба. Бұл ерекше фрагмент үшін жеткілікті; бүкіл HTML-ды өріске тықпаңыз — фронтендіңіз жұмыс істеп тұрған нұсқада көрсетуге кепілдік беретін минималды-жеткілікті подстрингті сақтаңыз.

Іске қосылу логикасы

Түйін сөз берілген әрбір HTTP-тексеру схема бойынша өңделеді:

  1. Чекер HTTP-сұрау жасайды.
  2. Жауапты алады, денесін оқиды (төмендегі шектеулерді ескере отырып).
  3. Денеде подстрингті іздейді — case-insensitive substring match.
  4. Подстринг табылмаса — тексеру «Түйін сөз табылмады» себебімен сәтсіз деп белгіленеді. URL down күйіне ауысады, ал тексерудің өзі uptime пен Apdex-ті төмендетеді және статус-бетте көрінеді.
  5. Подстринг қайта пайда болғанда — URL қалпына келеді, қалпына келу хабарламасы жіберіледі.

Тексерулер журналында мұндай тексерудің астында Expected keyword not found: <сіздің сөзіңіз> қате мәтіні шығады — осы жол арқылы URL жауап коды бойынша емес, сөз жоғалғандықтан құлағанын көруге болады.

Техникалық нюанстар

  • HEAD → GET автоматты ауысу. Әдепкі бойынша Tracker.ru HEAD HTTP-әдісін қолданады — ол тексерілетін сайт үшін жылдамырақ және арзанырақ. Бірақ HEAD-жауапта body жоқ, онда keyword іздейтін ештеңе жоқ. Сондықтан түйін сөз берілсе, чекер әдісті автоматты түрде GET-ке ауыстырады. Пайдаланушы жағында ешқандай баптау қажет емес. Формада HEAD айқын таңдалса — ол еленбейді және осы URL үшін GET-пен ауыстырылады.
  • Case-insensitive. Іздеу регистрге сезімтал емес. Екі жағы — keyword пен жауап денесі — салыстыру алдында кіші регистрге келтіріледі. Яғни Operational, operational, OPERATIONAL — бір нәрсе. Ыңғайлы: тақырып регистрін кездейсоқ ауыстырғанда сынбайды.
  • Plain substring, regex емес. Өрістің мәні — қарапайым жол. Метасимволдар, топтар, якорлар жоқ. Подстрингтің әріпті көрінісі ізделеді. Regex қажет болса — keyword-check сізге сай емес, кастом webhook-чекерлерге не health-эндпоинтке қараңыз.
  • Body 1 MB лимиті. Чекер жауаптың тек алғашқы мегабайтын оқиды. Keyword іздеу осы мегабайтта ғана жүреді. HTML-ыңыз 1 MB-тан үлкен болса — күтілетін сөзді бет басына жақын қойыңыз (<head>-те немесе <body>-дан кейін бірден), әйтпесе ол лимиттен тыс болып, URL үнемі жалған «түйін сөз табылмады» алертін береді. Іс жүзінде 1 MB — бір бет үшін өте көп, мәселе сирек туындайды.
  • UTF-8. Кириллица, қытайдың иероглифтері, эмоджи keyword-те қолдау табады — салыстырылатын екі байт ағыны UTF-8 жолы ретінде өңделеді. Keyword ұзындығының лимиті таңбамен өлшенеді (көп байттық таңбаларды қоса), байтпен емес. Көптеген практикалық сценарийлер үшін 255 таңба жеткілікті.
  • TCP-мониторингпен үйлесімділік. «Keyword» өрісі тек HTTP-мониторлар үшін қолжетімді. TCP-чектер үшін еленбейді — TCP-да body жоқ, іздейтін жер жоқ. Толығырақ — /docs/features/tcp-monitoring?lang=kk.

Хабарламалар

Keyword жоғалғанда таңдалған арналарға себебін айқын көрсететін хабарлама кетеді — ол әдеттегі «status 5xx» алертінен ерекшеленеді. Хабарламалар интерфейс тіліне қарамастан орыс тілінде жіберіледі; Telegram-дағы хабарлама осылай көрінеді (аударма):

🚨Қателік! https://example.com/status
Қателік: Түйін сөз табылмады
Қолжетімсіз 2026-05-01 19:15:09 бастап

url.down оқиғасының webhook-payload-ында error_type өрісі keyword_not_found мәнін қабылдайды — бұл инцидент-flow-ды бөлуге ыңғайлы: keyword-құлаулар көбіне 5xx-тен басқа реакция түрін талап етеді (мысалы, SRE емес, фронтенд командасын шақыру).

Қалпына келгенде (keyword жауапқа қайтып келгенде) downtime ұзақтығын көрсететін әдеттегі recovery-хабарлама келеді.

Байланысты мақалалар