将 Ganglia 与 Cumulus Linux 结合使用

Ganglia 是一个 BSD 许可的开源项目,是一个可扩展的分布式监控系统,适用于高性能计算系统,如集群和网格。根据 Ganglia 官方网站,该实现非常稳健,与广泛的操作系统和处理器架构兼容,目前在全球数千个集群中使用。您可以使用 Ganglia 连接大学校园和世界各地的集群,并且可以扩展以处理具有 2000 个节点的集群。

由于 Cumulus Linux 是 Linux,Ganglia 也非常适合监控交换机和服务器。本文提供了在 Cumulus Linux 上使用 Ganglia 的设置说明。

要求

  • 一台 Cumulus Linux 交换机
  • 同一网络上运行 apache 的主机。此示例使用 Debian wheezy。
  • 从主机和交换机所在的网络访问 Cumulus Linux 仓库

设置主机

  1. 主机(Web 前端将驻留在此处进行收集)必须安装三个部分

    • ganglia-monitor,也称为 gmond(Ganglia 监控守护进程)
    • gmetad,代表 Ganglia 元守护进程
    • ganglia-webfrontend,其中包含基于 PHP 的实时动态网页

    您可以在 WikipediaGanglia 文档 中了解有关这些部分的更多信息。

  2. 在主机上安装这些组件

    user@webserver$ sudo apt-get install ganglia-monitor gmetad ganglia-webfrontend
    
  3. 如果您不熟悉 apache,则主机需要将 /etc/ganglia-webfrontend/apache.conf 复制到 /etc/apache2/sites-enabled/ 以启用 Ganglia Web 前端,默认地址为 http://<the-host-ip>/ganglia,其中 <the-host-ip> 是所用主机的 IP,例如 http://10.0.1.1/ganglia。

  4. 配置数据源。在本例中,您正在配置 Cumulus Linux 交换机和本地主机(Web 服务器)。在 Debian wheezy 上,您可以在 /etc/ganglia/gmetad.conf 中找到此文件。

    data_source "server" localhost server.lab.test 10.0.1.1
    data_source "sw1" sw1.lab.test 10.0.1.11
    
  5. Cumulus Linux 支持 Ganglia 的组播和单播流量。您将配置单播而不是默认的组播,因为许多环境不希望使用组播。这是一种个人偏好,与 Ganglia 提供的输出无关。首先,编辑 /etc/ganglia/gmond.conf 并设置 send_metadata_interval。此示例使用 30 秒。

    globals {
      daemonize = yes
      setuid = yes
      user = ganglia
      debug_level = 0
      max_udp_msg_len = 1472
      mute = no
      deaf = no
      host_dmax = 0 /*secs */
      cleanup_threshold = 300 /*secs */
      gexec = no
      send_metadata_interval = 30
    }
    
  6. 设置集群。此信息必须在主机及其监听的节点之间匹配。以下示例使用 RDU,代表罗利和达勒姆(北卡罗来纳州中部的两个城市)。继续编辑 /etc/ganglia/gmond.conf

    cluster {
      name = "RDU"
      owner = "RDU"
      latlong = "unspecified"
      url = "unspecified"
    }
    
  7. 使用 udp 设置接收和发送通道(再次配置 /etc/ganglia/gmond.conf)。使它们与以下内容匹配

    udp_send_channel {
      host = server.lab.test
      port = 8649
    }
    udp_recv_channel {
      port = 8649
    }
    
  8. 重启 gmondgmetad

    cumulus@switch$ sudo service ganglia-monitor restart
    cumulus@switch$ sudo service gmetad restart
    
  9. 此时,您应该开始在 Ganglia 中看到服务器统计信息,方法是在 http://<the-host-ip>/ganglia 中查看它们。它只是在查看自己的数据。此示例有时会互换 DNS 和 IP,确保 DNS 已设置或仅使用可访问的 IP。

