Алерты
Ниже — список алертов, которые рекомендуется настроить в рамках задач по мониторингу 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 (процент доступных реплик).
Следует учесть, что в моменты деплоя это значение может снижаться на непродолжительное время (пока не поднимутся новые поды).
Рестарты подов (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 (секунд).
Следует учесть, что в случае наличия моментов с очень низкой нагрузкой от пользователей (например, в ночные часы), значение метрики может показывать большие значения.
Пример: допустим, что 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 (дней).