Введение в Ganglia на Ubuntu 14.04

Вступление

Ganglia - это масштабируемая распределенная система мониторинга. Он хорошо масштабируется при очень большом количестве серверов и полезен для просмотра показателей производительности практически в реальном времени.

С другой стороны, Ganglia состоит из следующих компонентов:

  • Gmond (демон мониторинга Ganglia): небольшой сервис, который собирает информацию об узле. Это установлено на каждом сервере, который вы хотите отслеживать.

  • Gmetad (метадемон Ganglia): демон наmaster node, который собирает данные от всех демонов Gmond (и других демонов Gmetad, если применимо).

  • Инструмент RRD (Round Robin Database): инструмент дляmaster node, используемый для хранения данных и визуализаций для Ganglia во временных рядах.

  • Веб-интерфейс PHP: веб-интерфейс наmaster node, который отображает графики и метрики из данных в инструменте RRD.

По сути, на каждом узле (сервере), который вы хотите отслеживать, установлен Gmond. Каждый узел использует Gmond для отправки данных единственномуmaster node, на котором запущен Gmetad, который собирает все данные узла и отправляет их в инструмент RRD для сохранения. Затем вы можете просмотреть данные в своем веб-браузере с помощью PHP-скриптов и Apache.

Вот схема работающей сетки Ganglia, где главный узел показан как сервер Ganglia, на котором запущен демон Gmetad, а другие узлы показаны как соединительные серверы, на которых работает демон Gmond:

Ganglia Architecture

Когда вы используете веб-интерфейс для просмотра отслеживаемых данных, данные организуются на нескольких уровнях. Ganglia объединяетnodes, которые представляют собой отдельные контролируемые машины, вclusters, которые представляют собой группы похожих узлов. На более высоком уровне коллекции кластеров также могут быть организованы вgrids. Вы увидите эту организацию, когда войдете в веб-интерфейс.

В этой статье мы сначала настроим один кластер с именемmy cluster с двумя узлами. Позже мы создадим единую сетку с именемLondon с двумя кластерами,Servers иDatabases. В примерах будут показаны два узла в каждом кластере.

Предпосылки

Тебе понадобится:

  • Один главный узел. Капля работаетUbuntu 14.04. Это узел, который вы будете использовать для просмотра всех данных мониторинга.

  • По крайней мере, один дополнительный узел, который вы хотите отслеживать, работаетUbuntu 14.04

  • Если вы хотите точно соответствовать примерам сетки, у вас должно быть еще два узла сUbuntu 14.04. Тем не менее, вы можете легко завершить учебник с одним узлом в каждом кластере.

Создайте пользователя sudo для каждой капли. Сначала создайте пользователя с помощью командыadduser, заменив имя пользователя на имя, которое вы хотите использовать.

adduser username

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

Затем предоставьте пользователю права sudo с помощью командыvisudo.

visudo

Это откроет файл/etc/sudoers. В разделеUser privilege specification добавьте еще одну строку для созданного пользователя, чтобы он выглядел так (с выбранным вами именем пользователя вместоusername):

# User privilege specification
root       ALL=(ALL:ALL) ALL
username   ALL=(ALL:ALL) ALL

Сохраните файл и переключитесь на нового пользователя.

su - username

Обновите и обновите системные пакеты.

sudo apt-get update && sudo apt-get -y upgrade

Монтаж

На главном узле установите монитор Ganglia, RRDtool, Gmetad и веб-интерфейс Ganglia.

sudo apt-get install -y ganglia-monitor rrdtool gmetad ganglia-webfrontend

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

Настройте онлайн-графическую панель управления, скопировав файл конфигурации веб-интерфейса Ganglia в папку Apachesites-enabled.

sudo cp /etc/ganglia-webfrontend/apache.conf /etc/apache2/sites-enabled/ganglia.conf

Необязательно: вы можете захотетьpassword-protect этот сайт для повышения безопасности. В противном случае он будет открыт для Интернета, и вы, возможно, не захотите раскрывать настройки вашего сервера и IP-адреса.

