Вступление
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 объединяет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.
Главная вкладка позволяет просматривать данные с установленным и произвольным приращениями времени. Вы также можете обновить данные вручную, нажав кнопкуGet Fresh Data в правом верхнем углу.
Под выбором диапазона времени вы можете выбрать конкретный узел из раскрывающегося меню, обозначенного–Choose a Node. Прямо сейчас localhost должен быть единственным узлом, который вы видите.
Выберитеlocalhost из списка, чтобы увидеть информацию, относящуюся к узлу localhost. Поскольку localhost - единственный контролируемый узел, информация на странице узла localhost и главной вкладке будет одинаковой.
Отсюда вы также можете нажать кнопкуNode View в правом верхнем углу, чтобы просмотреть контекстную информацию об узле.
На остальной части главной страницы отображается сводная информация о кластерах узла. Нажмите на любой график, чтобы просмотреть подробную информацию с различными приращениями времени, от одного часа до одного года, а также экспортировать данные графика в форматы CSV или JSON.
Поскольку ваши узлы растут, и их просмотр на главной странице становится затруднительным, вы можете использовать вкладку поиска, чтобы найти конкретные узлы или метрики, используя регулярные выражения. Вы также можете сравнивать хосты, создавать собственные графики агрегирования и многое другое.
Установка клиента
На втором узле, который вы хотите отслеживать в кластере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
Подождите несколько минут и перезагрузите веб-интерфейс. Новый узел должен появиться в кластере автоматически.
Повторите эти шаги на любых других узлах, которые вы хотите отслеживать в этом кластере.
Теперь у вас есть кластер! Вы можете просмотреть обзор своего кластера в веб-интерфейсе и перейти к конкретным узлам, а также к определенным показателям.
Сетки
Сетки позволяют вам организовать несколько кластеров вместе. Например, если у вас есть несколько кластеров баз данных 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 очень легко настроить и масштабировать от одного узла до сотен или тысяч. Он обладает высоким уровнем производительности и может помочь вам контролировать столько серверов, сколько вам нужно.