Меню Рубрики

Установка и настройка ganglia

Распределенные и параллельные вычисления/Ganglia

Ganglia (Шаблон:Transcription) — масштабируемая распределенная система мониторинга кластеров [1] параллельных и распределенных (англ. grid ) вычислений и облачных систем с иерархической структурой. Позволяет наблюдать статистику и историю (загруженность процессоров, сети) вычислений в реальном времени для каждой из наблюдаемых машин. [2]

Проект Ganglia был создан в 1998 году в Калифорнийском университете в Беркли как продолжение проекта Millennium, который был инициирован Национальным научным фондом США. [3] [4]

Содержание

Назначение и применение [ править ]

Система построена по иерархическому принципу для интеграции кластеров. Для мониторинга состояния кластеров и их объединения используется древовидная система основанная на P2P соединениях и широковещательных протоколах. Система использует широко известные технологии: XML для представления данных, XDR для сжатия данных, RRDtool для хранения и визуализации данных. Она построена на базе тщательно спроектированных алгоритмов и структур данных, что обеспечивает надежность, позволяет свести к минимуму накладные расходы на каждом из узлов и достичь высокой степени параллелизма. Для отображения страниц статистики используется шаблонизатор TemplatePower. [5]

Система была портирована на широкий спектр операционных систем и процессорных архитектур, и в настоящее время используется на более чем 500 кластеров по всему миру. Существует возможность установки Ganglia на следующие операционные системы: Linux (i386, ia64, sparc, alpha, powerpc, m68k, mips, arm, hppa, s390), FreeBSD, NetBSD, OpenBSD, DragonflyBSD, MacOS X, Solaris, AIX, IRIX, Tru64, HPUX и Windows NT/XP/2000/2003/2008. [6] Ganglia используется для связи кластеров в университетских кампусах по всему миру и может масштабироваться для обработки кластеров имеющих до 2000 узлов в своем составе.

Установка [ править ]

Необходимые пакеты для установки системы Ganglia присутствуют в большинстве современных репозиториев операционных систем, построенных на базе Шаблон:Abbr GNU Linux. Поэтому процесс установки не представляет особых сложностей. В Ubuntu необходимо выполнить команду:

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

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

Если открыть страницу не удалось, то необходимо скопировать конфигурационный файл пакета ganglia-webfrontend в папку кофигурации виртуальных хостов Apache:

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

gmetad 0:off 1:off 2:on 3:on 4:on 5:on 6:off

gmond 0:off 1:off 2:off 3:off 4:off 5:off 6:off

В результате выполнения команды мы должны увидеть gmetad и/илиgmond с опциями загрузки «on». Если на всех уровнях выставлено значение «off», то можно включить сервисы командой:

это сработает только в том случае если демоны зарегистрированы как сервисы. Если нет, то можно прописать старт демона вручную, скопировав скрипт запуска из директории с исходным кодом Ganglia в директорию инициализации системы: [6]

% chkconfig —add gmond
% chkconfig —list gmond
gmond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
% /etc/rc.d/init.d/gmond start

Starting GANGLIA gmond: [ OK ]

Однако в Ubuntu вы увидите сообщение об ошибке, потому что в этой ОС используется отличная от других систем структура директорий инициализации системы. Поэтому иногда может понадобится создать несколько символических ссылок, для подмены не существующих директорий, которые использует Ganglia: [7]

ln -s /lib/lsb/init-functions /etc/rc.d/init.d/functions

Настройка [ править ]

Имя кластера прописывается в файле /etc/ganglia/gmond.conf. Если необходимо назначить кластеру имя clustername, то нужно прописать:

В качестве IP адреса по умолчанию используется 239.2.11.71, его можно прописывать как дополнительный для интерфейса который соединен с кластером.

Источники данных указываются в конфигурационном файле демона gmetad — gmetad.conf:

Для того чтобы увидеть в каком виде Ganglia получает данные с хостов необходимо выполнить в терминале команду:

где 8649 стандартный порт Ganglia.

Демоны [ править ]

gmetad [ править ]

gmetad (Ganglia метадемон) Для для сбора информации и ее отображения на стороне пользователя в системе Ganglia используется gmetad. [8] По умолчанию для получения данных от других клиентов используется 8651 порт. Конфигурационный файл можно найти в директории:

