Основные компоненты большинства систем сбора метрических данных

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

Задача агента — периодически собирать данные на конкретном компьютере и передавать их сводному серверу. Сервер сохраняет данные для каждого компьютера, за которым ведется наблюдение, в дальнейшем эти данные могут обрабатываться разными способами. Большинство сводных серверов использует для хранения информации ту или иную форму базы данных: особой популярностью пользуется формат RRD (Round-Robin Database).

Формат RRD и RRDTool

Вероятно, самой распространенной программой для хранения системных и сетевых данных (по крайней мере в LAMP) является RRDTool. Здесь я ограничусь кратким обзором, а учебные материалы вы можете найти на сайте RRDTool по адресу http://rrdtool.org.

Основной недостаток данных системного мониторинга — их объем данных много, и они постоянно прибавляются. Как ни парадоксально, приходится заниматься планированием мощностей для данных, собранных с целью планирования мощностей! Чтобы решить эту проблему программа RRDTool предполагает, что подробная информация нужна только для относительно свежих данных, а для старых данных допустимо некоторое снижение точности. По истечении максимального срока, определяемого пользователем (допустим, 1 год), данные уничтожаются. Такой подход снижает объем хранимых данных, но за это приходится расплачиваться потерей детализации с течением времени.

Пpoграмма RRDTool может использоваться для построения графиков на основе собранных данных и вывода информации по различным интервалам времени, для которых были сохранены данные. Кроме того, в RRDTool предусмотрены средства сброса, восстановление и обработки данных, которые могут пригодиться при анализе подробностей управления мощностями. Инструменты сбора метрических данных, упоминавшиеся в разделе «Средства сбора метрических данных», представляют собой интерфейсы к RRDTool.

Ganglia

Диаграммы, приведенные далее, были сгенерированы в программе Ganglia (http://ganglia.info). Я выбрал именно эту интерфейсную оболочку для примеров и демонстрации полезных приемов мониторинга по нескольким причинам. Во-первых, Flickr в настоящее время использует Ganglia для проведения подобного мониторинга. Этот выбор объясняется теми же причинами, по которым она также может хорошо подойти и вам, функциональностью (Ganglia хорошо соответствует критериям, приведенным в начале раздела) и популярностью. Кроме того, программа Ganglia изначально разрабатывалась для сбора данных и управления решетчатыми структурами (grids) в кластерах НРС (High Performance Computing). Ganglia хорошо сочетается с инфраструктурой Flickr, так как архитектура сходна с НРС: back-end подсистема сегментирована по кластерам, каждый из которых играет свою роль.

Однако ценность принципов, представленных здесь, не зависит от конкретной программы мониторинга. Ganglia работает так же, как и большинство других инструментов сбора и хранения метрических данных. Агент сбора метрических данных Ganglia называется gmond, а компонент сводного сервера называется gmetad. Метрические данные от отображаются через веб-интерфейс на базе РНР.

SNMP

Протокол SNMP (Simple Network Management Protocol) входит в число распространенных механизмов сбора метрических данных для большинства моделей сетевого и серверного оборудования. SNMP можно рассматривать как стандартизированный протокол мониторинга и сбора метрических данных. Он поддерживается многими маршрутизаторами, коммутаторами и серверами. SNMP способен собирать и передавать множество разнообразных метрик, в том числе и редко используемых администраторами.

Так как сетевые и встроенные (embedded) устройства обычно являются закрытыми системами, для работы с ними не удастся использовать пользовательские приложения вроде агента сбора метрических данных gmond. Но поскольку поддержка SNMP уже давно стала стандартом для сетевых устройств, SNMP предоставляет простой механизм получения метрик от этих устройств без участия агента.