Библиотека сайта rus-linux.net
Сбор статистики о работе системы с помощью Collectd
Оригинал: "Collectd, system performance statistics on"Автор: Riccardo Capecchi
Дата публикации: March 3, 2011
Перевод: Н.Ромоданов
Дата перевода: март 2011 г.
Последние несколько дней я подробно изучал проект collectd, представляющий собой отличное инструментальное средство для сбора статистических данных, касающихся различных аспектов наших серверов Linux.
Из Википедии:
"collectd является демоном UNIX, с помощью которого выполняется сбор, передача и хранение данных, связанных с функциональными характеристиками компьютеров и сетевого оборудования. Полученные данные призваны помочь системным администраторам отслеживать использование имеющихся ресурсов и выявлять существующие узкие места или узкие места, которые могут возникнуть.
Первая версия демона была написана в 2005 году Флорианом Форстером (Florian Forster) и получила дальнейшее развитие как бесплатный проект с открытым исходным кодом. Другими разработчиками были написаны различные улучшения и расширения, которые включены в проект. Большинство файлов исходного кода лицензировано по лицензии GNU General Public License, версия 2 (GPLv2), остальные файлы распространяются под другими открытыми лицензиями".
Почему collectd?
Есть и другие бесплатные проекты с открытым исходным кодом, которые аналогичны проекту collectd; несколько ссылок приведено в конце статьи. Так почему вы должны использовать collectd? У collectd есть несколько ключевых особенностей. С одной стороны, проект написан на языке C с тем, чтобы улучшить производительность и переносимость; это позволяет запускать его на системах, где нет языка сценариев или демона cron, таких как встраиваемые системы. В то же время, в проекте есть возможность оптимизации и присутствуют функции, предназначенные для обработки сотен тысяч наборов данных. Проект поставляется с более чем 90 плагинами, назначение которых варьируется от стандартных ситуаций до очень специализированных и сложных случаев. Есть мощные сетевые возможности, которые можно расширять различными способами. Последний, но не менее важный аспект: проект collectd активно развивается и поддерживается и он хорошо документирован.
Возможности
Модульность / Переносимость
Все в collectd выполняется с помощью плагинов. Кроме, разумеется, анализа конфигурационного файла. Это означает, что у основного демона нет внешних зависимостей и он должен работать практически на всех системах, соответствующих POSIX. Демон, согласно сообщениям, работает на Linux, Solaris, Mac OS X, FreeBSD, NetBSD и OpenBSD. Вполне вероятно, что демон будет работать на других UNIX подобных системах.
Значения, используемые по умолчанию
Настройка, используемая в collectd, настолько проста, насколько это возможно: вам не нужно конфигурировать ничего, кроме тех модулей, которые вы загружаете, но вы, если захотите, можете настроить демон по своему вкусу.
Маштабирование решения
С помощью collectd можно обрабатывать любое количество хостов, от одного до нескольких сотен (или, возможно, тысяч, но об этом никто пока не сообщал). Это достигается за счет того, что ресурсы используются настолько эффективно, насколько это возможно, например, несколько операций заменяются одной, несколько пакетов объединяются в один и т.д. Используется многопоточность, что позволяет одновременно выполнять несколько плагинов — без задержек, возникающих из-за ввода-вывода.
Поддержка протокола SNMP
В различном сетевом оборудовании, например, в коммутаторах, маршрутизаторах, стойках систем мониторинга, термометрах, источниках бесперебойного питания и так далее, широко применяется протокол Simple Network Management Protocol (SNMP). Плагин SNMP позволяет использовать протокол SNMP для осуществления запросов и перенаправления их результатов в collectd, например, для перенаправления их на сервер, находящийся в другом месте.
Интеграция с системами мониторинга
Начиная с версии 4.3 в collectd была добавлена система уведомлений и пороговых значений. Она позволит вам с помощью демона отправлять уведомления и облегчает проверку пороговых значений. Но collectd не является средством мониторинга. Для того, чтобы сделать систему уведомлений еще более удобной, вероятно нужно добавить некоторые функции, но на данный момент проект collectd не подходит для решения сложных задач мониторинга.
Для того, чтобы сделать возможной интеграцию collectd с популярным средством мониторинга Nagios, был написан специальный плагин к Nagios. Он называется collectd-nagios и позволяет использовать Nagios для отслеживания ситуаций, когда определенные величины попадают в заданные диапазоны значений.
Примеры плагинов
Плагин CPU
Плагин CPU собирает информацию о том, сколько времени процессор находится в различных состояниях, какой код пользователя ожидает выполнения, какой код выполняется, ожидаются ли операции ввода-вывода и каково время простоя.
Согласно FAQ: плагин CPU не собирает значения, указываемые в процентах. Он считает единицы тактов. Во многих системах Linux за секунду происходит около 100 тактов, но это не означает, что вы, в конечном итоге, получите значение, указываемое в процентах.
Плагин Apache
Плагин Apache запрашивает информацию, генерируемую с помощью mod_status - модуля состояний веб-сервера Apache; плагин анализирует ответ и указывает, сколько передано байтов, сколько получено запросов, и сколько процессов находится в различных состояниях.
Плагин Memory
Плагин Memory собирает информацию об использовании физической памяти.
Информация, касающаяся использования памяти, берется из операционной системы. В Linux собирается следующая инфомация:
- Used — Используемая память;
- Buffered — Буферируемая память;
- Cached — Кэшируемая память;
- Free — Свободная память.
Плагин GenericJMX
Плагин GenericJMX с помощью JMX обращается на сервер MBeanServer к объектам, которые называются Managed Beans (Mbeans). Плагин написан на Java и для его функционирования требуется плагин Java.
Java Management Extensions (JMX) является универсальным фреймворком, позволяющим передавать и получать различную управляющую информацию. Интерфейс используется виртуальной машиной Java (JVM) для предоставления информации об используемой памяти, потоках и так далее. Такие базовые значения производительности можно собирать для каждого процесса Java без обращения к самому языку Java.
Плагин MySQL
Плагин MySQL подключается к базе данных MySQL и периодически отправляет в базу команду SHOW STATUS. В ответ возвращается информация, описывающая состояние сервера. Плагин был успешно протестирован с версиями MySQL 4 и 5.
Ссылка:
Сайт проекта Collectd.
Аналогичные проекты
Ниже приводится список проектов, аналогичных collectd, с кратким пояснением их отличия от collectd. Проекты, предназначенные для мониторинга и измерения производительности, в этом списке не указаны.
- Ganglia - Предназначен для работы с вычислительными кластерами и с системными средствами статистики;
- Munin - Данные собираются с помощью специальных плагинов (скриптов);
- eLuna Graph System - Система написана на Perl; используется с cron, только для локальной системы.
Другие статьи о монитторинге на нашем сайте:
- Paul Ferrill, перевод Д.Оводов, "5 инструментов для мониторинга сети в Linux"
- Zdenek, перевод Н.Ромоданов, "Мониторинг сервера Linux с SMS-оповещением и получением графиков производительности"
- Jack Wallen, перевод Н.Ромоданов, "Следим в Linux за рабочей температурой ваших компьютеров"
- Jason Ellison, перевод: А.Тарасов, "SNMP-мониторинг с помощью Nagios"
- Patricia Jung, перевод: А.Тарасов, "Munin - отчеты от "ворона"