#

Мониторинг начинается с метрик. Часть 2: серверное ПО

Блог
Продолжаем цикл статей об организации мониторинга. Теперь поговорим о мониторинге базового серверного ПО, которое встречается в работе практически любого веб-проекта. Поделимся метриками и алертами, которые мы используем для мониторинга виртуальных машин, docker/LXC-контейнеров, web- и application-серверов, supervisor’а, кастомных сервисов, а также ping-url’ов, SSL-сертификатов и доменных имен.

Мониторинг виртуальных машин 

Если на сервере запущены виртуальные машины, рекомендуем сконфигурировать следующие алерты:


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

Мониторинг контейнеров

Минимальное покрытие мониторингом для сервера, который используется для запуска контейнеризированных приложений без дополнительных средств оркестрации вроде Kubernetes и Docker Swarm, на наш взгляд состоит из следующих алертов:

О мониторинге и алертах для инструментов оркестрации (Kubernetes, Docker Swarm и подобных) поговорим в одной из следующих статей.

Мониторинг веб-серверов 

Веб-сервер — один из главных компонентов любого веб-проекта, он первым «встречает» пользовательский трафик. Здесь мы рассматриваем nginx и Apache как самые популярные и часто встречающиеся в нашей работе. В нашей практике набор метрик и алертов для покрытия мониторингом веб-сервера выглядит так:

Мониторинг application-серверов

Application-сервер — компонент, который непосредственно отвечает за работу проекта, реализует выполнение кода, обрабатывает пользовательские запросы и запросы к базе данных и т д. Поэтому, конечно, является одним из самых важных объектов мониторинга. В статье мы также рассмотрим наиболее часто встречающиеся в нашей работе application-серверы — PHP-FPM и Apache. Но в общем и целом описанные подходы можно использовать в мониторинге любых application-серверов.

Для PHP-FPM «из коробки» мы выставляем следующие алерты:


Также на практике мы не выставляем алерты, но собираем следующие метрики (чтобы как раз в случае необходимости настройки алертов у нас была статистика обычного поведения системы):


Для Apache рекомендуем устанавливать следующие алерты:


Аналогично тому, как мы организовываем мониторинг PHP-FMP, для Apache собираем такие метрики:

Мониторинг Supervisor’а и кастомных сервисов

Помимо web- и application-серверов на серверах любого веб-проекта могут встречаться и другие виды приложений, требующие постоянной и бесперебойной работы. Например: обработчики очередей (рассылка сообщений, асинхронная обработка запросов), Node.js-приложения, сценарии оболочки и т д. 

Рассмотрим мониторинг данного уровня на примере популярного инструмента для управления приложениями и сервисами Supervisor. Для него на наш взгляд основными являются следующие алерты:


Если же вы используете для управления кастомными сервисами и приложениями какой-либо другой менеджер (например systemctl), рекомендуем в любом случае установить два алерта:

Мониторинг доступности URL’ов, доменов и SSL-сертификатов

Кроме мониторинга проекта «изнутри», сбора метрик и настройки алертов на работу серверов, железа, ПО, на наш взгляд, любой проект ВСЕГДА необходимо мониторить и «снаружи» — чтобы знать, как работу нашего проекта видят конечные пользователи.

Это может быть проверка доступности конкретных endpoint’ов сайта, проверка на наличие необходимого контента на определенной странице сайта, географически распределенный мониторинг доступности проекта из разных регионов и так далее. 

Вот список алертов, которые позволят сконфигурировать базовый мониторинг внешнего состояния проекта:

Выводы

Надеемся, наши списки метрик и алертов помогут вам улучшить существующий или начать создавать отсутствующий мониторинг серверного ПО. Как и любые инструкции по безопасности, алертинг чаще всего основан на прецедентах, чьих-то нервах и седых волосах — хорошо, когда они не ваши и можно начать отслеживать тревожные звоночки до того, как лично столкнуться с их последствиями. 

В этой статье получилось привести меньше конкретных рекомендаций по пороговым значениям, чем в прошлой. В случае приложений, в отличие от системных параметров, они гораздо больше зависят от специфики проекта и используемого ПО. Здесь не меньшее значение приобретает наблюдение за штатным поведением системы и логирование ключевых метрик — именно их мы и постарались перечислить, чтобы в случае нештатной ситуации можно было определить, что она нештатная и предпринять соответствующие действия. Без этого не добиться аптайма в четыре девятки.

Ну, а в следующей статье расскажем о наших принципах мониторинга баз данных (MySQL, PostgreSQL, MongoDB и других).

Мы используем cookies для быстрой и удобной работы сайта. Продолжая пользоваться сайтом, вы даёте согласие и принимаете политику обработки персональных данных