Исполняемый файл самого демона находится в директории:

gmond [ править ]

gmond (англ. Ganglia monitoring daemon ) — демон который запускается на всех узлах для которых необходимо собирать статистику. Конфигурационный файл можно найти в директории:

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

Исполняемый файл находится в директории:

Модули [ править ]

gstat [ править ]

gstat (англ. Ganglia Cluster Status Tool ) — утилита командной строки, позволяющая импортировать информацию из Ganglia в другие приложения. [9]

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

Для отображение полной справочной информации можно воспользоваться командой man :

gmetric [ править ]

Используется для ввода данных из сторонних источников в Ganglia. [10]

gexec [ править ]

gexec (gexecd) — это масштабируемая система удаленного выполнения задач (программ) в кластерах, которая может работать совместно с системой Ganglia. Для удаленного выполнения параллельных (распределенных) заданий используется RSA аутентификация (демон authd). [11] Система прозрачно перенаправляет программные потоки (stdin, stdout, stderr) и события между распределенными процессами, что позволяет создавать распределенную среду переменных окружения и масштабировать систему до более чем 1000 узлов в составе, без потери надежности. Механизм работы основывается на создании древовидного массива всех TCP сокетов между узлами и распространении управляющей информации по всему дереву. С помощью иерархической системы управления, gexec распределяет как и вычислительные задания, так и ресурсы. Это позволяет устранить проблемы, связанные с ограничениями каждого из узлов, например, ограничение на количество открытых дескрипторов файлов. [12]

Для получения списка хостов в кластере gexec опрашивает узел на котором установлен модуль gmond:

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

В gexec интегрирована возможность распределения нагрузки в кластере. Информация о степени загружености узлов запрашивается у gmond. Для балансировки нагрузки задание запускается на наименее загруженных узлах:

т.е. вышеописанная команда запустит на исполнение программу program на пяти наименее загруженных узлах кластера. [9]

Для включения поддержки gexec в Ganglia необходимо установить соответствующую переменную в конфигурационном файле gmond.conf:

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

Если вы компилируете Ganglia из исходных кодов, то необходимо явно включить поддержку gexec на стадии конфигурирования:

gexec можно использовать для выполнения параллельных задач: [13]

каждая из программ parprog получит свою часть данных и сформирует свой результат.

RRDtool [ править ]

Хранение и визуализация данных (графики) осуществляется в Ganglia с помощью инструментария RRDtool.

источник

Ganglia и Nagios. Взаимодополняющий удаленный мониторинг

Все системные администраторы рано или поздно сталкиваются с проблемой мониторинга рабочих серверов. Для решения этой проблемы существует целый зоопарк разнообразных путей. Весьма популярной системой является Nagios из-за своего мощного механизма оповещений. Так же, часто используются системы больше сконцентрированные на сборе значений различных параметров, и отслеживании этих изменений с течением времени для сбора статистики, такие как: Cacti, Zabbix, Ganglia . Причем Ganglia незаслуженно обделена вниманием Хабрасообщества. В этом топике я постараюсь исправить этот недостаток, и показать насколько это гибкий и полезный инструмент.

Итак Ganglia – это система мониторинга с открытым исходным кодом, спроектированная для работы с тысячами узлов, изначально разрабатывавшаяся в университете Berkeley. Ganglia проста в установке и использовании. Отличительной ее особенностью является высокая гибкость и масштабируемость. Поскольку настройка и установка ganglia выходят за рамки данной статьи, можно почитать об этом здесь. Так же добавлю, что в отличии от cacti, ganglia продолжает собирать данные о системе, даже если произошло отключение от сети. Так что когда сервер снова появится в сети он передаст все накопленные данные и в графиках метрик не будет разрывов.
О установке и настройке Nagios, а так же его интеграциии с Ganglia можно почитать здесь.
Используя данные материалы уже можно настроить Ganglia и научить Nagios его мониторить, но в реальной жизни мы сталкиваемся с более сложными ситуациями вида: нужно мониторить сервер во внутренней локальной сети, передавать метрики по защищенному каналу и многое другое. Для решения подобных вещей существует nrpe (более подробно можно прочесть тут).
Собственно отсюда и начинается суть данной статьи. Ситуация: удаленный сервер в локальной сети, установлена Ganglia, сервер в рабочей сети с установленным Nagios. Задача: отслеживать удаленную систему.
Сначала займемся установкой всего нужного на удаленный сервер.
Первым делом устанавливаем плагин для ganglia check_ganglia_metric. Действуем по инструкции, проверяем работоспособность плагина.
Затем устанавливаем nagios-nrpe-server:

