Перейти к основному содержимому

Алерты

Ниже — список алертов, которые рекомендуется настроить в рамках задач по мониторингу Time.

В примерах запросов (могут незначительно отличаться в зависимости от ваших настроек деплоя и сбора метрик) делаются допущения, что компоненты Time задеплоены со след. параметрами:

  • количество подов: не менее 2
  • неймспейс с компонетами Time: namespace="time"
  • контейнер с приложением Time: container="time-app"
примечание

Запросы и пороги для алертов могут отличаться для вашей инсталляции!

Количество реплик деплоймента (k8s)

min(
100 *
kube_deployment_status_replicas_available{namespace="time"}
/
kube_deployment_spec_replicas{namespace="time"}
) by (namespace, deployment)

Порог срабатывания: последнее значение < 100 (процент доступных реплик).

warning

Следует учесть, что в моменты деплоя это значение может снижаться на непродолжительное время (пока не поднимутся новые поды).

Рестарты подов (k8s)

sum(
increase(kube_pod_container_status_restarts_total{namespace="time"}[3m])
) by (namespace, container, pod)

Порог срабатывания: последнее значение > 0 (количество рестартов).

Утечка памяти приложения (k8s + time-server)

(sum(container_memory_working_set_bytes{namespace="time", container="time-app", resource="memory"}[3m]) by (pod))
/
(sum(kube_pod_container_resource_limits{namespace="time", container="time-app", resource="memory"}[3m]) by (pod))
* 100

Порог срабатывания: потребление памяти подом за последние 10 минут > 80 (процентов).

Недоступность сервисов (k8s)

count(
up{namespace="time"} == 0
) by (service)

Порог срабатывания: последнее значение запроса > 0.

Долгий ответ критичных методов Time API (time-server)

histogram_quantile(
0.99,
sum(
rate(mattermost_api_time_bucket{handler=~"getSystemPing|getUser|getFile|getChannel|createPost|loginWithSaml|completeSaml"}[3m])
) by (handler, le)
)

Порог срабатывания: среднее время выполнения метода за последние 10 минут > 10 (секунд).

warning

Следует учесть, что в случае наличия моментов с очень низкой нагрузкой от пользователей (например, в ночные часы), значение метрики может показывать большие значения.

Пример: допустим, что 1 пользователь отправил 1 сообщение (1 запрос createPost), и этот запрос по какой-то причине выполнялся дольше обычного; в случае, если пользователей больше нет, то получится статистический выброс, и этот 1 медленный запрос на метриках покажет, что 100% запросов с этим методом выполняются долго.

Ошибки при чтении из Kafka (time-server)

increase(time_kafka_reader_error_total{}[3m])

Порог срабатывания: количество ошибок > 0 в течение последних 15 минут.

Ошибки при записи в Kafka (time-server)

increase(time_kafka_writer_error_total{}[3m])

Порог срабатывания: количество ошибок > 0 в течение последних 15 минут.

Ошибки при выборе лидера (time-server)

avg_over_time(sum(time_leaderelect_leader{})[5m])

Порог срабатывания: значение запроса < 1 в течение последних 15 минут.

Истечение срока действия лицензии

(time_license_expiration_unix_time_seconds{} - time())/86400

Порог срабатывания: ежедневно, если значение запроса < 30 (дней).