Примечание. В этом разделе и в разделеClient Installation показана более простая установка с использованием одного кластера с именемmy cluster. Если вы хотите настроить сетку и оба кластера сразу, вы можете также сослаться на настройки в разделеGrids.

Отредактируйте файл конфигурации Gmetad для настройки вашего кластера. Этот файл определяет, где и как демон Getad будет собирать данные.

sudo vi /etc/ganglia/gmetad.conf

Найдите строку, которая начинается сdata_source, как показано ниже:

data_source "my cluster" localhost

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

data_source "my cluster" 60 localhost

Сохраните ваши изменения.

Затем отредактируйте файл конфигурации Gmond. Несмотря на то, что это главный узел, мы также настраиваем его для мониторинга в качестве первого узла в кластере «мой кластер». Файлgmond.conf настраивает, куда узел отправляет свою информацию.

sudo vi /etc/ganglia/gmond.conf

В разделеcluster убедитесь, что вы задали то же имя, которое вы установили в файлеgmetad.conf, которым в этом примере являетсяmy cluster. Остальные поля необязательны и их можно оставить какunspecified.

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

[...]
cluster {
  name = "my cluster" ## use the name from gmetad.conf
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}
[...]

В разделеudp_send_channel вставьте новую строкуhost со значениемlocalhost, которое является сервером, на который вы отправляете информацию. Закомментируйте строкуmcast_join.

Для справки, значениеmcast_join предоставляет адрес многоадресной рассылки, но нам нужно отправить данные только на один хост, поэтому в этом нет необходимости. (Если позже вы решите, что хотите создать сетку для этого кластера, вы снова включите ее.)

[...]
udp_send_channel   {
  #mcast_join = 239.2.11.71 ## comment out
  host = localhost
  port = 8649
  ttl = 1
}
[...]

В разделеudp_recv_channel закомментируйте строкиmcast_join иbind. (Опять же, если вы хотите добавить этот кластер в сетку, вы снова включите эти линии.)

Значениеbind предоставляет локальный адрес для привязки, но, поскольку кластер будет только отправлять информацию, это не обязательно.

[...]
udp_recv_channel {
  #mcast_join = 239.2.11.71 ## comment out
  port = 8649
  #bind = 239.2.11.71 ## comment out
}

/* You can specify as many tcp_accept_channels as you like to share
   an xml description of the state of the cluster */
tcp_accept_channel {
  port = 8649
}
[...]

Перезапустите Ganglia-monitor, Gmetad и Apache.

sudo service ganglia-monitor restart && sudo service gmetad restart && sudo service apache2 restart

Веб интерфейс

Теперь Ganglia должен быть настроен и доступен вhttp://ip-address/ganglia.

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

Ganglia Web

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

Ganglia Time

Под выбором диапазона времени вы можете выбрать конкретный узел из раскрывающегося меню, обозначенного–Choose a Node. Прямо сейчас localhost должен быть единственным узлом, который вы видите.

Ganglia Node

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

Ganglia Localhost

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

Ganglia Node View

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

Ganglia Detail

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

Установка клиента

На втором узле, который вы хотите отслеживать в кластереmy cluster, установите монитор Ganglia.

sudo apt-get install -y ganglia-monitor

Отредактируйте файл конфигурации Gmond для мониторинга узла.

sudo vi /etc/ganglia/gmond.conf

Как и на главном узле, обновите имя кластера (my cluster в этом примере) в разделеcluster, чтобы оно совпадало с именем на главном узле.

