Тариф успешно добавлен в корзину
В корзину

Как выбрать систему мониторинга сервера

Автор статьи First John
Как выбрать систему мониторинга сервера

Бесперебойная работа сервера зависит от многих факторов. В любой момент что-то может пойти не так — от DDoS-атаки до простого переполнения диска. Выстроенная система мониторинга помогает вовремя отследить состояние сервера и избежать самых разных проблем.

В статье разбираемся, что такое система мониторинга, как правильно выбрать нужный инструмент и приводим примеры таких инструментов для серверов под Linux.

Что такое мониторинг сервера

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

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

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

  • для сбора и просмотра метрик и журналов,
  • анализа собранных метрик и создания на их основе оповещений по категориям и с указанием приоритета,
  • организации обработки оповещений,
  • автоматического запуска процедур для восстановления работы оборудования в случае аварии,
  • и так далее.

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

Система мониторинга сервера — специальное программное обеспечение, предназначенное для непрерывного контроля и анализа работы сервера. Она позволяет отслеживать основные параметры сервера: загрузка процессора, использование памяти, объем дискового пространства, сетевая активность и другие ключевые показатели. Тем самым помогает выявлять и прогнозировать проблемы в работе сервера, предупреждать о возможных сбоях или снижении производительности.

Задачи мониторинга

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

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

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

Параметры для отслеживания 

Для обеспечения высокой доступности и надежности работы сервера можно контролировать различные параметры состояния ресурсов и их производительности, например:

  • загрузка процессора;
  • температура комплектующих;
  • использование оперативной памяти;
  • использование дискового пространства;
  • сетевой трафик;
  • доступность сервера при запросах из интернета;
  • статус приложений и служб , запущенных на сервере;
  • попытки удаленного входа.

Кроме того, система мониторинга может помочь с решением следующих задач: 

  • проверка состояния системы резервного копирования и актуальности архивных копий;
  • проверка наличия уязвимостей и защиту от хакерских атак;
  • контроль изменений в конфигурации сервера и программ для выявления ошибок;
  • анализ журналов для обнаружения сбоев или аномальной активности.

Если один или несколько контролируемых параметров выходят за пределы нормы, система должна в реальном времени оповещать администратора о сбое в соответствии с заданными приоритетами.

Правильно организованная система мониторинга позволяет:

  • предотвратить сбои;
  • сократить время простоя оборудования или недоступности ресурсов в случае аварии;
  • найти узкие места в работе оборудования и программ;
  • повысить производительность;
  • оптимизировать работу оборудования.

Характеристики систем мониторинга

При выборе системы мониторинга сервера можно обратить внимание на несколько характеристик:

  • Собираемые метрики, например состояние аппаратных компонентов сервера, производительность, показатели операционной системы, служб и приложений, качество работы сети и так далее.
  • Место размещения — сервер системы мониторинга может быть установлен на наблюдаемом оборудовании или удалённо. Во втором случае на наблюдаемые цели устанавливается специальный компонент — агент, собирающий локальные данные и передающий их на центральный сервер, который, в свою очередь, производит агрегацию и хранение данных. Центральный сервер лучше по возможности размещать в другом дата-центре для того, чтобы в случае аварии сети система могла зафиксировать недоступность целей. Кроме того, этот вариант предпочтительней при наблюдении за несколькими целями.
  • Периодичность наблюдения — непрерывное, по расписанию или по запросу. Если за состоянием сервера и его доступностью нужно следить постоянно, то для сводных отчетов и аналитики есть смысл выбрать некоторый период, например раз в день.
  • Формат представления данных — простой текст, таблицы или графики. Графическое представление информации значительно облегчает восприятие и способствует снижению риска ошибок при принятии решений, поэтому крайне желательно, чтобы система мониторинга могла предоставлять аналитические данные внешним инструментам визуализации, например Grafana.
  • Модель сбора метрик — push или pull. В случае наличия центрального сервера мониторинга инициатором обмена данными между агентами и сервером могут быть агенты (модель push) или сервер (модель pull). Эта характеристика может быть важным критерием выбора инструмента мониторинга в случае, когда сервер мониторинга или наблюдаемые цели расположены в приватном сегменте сети, не имеющем доступа извне.
  • Возможности по организации оповещений. Например, при выборе инструмента мониторинга важно, чтобы он мог отправлять уведомления не только на электронную почту, но и в более оперативные каналы связи — мессенджеры. Кроме того, важно иметь возможность настраивать оповещения в соответствии с категорией важности, иначе, при слишком большом количестве уведомлений, администраторы просто начнут их игнорировать.
  • Возможности мониторинга кластеров, микросервисов, контейнеров и быстро меняющихся инфраструктур. Современные проекты всё чаще используют кластеризацию для распределения нагрузки и повышения отказоустойчивости инфраструктуры в целом, поэтому при выборе система мониторинга следует обратить внимание на то, насколько гибко она интегрируется с такими решениями.
  • Возможности масштабирования — ещё один важный показатель, который стоит учесть при выборе. Лучше, чтобы подключение новых целей не отнимало много времени у администратора.
  • Стоимость хранения данных. Собранные данные должны куда-то записываться, поэтому для их хранения нужно место на диске. Чтобы снизить стоимость дополнительного дискового пространства, стоит обратить внимание на то, может ли система мониторинга хранить метрики в сжатом виде. Кроме того, операции записи и агрегации большого объёма данных могут создать значительную нагрузку на процессор, этот момент тоже лучше учесть.
  • Возможность долгосрочного хранения данных. В зависимости от интенсивности записи данных и количества метрик может потребоваться значительный объём дискового пространства, поэтому есть смысл также обратить внимание на максимальный срок хранения, предлагаемый системой мониторинга. В большинстве случаем время хранения данных ограничено лишь местом на диске.
  • Возможность выгрузки данных во внешнее хранилище и записи данных в объектное хранилище S3 без использование локального накопителя.

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