Читайте также:  Установка кирпичного забора с профнастилом

Сохраняем и перезапускаем плагин:

Теперь идем на наш сервер донастраивать Nagios (вы ведь уже настроили его используя ссылки выше ):
Добавляем в сервисы:

Перезапускаем Nagios, и видим, что он выставил состояние Warning для нашей метрики, а так же говорит, что не может распознать ответ. Ну что же — достаем напильник. 😉
Нам нужен скрипт запускающий check_ganglia_metric.py.
Как писать плагины для Nagios есть здесь: Пишем свой плагин для nagios Joka
Вот собственно сам код, написан на Python:

Скрипт check_ganglia_metric.py во время выполнения создает файл check_ganglia_metric.cache. При запуске с правами пользователя Nagios он пытается создать этот файл в директории принадлежащей root.
Появляется проблема, что для запуска check_ganglia_metric.py пользователем Nagios ему нужны root права — это совсем нехорошо. Но ведь мы можем дать ему возможность запускать только этот скрипт:

Снова правим конфиг nrpe:
Добавляем наш плагин в разрешенные к исполнению:

Сохраняем, перезапускаем.
Опять правим конфигурацию Nagios:

Сохраняем, перезапускам. Все, теперь работает.
Все пути и команды выполнялись под Debian.
Надеюсь, это будет полезно и сэкономит время и кофе при настройке систем мониторинга на боевых серверах.

источник

Часть 1. Мониторинг коммерческих кластеров с помощью Ganglia

Устанавливаем, настраиваем и расширяем открытый инструмент Ganglia для эффективного мониторинга вычислительного центра

Серия контента:

Этот контент является частью # из серии # статей: Ganglia и Nagios

Этот контент является частью серии: Ganglia и Nagios

Следите за выходом новых статей этой серии.

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

  • Человеку, запускающему на кластере приложения интересны ответы на такие вопросы: «Когда мое задание будет запущено? Когда завершится его выполнение? Как оно выполняется по сравнению с предыдущим разом?»
  • Сетевой инженер хотел бы знать: «Когда мы увидим красный сигнал, означающий, что нужно что-то исправить или сделать сервисный звонок?»
  • Системному инженеру интересно: «Какова производительность наших машин? Все ли сервисы функционируют правильно? Какие тенденции наблюдаются и как мы можем лучше использовать наши вычислительные ресурсы?»

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

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

  • Нет такого инструмента, который бы отслеживал все параметры, которые вы хотите и именно так, как вы хотите. Почему? Потому что разные пользователи по-разному видят для себя мониторинг (как я указывал ранее).
  • Ввиду первой проблемы вам, возможно, придется серьезно адаптировать инструмент, чтобы заставить его работать в вашем вычислительном центре именно так, как вы хотите. Почему? Потому что каждая сеть, какой бы стандартной она ни была, все равно является уникальной.

Кстати, те же самые проблемы существуют и с коммерческими инструментами мониторинга.

Итак, я собираюсь рассказать о Ganglia и Nagios – двух инструментах мониторинга вычислительных центров. Оба они широко используются в средах для высокопроизводительных вычислений (high performance computing или HPC), но они обладают качествами, которые делают их привлекательными и в других средах (таких как среды cloud-вычислений, комплексы визуализации и центры хостинга). Эти два инструмента рассматривают мониторинг с разных позиций. Ganglia больше сконцентрирован на сборе значений различных параметров (метрик) и отслеживании их изменений с течением времени, тогда как Nagios сфокусирован на мощном механизме оповещений.

По мере развития этих проектов их функциональность начала перекрываться. Например:

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

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

  • В Ganglia нет встроенной системы оповещения, тогда как в Nagios она есть, притом замечательная.
  • По всей видимости, в Nagios нет масштабируемых агентов на целевых машинах (хотя некоторые могут с этим поспорить), в то время как в архитектуре Ganglia это предусмотрено изначально.

