Ганглии без многоадресной рассылки

Я запускаю Ganglia 3.1.2 в сети, где нет многоадресной рассылки (и я не могу ее включить). У кого-нибудь есть элегантное решение для правильной работы ганглиев? Я нашел это:

http://code.google.com/p/ganglia-multicast-hack/

но это не очень хорошо масштабируется.

Прямо сейчас у меня есть отдельные строки data_source для каждого хоста в моей сети в моем файле gmetad.conf, но это тоже плохо масштабируется, и я не могу получить точную сводную статистику, потому что она продолжает перезаписывать rdds (хотя статистика хоста работает просто отлично).

Любые указатели будут с благодарностью (или подтверждение того, что я уже нашел лучшее решение).

Спасибо!

4 ответа

Решение

После дальнейших исследований я нашел ответ. На своих клиентах я добавил следующее в gmond.conf:

udp_send_channel {
  host = monitoring-host
  port = 8666
  ttl = 1
}

udp_send_channel {
  host = monitoring-host-backup
  port = 8666
  ttl = 1
}

Это отправляет данные через одноадресный UDP на узел мониторинга и резервное копирование каждую 1 секунду.

Затем на хосте мониторинга я добавил это:

udp_recv_channel {
  port = 8666
}

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

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

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

  1. Сделайте один из ваших узлов ведущим демоном gmond (сборщик данных ganglia).

Пример: 10 узлов, на которых работает демон gmond. Выберите любой узел из 10 и сделайте так, чтобы тот Мастер, который будет получать все данные от 10 Узлов, также должен был быть его ведомым.

# Define the cluster.
cluster {
  name = "Yellow"
  owner = "Your Company"
  latlong = "N34.02 W118.45"
  url = "http://yourcompany.com/"
}

# Disable multicast and define the host, the yellow master, where nodes in the cluster send data.

udp_send_channel {
  # mcast_join = 239.2.11.71  (No need to join as mcast is not being used)
  host = master.among10node.com  (put the IP/Hostname of server from any 10 nodes to ack as                  master)
  port = 8649
  ttl = 1
}

udp_recv_channel {
  # mcast_join = 239.2.11.71   (Disabled mcast as it is not being used)
  port = 8649
  # bind = 239.2.11.71  (No need to bind as mcast is not being used)
} 

Примечание. Скопируйте одну и ту же конфигурацию на все 10 узлов, на которых работает демон gmond. Сначала перезапустите Мастер, затем все остальные. Надеюсь, что это сработает, и мастер-узел получит все данные из других узлов.

Теперь настройте демон консолидации данных ganglia (gmetad) для использования вашего главного узла в качестве основного источника данных.

Пример:

data_source "Yellow" master.among10node.com 

# default port is 8649, define here if you are using non default

Теперь перезапустите демон gmetad и позвольте магии начаться.

Приветствия Мохд Мозаммил Хан

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

Я еще не пробовал, но возможный обходной путь для этого - создать UDP-канал для каждого кластера, что не очень хорошо, если у вас их много.

Позднее редактировать:

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

Таким образом, кластеры будут назначены их собственным источникам данных, и их полная информация будет там.

Конфиг будет выглядеть так:

# on each node in the cluster
udp_send_channel {
  host = 1.2.3.4 # this is a member of the cluster, not a metad server
  port = 8650
}

Тогда на метад:

data_source "My Cluster" 1.2.3.4

Для избыточности вы можете иметь несколько записей udp_send_channel и несколько IP-адресов, перечисленных в data_source. Я лично использую два для каждого кластера.

Для федерации я использую что-то вроде этого:

data_source "My Grid" 1.2.3.5:8651

Это действительно только в том случае, если у вас есть метаданные, прослушивающие порт 8651.

Смотрите также:

https://github.com/ganglia/monitor-core/tree/feature/cloud

Я установил это сегодня и заставил это работать на EC2, который не позволяет многоадресную рассылку.

Другие вопросы по тегам