Программы для мониторинга 

Для примера рассмотрим несколько наиболее популярных программ для мониторинга серверов с открытым исходным кодом в порядке возрастания сложности и остановимся на особенностях каждой из них. Все рассматриваемые решения проверены временем и пользуется заслуженной популярностью у системных администраторов благодаря своей надёжности, хорошей документации и большому сообществу, при необходимости готовому оказать поддержку в решении возникших проблем.

Munin

Munin — очень простая система мониторинга серверов с открытым исходным кодом, доступном на GitHub.

Cистема мониторинга Munin

Позволяет пользователям наблюдать за состоянием сервера, сетей и служб, в том числе удалённо.

Munin входит в состав большинства дистрибутивов Linux, поэтому его установка не представляет трудностей, но для работы веб-интерфейса требует настройки службы apache или nginx. Подробнее об установке и настройке Munin можно прочитать в официальной документации или в статье «Установка Munin».

Программа хранит данные в базе данных временных рядов (Time Series DataBase) RRDtool на центральном сервере. Обработкой информации занимается компонент munin-master. На каждый наблюдаемый целевой сервер для сбора данных устанавливается отдельный компонент munin-node. Центральный сервер, на котором хранятся и агрегируются данные, запрашивает наблюдаемые цели каждые 5 минут.

Возможности Munin легко расширяются за счёт плагинов, которые могут быть написаны на любом языке. Благодаря гибкости системы плагинов, с помощью этого инструмента можно настроить отслеживание практически любого показателя компьютеров, сетей или приложений. Например, на приведённом выше снимке экрана показаны графики загрузки сети, центрального процессора, брандмауэра и TCP-соединений.

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

Netdata

Netdata — современная система мониторинга серверов с открытым исходным кодом, позволяющая контролировать серверы, контейнеры и службы в режиме реального времени.

Система Netdata

Netdata позволяет собирать тысячи метрик физических и виртуальных операционных систем, приложений и контейнеров в режиме реального времени. Эта система может также выполнять базовый анализ журналов веб-сервера. Информация представляется в виде графиков с возможностью интерактивного получения нужных выборок. Netdata содержит систему оповещений для выявления скрытых проблем, легко масштабируется и имеет расширяемую модульную структуру с возможностью подключения плагинов или использования API.

Установка пакета netdata не должна вызвать сложностей. После запуска службы на целевом сервере  система открывает порт 19999, который сразу же готов предоставить удобный веб-интерфейс по адресу http://ip_адрес_вашего_сервера:19999. Агенты Netdata должны быть установлены на все контролируемые системы. Каждый агент может работать автономно или соединяться с родительским агентом, образуя конвейер.

Из-за своей простоты этот инструмент мониторинга может стать прекрасным выбором для небольших проектов, но необходимость установки на каждую наблюдаемую цель может вызвать неудобство для крупных инфраструктур и кластеров. Также отметим, что для организации оповещений Netdata использует внешние службы, такие как электронная почта, Telegram, Slack, Discord и многие другие, но установить и настроить их нужно отдельно.

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

Prometheus

Prometheus — это мощное профессиональное решение для мониторинга отдельных серверов или целой инфраструктуры. Для хранения данных используется современная база данных временных рядов или удаленное хранилище данных Grafana Mimir, а код проекта открыт и доступен на GitHub.