Есть и другие проекты с открытым исходным кодом, предназначенные для тех же самых целей, каждый со своими достоинствами и недостатками. Самые популярные среди них — это Cacti, Zenoss, Zabbix, Performance Copilot (PCP), и Clumon (также наверняка есть еще и ваш любимый проект, о котором я не упомянул). Многие из них (включая Ganglia и некоторые модули расширения Nagios) используют инструмент Тоби Этикера RRDT или MRTG (Multi Router Traffic Grapher) для хранения данных и создания симпатичных графиков.

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

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

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

В этой статье мы рассмотрим следующие темы:

  • Стандартная установка и конфигурирование Ganglia
  • Использование модулей Python для расширения функциональности с помощью интеллектуального интерфейса управления платформой (IPMI, Intelligent Platform Management Interface).
  • Использование техники подмены узла Ganglia для мониторинга IPMI.

Наша цель – настроить базовую систему мониторинга HPC кластера Linux®, которая бы в той или иной степени соответствовала трем взглядам на мониторинг, указанным выше; систему в которой:

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

Введение в Ganglia

Ganglia – это система мониторинга с открытым исходным кодом, спроектированная для работы с тысячами узлов, изначально разрабатывавшаяся в университете Berkeley. На каждой машине запускается демон gmond , который собирает системную информацию (скорость процессора, использование памяти и т.д.) и посылает ее на определенную машину. Машина, получающая информацию, может отображать ее, а также передавать некоторую обобщенную форму данных вверх по иерархии. Именно благодаря этой иерархической схеме Ganglia так хорошо масштабируется. Накладные расходы, связанные с работой gmond , очень малы, поэтому этот код можно запускать на всех машинах кластера без ущерба для производительности.

Читайте также:  Установка коробки в бмв е36

Случается, что такой сбор данных все-таки влияет на производительность узлов. В сетях это называется «джиттер» — когда много маленьких сообщений приходят в одно и то же время. Мы с этим столкнулись, жестко синхронизировав часы на узлах; этого можно избежать.

Установка Ganglia

В Интернете есть множество статей и ресурсов, рассказывающих об установке Ganglia. Мы обратимся к статье, написанной мною для wiki проекта xCAT. Для целей данной статьи будем полагать, что используется операционная система семейства Red Hat 5, обновление 2 (хотя действия в другой промышленной операционной системе Linux не будут сильно отличаться).

Подготовительный этап

Если у вас настроен репозиторий yum, установка предварительных компонентов должна быть довольно простой. Что-то вроде этого:

(Замечание: Вообще yum должен справляться с большинством этих зависимостей, но я видел в одном из своих тестов ошибки компиляции, которые удалось устранить, добавив все эти пакеты.)

Теперь нужно предварительно установить еще один компонент, отсутствующий в репозитории Red Hat. Если ваша машина имеет соединение с Интернетом, вы можете установить и собрать его так:

Помните, что зеркала часто меняются. Если это зеркало не работает, найдите rpm-файл libconfuse-2.6.-1.fc9 с помощью поисковика.

Инструмент RRDTool

RRDTool (Round Robin Database Tool) — это инструмент работы с базами данных круговой системы. Этот инструмент был создан Тобиасом Этикером, он применяется во многих высокопроизводительных инструментах мониторинга. Помимо Ganglia, это Cacti и Zenoss.

Чтобы установить Ganglia, нам сначала нужно запустить RRDTool на нашем сервере мониторинга. RRDTool предоставляет две замечательные возможности, широко используемые другими программами:

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

Для установки RRDTool выполните следующее (проверено с версиями 1.3.4 и 1.3.6):

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

Основная установка Ganglia

Теперь, выполнив все предварительные установки, мы можем установить Ganglia. Сначала нужно его скачать. В этой статье мы используем Ganglia 3.1.1. Загрузите файл ganglia-3.1.1.tar.gz и поместите его в каталог /tmp вашего сервера мониторинга. Затем сделайте следующее:

Установка должна пройти без ошибок. Если ошибки появляются, проверьте наличие всех необходимых библиотек.

Настройка Ganglia

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

  1. Поработаем с файлами в командной строке.
  2. Отредактируем файл /etc/ganglia/gmond.conf.
  3. Позаботимся о машинах с несколькими сетевыми интерфейсами.
  4. Запустим Ganglia на управляющем сервере.