[...]
cluster {
  name = "my cluster"     ## Cluster name
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
[...]

Добавьте строку в блокudp_send_channel дляhost, которая должна быть IP-адресом вашего главного узла Ganglia (например, 1.1.1.1). Закомментируйте строкуmcast_join.

[...]
udp_send_channel {
  #mcast_join = 239.2.11.71   ## Comment
  host = 1.1.1.1   ## IP address of master node
  port = 8649
  ttl = 1
}
[...]

Закомментируйте весь разделudp_recv_channel синтаксисом/* ... */, так как этот сервер ничего не получит.

[...]
/* You can specify as many udp_recv_channels as you like as well.
udp_recv_channel {
  mcast_join = 239.2.11.71
  port = 8649
  bind = 239.2.11.71
}
*/
[...]

Перезапустите службу мониторинга.

sudo service ganglia-monitor restart

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

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

Теперь у вас есть кластер! Вы можете просмотреть обзор своего кластера в веб-интерфейсе и перейти к конкретным узлам, а также к определенным показателям.

Ganglia Cluster

Сетки

Сетки позволяют вам организовать несколько кластеров вместе. Например, если у вас есть несколько кластеров баз данных MySQL, обслуживающих разные приложения, вы можете организовать все эти кластеры в одной сетке для просмотра производительности всех ваших серверов MySQL. Или, если у вас есть серверы приложений по всему миру, вы можете поместить их в сетку по местоположению, например по Лондону.

Чтобы создать сетку, отредактируйте файл/etc/ganglia/gmetad.conf на Gangliamaster node.

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

sudo vi /etc/ganglia/gmetad.conf

Назовите свою сетку в разделе сетки, раскомментировав строкуgridname и заменивMyGrid именем сетки по вашему выбору. В этом примере мы назовем сеткуLondon.

# The name of this Grid. All the data sources above will be wrapped in a GRID
# tag with this name.
# default: unspecified
# gridname "MyGrid"

Например, если вы создаете свою сетку для всех ваших лондонских серверов:

gridname "London"

Добавьте или отредактируйте новую строкуdata_source для каждого кластера, который вы хотите в этой сетке.

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

Например, в приведенном ниже примере мы добавляем два кластера, называемыеServers иDatabases, в сетку Лондона. Все узлы вServers используют порт8556, а все узлы вDatabases используют порт8857.

data_source "Servers" localhost 1.1.1.2:8556
data_source "Databases" 1.2.1.1:8557 1.2.1.2:8557

На каждом сервере (или узле), указанном в файле конфигурации Gmetad (в этом примере localhost, 1.1.1.2, 1.2.1.1 и 1.2.1.2), измените файл конфигурации Gmond.

sudo vi /etc/ganglia/gmond.conf

Обновите значениеname в разделе кластера, чтобы оно соответствовало имени кластера. Здесь мы настроим узел как часть кластераDatabases. (Обратите внимание, что если вы настроили два узла, используя более ранний метод, вам придется вернуться и отредактировать файл/etc/ganglia/gmond.conf на каждом из них, чтобы он соответствовал новым настройкам.)

/* If a cluster attribute is specified, then all gmond hosts are wrapped inside
 * of a  tag.  If you do not specify a cluster tag, then all  will
 * NOT be wrapped inside of a  tag. */

cluster {
  name = "Databases"
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}

Кроме того, в отличие от предыдущих разделов, вы должныnot закомментировать строкиmcast_join.

Ваш блокudp_send_channel должен выглядеть так. Не забудьте обновить номерport! В нашем примере, поскольку это часть кластераDatabases, порт должен быть8557. Другие строки могут остаться прежними.

udp_send_channel {
mcast_join = 239.2.11.71
port = 8557
ttl = 1
}

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

udp_recv_channel {
mcast_join = 239.2.11.71
port = 8557
bind = 239.2.11.71
}

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

tcp_accept_channel {
port = 8557
}

Перезапустите сервисы мониторинга на каждом узле.

sudo service ganglia-monitor restart

Перезапустите Ganglia-monitor, Gmetad и Apache на хост-сервере Ganglia илиmaster node.

sudo service ganglia-monitor restart && sudo service gmetad restart && sudo service apache2 restart

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

Ganglia Grid

Заключение

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

Related