Prometheus

Prometheus позволяет собирать данные в центральное или удаленное хранилище, анализировать их и рассылать уведомления.

Этот инструмент мониторинга способен агрегировать огромное количество метрик. Имеет собственный веб-интерфейс (на снимке экрана выше), но разработчики рекомендуют сразу после установки интегрировать систему визуализации данных Grafana.

Одним из серьёзных плюсов Prometheus можно считать возможность мониторинга сложных,  быстроменяющихся или динамически настраиваемых систем, например микросервисов.

Модульная архитектура системы позволяет очень гибко настроить мониторинг. Prometheus содержит библиотеки для работы с различными языками программирования (Go, Java, Python, Ruby, Rust и многие другие), а для взаимодействия с внешними приложениями поддерживает HTTP API в формате JSON.

В отличие от Netdata, Prometheus работает как автономный сервер, собирая данные от наблюдаемых целей через HTTP или другие протоколы с помощью экспортеров, например, node_exporter, поэтому Prometheus не нужно устанавливать и настраивать на каждой контролируемой системе. Ещё один плюс этого инструмента — интеграция с менеджером уведомлений Alertmanager. Кроме того, вокруг проекта сложилась развитая экосистема, что может значительно облегчить жизнь пользователям при настройке и эксплуатации.

С помощью экспортера blackbox_exporter Prometheus позволяет отслеживать также состояние внешних http\https-приложений.

Для расширения возможностей Prometheus можно также обратить внимание на проект Thanos — набор компонентов, которые можно использовать для организации внешнего хранилища данных S3 с неограниченной ёмкостью.

Zabbix

Zabbix — один из самых популярных профессиональных инструментов мониторинга серверов с открытым исходным кодом. Программа обладает огромными возможностями и фактически может заменить большинство из перечисленных здесь вариантов.

Инструмент мониторинга серверов Zabbix

Для удалённого мониторинга Zabbix требует установки компонентов server и frontend на центральный сервер и компонента agent на каждую наблюдаемую цель. Центральный сервер работает только на Unix-совместимых системах. Для его работы потребуется реляционная база данных MySQL или PostgreSQL. Веб-интерфейс (frontend) программы, предоставляющий доступ к серверу, написан на PHP и требует для работы установки службы apache или nginx. Агент, собирающий данные, может работать на любой операционной системе — Linux, Windows, macOS.

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

Nagios

Nagios — ещё одна популярная программа для мониторинга серверов и сетевой инфраструктуры в реальном времени с открытым исходным кодом.

Программа для мониторинга Nagios

Бесплатная базовая версия программы называется Nagios Core, а для корпоративных пользователей есть также платные решения, например Nagios XI.

Установка Nagios требует компиляции из исходных кодов, поэтому администратору нужно хорошо знать операционную систему. Веб-интерфейс организован с помощью службы apache. Для настройки Nagios придётся разбираться с файлами конфигурации, в которых хранятся настройки программы. Хотя хранение настроек в файлах может быть плюсом при автоматизации процесса конфигурирования системы, отсутствие у программы графического интерфейса в современном мире может вызвать вопросы.

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

Для мониторинга удалённых серверов на каждый из них нужно установить агент, например, NRPE, а на центральный сервер — плагин для опроса агентов.

К недостаткам Nagios можно отнести сложность масштабирования мониторинга без использования сторонних плагинов.

Базовая версия программы предлагает очень примитивный интерфейс, для нормальной визуализации данных, например, в Grafana придётся устанавливать дополнительные плагины.

Дополнительные инструменты 

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

Инструмент Grafana

Grafana позволяет собирать данные по отдельным метрикам или целям и объединять их на сводных информационные панелях — дашбордах (dashboards), что очень удобно для пользователей.

Источниками данных могут быть Prometheus, Graphite, InfluxDB, PostgreSQL, MySQL, Elasticsearch и многие другие. Если поддержка нужного вам источника не встроена в систему, можно рассмотреть возможность подключения плагина.

Альтернативы

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

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

Заключение

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

  •  подробнее ознакомиться с документацией по каждому варианту, 

  • изучить их характеристики, 

  • оценить удобство настроек и использования в целом. 

Хорошей практикой может быть использование нескольких дополняющих друг друга программ. Кроме того, в этом случае вы сможете контролировать саму систему мониторинга, ведь любая программа может «упасть».

Впрочем, в жизни всё часто бывает гораздо проще: лучшим инструментом оказывается тот, который знает ваш системный администратор.

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

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

Было интересно?

Назад к списку
Скидка 25% новым клиентам!
Закажи сервер сегодня и получи скидку на первый месяц аренды!