Перейти к содержимому
Когда Status200 не получает данные

Когда Status200 не получает данные

Открыть в Markdown

Пока Status200 перезапускается, обновляется или разбирает накопившуюся очередь, ничто из того, что отправляют ваши агенты, коллекторы, зонды и отправители heartbeat, не может дойти до ваших мониторов. Status200 записывает, когда это происходит, и никогда не засчитывает это время против сервера, хоста или любого другого ресурса: это время не отслеживалось, поэтому это не простой.

Как это работает

Каждый процесс Status200, принимающий данные, каждые 30 секунд записывает, что он получает данные, пока может достучаться до баз данных, в которых хранит данные. Status200 не учитывает три вида времени:

  • Нет приёма: ни один процесс ничего не записывал дольше 90 секунд. Status200 был остановлен, перезапускался или обновлялся либо не мог достучаться до одной из своих баз данных.
  • Переподключение: первые 2 минуты после того, как Status200 снова получает данные, пока агенты переподключаются и отправляют то, что придержали.
  • Догоняние: пока очередь данных, ожидающих обработки, отстаёт больше чем на минуту, время с момента самых старых данных, всё ещё ждущих в ней.
flowchart TB receiving["Приём"] -->|"нет записи 90 секунд"| down["Нет приёма"] down -->|"процесс снова записывает"| grace["Переподключение 2 минуты"] grace --> again["Приём"]

Время, которое Status200 не учитывает

Перезапуск короче 90 секунд не является перерывом: коллекторы повторно отправляют то, что не смогли доставить.

Что меняется в это время

ГдеЧто делает Status200
Мониторы сервера / ВМIs Online считает только минуты, когда Status200 получал данные: по умолчанию сервер считается офлайн после 3 минут тишины, которую Status200 мог бы услышать.
Мониторы входящих запросов и входящей почтыRecieved In Minutes и Not Recieved In Minutes считают только минуты, когда Status200 получал данные. Когда такой критерий срабатывает, его причина сообщает, сколько из этих минут не учтено.
Мониторы хостов, Kubernetes, Docker, метрик, логов, трассировок и другие мониторы, читающие телеметриюПроверка, в окне которой есть время без приёма, ждёт, пока это время не покинет окно, и не дольше 15 минут после его окончания. До тех пор ничего не меняется: ни смены статуса, ни открытия или разрешения инцидента или оповещения. Пока очередь отстаёт, проверка читает до того места, где находится очередь, а не до текущего момента.
Хосты, кластеры и остальной инвентарьРесурс становится Отключено только после того, как его порог тишины, у большинства 15 минут, истечёт за время, когда Status200 получал данные.
Зонды и агенты ИИСтановятся Отключено после 3 минут тишины за время, когда Status200 получал данные.
Графики Доступность хостов, хостов Docker и Podman и кластеров KubernetesЭто время закрашивается как Не отслеживается, а линия там прерывается, вместо того чтобы падать до «недоступен». Значок uptime не учитывает это время; интервал с данными по-прежнему считается доступным.
Uptime на страницах состояния и SLOОба вычисляются из статусов мониторов: без ложной смены статуса нет ложного простоя.
Примечание

Не учитывать время — не значит заполнять его. Ресурс никогда не показывается доступным за время, когда Status200 не мог его услышать: это время просто не оценивается. Как только Status200 снова получает данные, ресурс, который действительно недоступен, с этого момента оценивается по тому, что он отправляет или не отправляет.

Самостоятельно размещённые установки

При запуске

Пока процесс Status200 запускается, он отвечает на любой запрос, кроме своих проверок состояния, кодом 503 Service Unavailable с Retry-After: 5, а браузер получает страницу, которая сама перезагружается. Коллекторы и SDK OpenTelemetry повторяют такой запрос, а не отбрасывают данные. /status/ready не проходит, пока процесс не готов, поэтому Kubernetes до этого не направляет на него трафик.

Реплики worker

Процесс записывает, что Status200 получает данные, только если до него может дойти входящий трафик. Если вы запускаете реплики, которые только обрабатывают очереди и перед которыми нет ingress, задайте на них RECEIVES_INGRESS_TRAFFIC значение false. Иначе они продолжают записывать, пока все реплики, принимающие трафик, не работают, и этот сбой снова засчитывается против ваших ресурсов. Helm-чарт уже задаёт это на своих worker-подах, а одному контейнеру Status200 ничего не нужно.

Контейнер workerYAML
env:
  - name: RECEIVES_INGRESS_TRAFFIC
    value: "false"

Что записывается

Status200 начинает вести эту запись, когда вы обновляетесь до версии, в которой она есть; время до этого оценивается как всегда. Пока ни один процесс не записывает, что получает данные, время с последней записи считается перерывом не дольше часа; после этого тишина снова учитывается, так что запись, которая перестала обновляться, не может надолго скрыть сбой ваших ресурсов. Записи хранятся 400 дней, а если Status200 не может их прочитать, он оценивает тишину так, будто всё время получал данные.

Следующие шаги