设置交换机

  1. 您要监控流量的交换机或节点必须仅安装一个软件包

    • ganglia-monitor,也称为 gmond(Ganglia 监控守护进程)
  2. gmond 添加到 Cumulus Linux 仓库后,通过运行以下命令安装 ganglia-monitor

    cumulus@switch$ sudo apt-get install ganglia-monitor
    
  3. 与主机(Web 服务器)一样,您正在为此示例配置单播。首先,通过编辑 /etc/ganglia/gmond.conf 设置 send_metadata_interval。此示例使用 30 秒。

    globals {
      daemonize = yes
      setuid = yes
      user = ganglia
      debug_level = 0
      max_udp_msg_len = 1472
      mute = no
      deaf = no
      host_dmax = 0 /*secs */
      cleanup_threshold = 300 /*secs */
      gexec = no
      send_metadata_interval = 30
    }
    
  4. 设置集群;编辑 /etc/ganglia/gmond.conf。此信息必须在交换机和上面配置的主机之间匹配。此示例使用 RDU。

    cluster {
      name = "RDU"
      owner = "RDU"
      latlong = "unspecified"
      url = "unspecified"
    }
    
  5. 通过如下配置 /etc/ganglia/gmond.conf,使用 udp 设置单播发送通道

    udp_send_channel {
      host = server.lab.test
      port = 8649
    }
    
  6. 重启 gmond 进程

    cumulus@switch$ sudo service ganglia-monitor restart
    
  7. 一分钟后,主机(服务器)上的 PHP 前端开始获取足够的数据以在图表中查看。它们看起来像下面这样

    • 首先选择 sw1 并选择一个指标,如 CPU 速度。

    • 它会打开以下内容

  8. 现在,您可以像在服务器上一样使用任何 Ganglia 功能。

多接口模块

Ganglia 最初是为主机(服务器)设计的,因此最初大多数应用程序仅使用 1-2 个接口。但是,对于 Cumulus Linux,多个前面板端口显示为 swp1->swpMAX,其中 MAX 是最后一个前面板端口。某些用户可能不想查看交换机的聚合数据包计数,而是每个接口的数据包计数以监视利用率。为此,您可以向 Ganglia 添加一个名为 multi\_interface 的开源模块。

  1. 下载 multi_interface.py

    cumulus@switch$ sudo wget https://raw.githubusercontent.com/ganglia/gmond_python_modules/master/network/multi_interface/python_modules/multi_interface.py .
    
  2. multi_interface.py 放入 /usr/lib/ganglia/python_modules/

    cumulus@switch$ sudo mkdir -p /usr/lib/ganglia/python_modules/; mv multi_interface.py /usr/lib/ganglia/python_modules/
    
  3. 下载 multi_interface.pyconf

    cumulus@switch$ sudo wget https://github.com/ganglia/gmond_python_modules/tree/master/network/iface/conf.d .
    
  4. 将以下行添加到 /etc/ganglia/gmond.conf 配置文件中的模块部分

    cumulus@switch$ sudo vi /etc/ganglia/gmond.conf
    module {
    name = "python_module"
    path = "/usr/lib/ganglia/modpython.so"
    params = "/usr/lib/ganglia/python_modules/"
    }
    

    还在 /etc/ganglia/gmond.conf 的末尾添加以下行

    include ('/etc/ganglia/conf.d/*.pyconf')
    
  5. multi_interface.pyconf 放入 /etc/ganglia/conf.d/

    cumulus@switch$ sudo mkdir -p /etc/ganglia/conf.d/; mv multi_interface.pyconf /etc/ganglia/conf.d/
    
  6. 重启 gmond

    cumulus@switch$ sudo service ganglia-monitor restart
    
  7. 现在,显示器为每个 swp 以及 eth0 的管理接口绘制了多个接口的图形

您还可以看到,虽然 swp10-13 没有流量通过,但 swp45 则有流量通过。Ganglia 还允许您使用其 Web 界面放大以获取更多统计信息。

另请参阅