Шаг 1: работаем с файлами в командной строке.

Сделайте то, что показано ниже:

Шаг 2: редактируем файл /etc/ganglia/gmond.conf.

Теперь можно задать имя кластера в файле /etc/ganglia/gmond.conf. Предположим, что наш кластер называется matlock, тогда нужно заменить строчку name = «unspecified» на name = «matlock» .

Шаг 3: позаботимся о машинах с несколькими сетевыми интерфейсами.

В моем кластере eth0 является публичным IP-адресом моей системы. Однако сервер мониторинга общается с узлами сети через eth1. Нужно привязать групповую рассылку, используемую Ganglia, к eth1. Это можно сделать, создав файл /etc/sysconfig/network-scripts/route-eth1 с содержимым 239.2.11.71 dev eth1 .

Теперь можно перезапустить сетевой сервис командой service network restart после чего убедиться, что в маршрутах этот IP-адрес проходит через eth1. Замечание: Адрес 239.2.11.71, который мы использовали — это канал групповой рассылки ganglia по умолчанию. Измените его если вы будете менять этот канал или добавлять новые.

Шаг 4: запускаем Ganglia на управляющем сервере.

Теперь мы можем запустить Ganglia на сервере мониторинга:

Откройте на управляющем сервере браузер и перейдите по адресу: http://localhost/ganglia. По этому адресу вы теперь можете наблюдать за состоянием управляющего сервера. Вы увидите несколько отслеживаемых показателей и их графики. Одним из самых полезных отслеживаемых показателей является загрузка машины. График загрузки моей машины выглядит так:

Рисунок 1. Мониторинг загрузки

Как видно, ничего не происходит, машина просто простаивает.

Размещение Ganglia на узлах

Мы уже запустили Ganglia на управляющем сервере, теперь настало время позаботиться и о вычислительных узлах. Оказывается, можно разместить Ganglia на вычислительном узле просто скопировав несколько файлов. Если вы используете Kickstart или другую надстройку над инструментами обновления, вы можете это сделать с помощью постинсталяционного скрипта.

Вот быстрый и грубый способ сделать то, что нужно. Создадим файл с именами всех ваших машин. Предположим, ваши узлы называются deathstar001 — deathstar100 , тогда нужно создать файл /tmp/mynodes, выглядящий так:

Если вы сейчас перезапустите gmetad и обновите окно браузера, то вы увидите список, содержащий все ваши узлы.

Некоторые проблемы, с которыми вы можете столкнуться:

  • Возможно, придется выполнить шаг 3 на всех узлах, чтобы явно указать статический маршрут.
  • Возможно, у вас есть межсетевой экран (firewall), блокирующий порты. Демон gmond работает на порте 8649. Чтобы проверить, что gmond запущен на машине, вы можете запустить команду telnet localhost 8649 — в результате вы должны увидеть некоторый XML-текст.

Ведение наблюдений с помощью Ganglia

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

Мы изучим с помощью Ganglia поведение системы во время выполнения тестов Linpack. На рисунке 2 показан промежуток времени, в течение которого я запускал три различных задания Linpack.

Рисунок 2. Наблюдения за Linpack

Как видно из графика, во время выполнения заданий наблюдается некоторая сетевая активность. Также интересно то, что сетевой трафик заметно увеличивается к концу заданий. Даже не зная ничего о Linpack, мы уже можем кое-что сказать о его работе: объем трафика возрастает к концу выполнения заданий.

На рисунках 3 и 4 показано использование процессора и памяти соответственно. Из них видно, что мы выжимаем почти все возможное из нашего процессора и использование памяти тоже достаточно интенсивное.

Рисунок 3. Использование процессора

Рисунок 4. Использование памяти

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

Знание таких вещей поможет в будущем сделать лучший выбор при покупке дополнительного оборудования. Хотя, конечно, никто не будет обновлять аппаратное обеспечение только чтобы запускать Linpack… верно?

Расширение возможностей

Основной пакет Ganglia предоставляет нам множество полезной информации. Использование модулей расширения (плагинов) Ganglia позволяет расширить его возможности двумя способами:

  • Добавлением внутренних модулей расширения
  • Добавлением внешних источников данных с помощью техники подмены узла.

Довольно долго в Ganglia широко применялся первый способ. Второй способ является более поздней разработкой и по функциональности пересекается с Nagios. Давайте изучим эти два метода на практических примерах.

Внутренние модули расширения

Внутренние модули расширения реализуются двумя путями.

  • С помощью задач cron, в которых вызывается команда gmetric , осуществляющая ввод данных в Ganglia
  • С помощью написания скриптов в новых модулях расширения для Python

Первый метод широко применялся в прошлом и я расскажу о нем в следующем разделе, посвященном внешним модулям расширения. Его проблема была в том, что это довольно «грязный» метод. Чтобы сделать расширение Ganglia более естественным, в Ganglia 3.1.x были добавлены модули расширения для С и Python. Сейчас я расскажу о втором методе.

Во-первых, включим модули расширения Python для Ganglia. Надо сделать следующее:

  1. Отредактировать файл /etc/ganglia/gmond.conf

Когда вы его откроете, то, пролистав от начала примерно четверть файла, вы увидите раздел modules , выглядящий примерно так:

Нужно добавить в этот раздел еще один модуль:

Читайте также:  Установка алмазного бурения керн дм 102

В моем файле gmond.conf я добавил этот код начиная с 90-ой строки. Таким образом мы включили в Ganglia модули расширения Python. Также несколькими строчками ниже после инструкции include (‘/etc/ganglia/conf.d/*.conf’) нужно добавить строчку include (‘/etc/ganglia/conf.d/*.pyconf’) . Это подключает определения добавляемых нами модулей.

  1. Создать следующие директории:
  1. Выполнить шаги 1 и 2 на всех ваших узлах.
  • Скопируйте новый файл gmond.conf на все узлы за которыми мы будем наблюдать.
  • Создайте две директории указанные в пункте 2 на каждом узле, чтобы узлы также могли использовать расширения Python.

Теперь, когда узлы подготовлены, давайте создадим новый модуль Python. В нашем примере мы создадим модуль расширения, который будет использовать IPMI драйверы для Linux. Если вы не знакомы с IPMI и работаете с современными машинами от Intel или AMD, ознакомьтесь с соответствующей ссылкой в разделе Ресурсы.

Мы будем использовать инструмент IPMItool с открытым исходным кодом для связи с устройствами IPMI на локальной машине. Есть и другие инструменты, например, OpenIPMI и freeipmi. Так как это просто пример, вы можете свободно использовать любой другой инструмент.

Перед началом работы с Ganglia убедитесь, что IPMItool работает на вашей машине. Запустите команду ipmitool -c sdr type temperature | sed ‘s/ /_/g’ ; если команда не работает загрузите драйверы IPMI устройства и запустите её снова:

Результат выполнения команды ipmitool на моей машине выглядит так:

Итак, я с помощью модуля расширения Ganglia просто буду отслеживать температуру окружающей среды. Я создал довольно плохо написанный модуль расширения ambientTemp.py, использующий IPMI, взяв за основу модуль, найденный на wiki-страничке Ganglia. Вот он:

Листинг 1. Плохо написанный модуль расширения Python ambientTemp.py

Скопируйте листинг 1 и сохраните его в /usr/lib64/ganglia/python_modules/ambientTemp.py. Сделайте это для всех узлов кластера.

Теперь, когда мы разместили скрипт на всех узлах кластера, сообщим Ganglia, как его нужно выполнять. Создадим новый файл /etc/ganglia/conf.d/ambientTemp.pyconf со следующим содержимым:

Листинг 2. Ambient.Temp.pyconf

Сохраните листинг 2 на всех узлах.

И, наконец, перед перезапуском gmond надо выставить права на работу с устройством IPMI в nobody, чтобы никто не мог с ним работать. Иначе интерфейс IPMI станет очень уязвимым для атак злоумышленников!

Вот пример того, как это сделать: chown nobody:nobody /dev/ipmi0 .

Теперь перезапустите gmond на всех машинах. Если все заработает, то, обновив окно браузера, вы должны увидеть что-то вроде этого:

Рисунок 5. Внутренние метрики IPMI

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

Обратите внимание, что нам пришлось написать скрипт написан на Python, подготовить конфигурационный файл и задать в gmond.conf правильные настройки. Мы сделали только одну метрику! Только подумайте о том, сколько всего нужно будет сделать, чтобы написать другие метрики! Выполнение такой работы на каждой машине для каждой метрики может быть весьма утомительным. IPMI — это внешний инструмент, поэтому должен быть какой-то способ лучше, не так ли? Совершенно верно.

Внешние модули расширения (использование техники подмены узла)

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

Что самое лучшее в gmetric ? Огромное количество уже написанных скриптов.

В качестве учебного примера я вместе с вами переоткрою способ запускать ipmitool для получения удаленного доступа к машинам:

  1. Убедитесь, что ipmitool работает сам по себе.

Я настроил BMC (контроллер мониторинга на целевой машине) так, чтобы иметь возможность запускать на нем команды IPMI. Например, мой сервер мониторинга называется redhouse. С redhouse я хочу наблюдать за всеми остальными узлами кластера. Именно на redhouse запущен gmetad и именно с него я через web браузер буду получать всю информацию о Ganglia.

Один из узлов моего кластера называется x01. На x01 я установил для ВМС IP-адрес, разрешающийся в имя x01-bmc. Вот я пытаюсь получить удаленный доступ к этой машине:

Выглядит здорово. Теперь давайте поместим это в скрипт и передадим его в gmetric .

  1. Делаем скрипт, который передает информацию от ipmitool в gmetric .

Создадим следующий скрипт и разместим его на сервере мониторинга по пути usr/local/bin/ipmi-ganglia.pl:

Помимо разбора строк, скрипт просто запускает команду ipmitool и получает с ее помощью значения температуры. Затем для каждой метрики с помощью команды gmetric он помещает эти значения в Ganglia.

  1. Запускаем скрипт как задачу cron.

Запустите crontab -e . Я добавил следующую строку, чтобы скрипт запускался каждые 30 минут: 30 * * * * /usr/local/bin/ipmi-ganglia.sh . Если хотите, вы можете задать его выполнение чаще или реже.

  1. Открываем Ganglia и смотрим на результаты.

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

Рисунок 6. Метрика no_group

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

Что дальше

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

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

Во второй части этой серии статей рассказывается о работе с Nagios и его интеграции с Ganglia, включая:

  • Базовую установку Nagios и настройку оповещений
  • Мониторинг коммутаторов и другой инфраструктуры
  • Встраивание оповещений Nagios в Ganglia

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

Ресурсы для скачивания

Похожие темы

  • Оригинал статьи: Ganglia and Nagios, Part 1: Monitor enterprise clusters with Ganglia (EN).
  • Загрузите Ganglia 3.1.1 (EN).
  • RDDTool (Round Robin Database Tool) был создан Тобиасом Этикером (биография); он применяется во многих высокопроизводительных системах мониторинга (EN).
  • Gmetric (EN) — это инструмент командной строки для занесения информации в Ganglia, который имеет множество скриптов, помогающих реализовать подмену узлов.
  • Другие инструменты мониторинга:
    • Cacti
    • Zenoss
    • Zabbix
    • Clumon
  • Прочитайте руководство по установке Ganglia на wiki проекта xCAT, о котором я упоминал в этой статье (EN).
  • Ознакомьтесь с модулями метрик Python для Gmond на wiki проекта Ganglia (EN).
  • Откройте в вашем браузере этот управляющий сервер.
  • Узнайте об использовании IPMI на машинах Intel и AMD (EN).
  • IPMItool — (EN) это инструмент управления и настройки устройств, поддерживающих версии 1.5 и 2.0 спецификации Интеллектуального Интерфейса Управления Платформой (IPMI).
  • Инструмент Multi Router Traffic Grapher (мультивизуализатор трафика маршрутизаторов) наблюдает за сетевыми SNMP-устройствами и рисует симпатичные графики, показывающие, сколько трафика прошло через каждый интерфейс (EN).
  • В основном разделе Linux и в разделе Linux для новичков вы найдете множество ресурсов для Linux-разработчиков; также просмотрите наши самые популярные статьи и руководства (EN).
  • Ознакомьтесь с другими советами и руководствами по Linux на сайте developerWorks .
  • Разработайте ваш следующий Linux-проект с помощью ознакомительного ПО от IBM, которое можно загрузить непосредственно с сайта developerWorks.

Комментарии

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

источник