网站搜索

使用“Ganglia”为 Linux 服务器网格和集群设置实时监控


自从系统管理员负责管理服务器和机器组以来,监控应用程序等工具一直是他们最好的朋友。您可能会熟悉 Nagios、Zabbix、Icinga 和 Centreon 等工具。虽然这些是监控的重量级组件,但对于新用户来说,设置它们并充分利用它们的功能可能有些困难。

在本文中,我们将向您介绍 Ganglia,这是一个易于扩展的监控系统,允许实时查看 Linux 服务器和集群(以及图表)的各种系统指标。

Ganglia 允许您设置网格(位置)和集群(服务器组)以更好地组织。

因此,您可以创建一个由远程环境中的所有计算机组成的网格,然后根据其他条件将这些计算机分组为更小的组。

此外,Ganglia 的 Web 界面针对移动设备进行了优化,还允许您以 .csv.json 格式导出数据。

我们的测试环境将包括一个中央 CentOS 7 服务器(IP 地址 192.168.0.29),我们将在其中安装 Ganglia,以及一个 Ubuntu 14.04 机器 (192.168.0.32),我们要通过 Ganglia 的 Web 界面监控的机器。

在本指南中,我们将 CentOS 7 系统称为主节点,将 Ubuntu 系统称为受监控机器。

安装和配置 Ganglia

要在主节点中安装监控实用程序,请按照以下步骤操作:

1. 启用 EPEL 存储库,然后从那里安装 Ganglia 和相关实用程序:

yum update && yum install epel-release
yum install ganglia rrdtool ganglia-gmetad ganglia-gmond ganglia-web 

上面步骤中安装的软件包与 ganglia(应用程序本身)一起执行以下功能:

  1. rrdtool(循环数据库)是一种用于使用图表存储和显示数据随时间变化的工具。
  2. ganglia-gmetad 是从您要监控的主机收集监控数据的守护进程。在这些主机和主节点中,还需要安装ganglia-gmond(监控守护进程本身):
  3. ganglia-web 提供 Web 前端,我们将在其中查看有关受监控系统的历史图表和数据。

2.Ganglia Web 界面 (/usr/share/ganglia) 设置身份验证。我们将使用 Apache 提供的基本身份验证。

如果您想探索更高级的安全机制,请参阅 Apache 文档的授权和身份验证部分。

要实现此目标,请创建用户名并分配密码以访问受 Apache 保护的资源。在此示例中,我们将创建一个名为 adminganglia 的用户名,并分配一个我们选择的密码,该密码将存储在 /etc/httpd/auth.basic 中(随意选择另一个目录和/或文件名 - 只要 Apache 对这些资源具有读取权限,就可以了):

htpasswd -c /etc/httpd/auth.basic adminganglia

在继续之前输入两次 adminganglia 的密码。

3.修改/etc/httpd/conf.d/ganglia.conf如下:

Alias /ganglia /usr/share/ganglia
<Location /ganglia>
    AuthType basic
    AuthName "Ganglia web UI"
    AuthBasicProvider file
    AuthUserFile "/etc/httpd/auth.basic"
    Require user adminganglia
</Location>

4.编辑/etc/ganglia/gmetad.conf

首先,使用 gridname 指令,后跟您要设置的网格的描述性名称:

gridname "Home office"

然后,使用data_source,后跟集群(服务器组)的描述性名称、轮询间隔(以秒为单位)以及主节点和受监控节点的 IP 地址:

data_source "Labs" 60 192.168.0.29:8649 # Master node
data_source "Labs" 60 192.168.0.32 # Monitored node

5.编辑/etc/ganglia/gmond.conf

a) 确保集群块如下所示:

cluster {
name = "Labs" # The name in the data_source directive in gmetad.conf
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}

b)udp_send_chanel 块中,注释掉 mcast_join 指令:

udp_send_channel   {
  #mcast_join = 239.2.11.71
  host = localhost
  port = 8649
  ttl = 1
}

c) 最后,注释掉 udp_recv_channel 块中的 mcast_join 和绑定指令:

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

保存更改并退出。

6. 打开端口 8649/udp 并允许 PHP 脚本(通过 Apache 运行)使用必要的 SELinux 布尔值连接到网络:

firewall-cmd --add-port=8649/udp
firewall-cmd --add-port=8649/udp --permanent
setsebool -P httpd_can_network_connect 1

7. 重新启动 Apache、gmetad 和 gmond。另外,请确保它们能够在启动时启动:

systemctl restart httpd gmetad gmond
systemctl enable httpd gmetad httpd

此时,您应该能够通过 http://192.168.0.29/ganglia 打开 Ganglia Web 界面,并使用#Step 2中的凭据登录。

8.Ubuntu主机中,我们只会安装ganglia-monitor,相当于 CentOS 中的 ganglia-gmond

sudo aptitude update && aptitude install ganglia-monitor

9.编辑受监控框中的/etc/ganglia/gmond.conf文件。这应该与主节点中的同一文件相同,除了集群udp_send_channeludp_recv_channel中注释掉的行 应该启用:

cluster {
name = "Labs" # The name in the data_source directive in gmetad.conf
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}

udp_send_channel   {
  mcast_join = 239.2.11.71
  host = localhost
  port = 8649
  ttl = 1
}

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

然后,重新启动服务:

sudo service ganglia-monitor restart

10.刷新网络界面,您应该能够查看家庭办公室网格/实验室集群内两台主机的统计信息和图表(使用家庭办公室网格旁边的下拉菜单选择一个集群,在我们的例子中为实验室):

使用菜单选项卡(上面突出显示的),您可以单独或分组访问有关每个服务器的大量有趣信息。您甚至可以使用“比较主机”选项卡并排比较集群中所有服务器的统计信息。

只需使用正则表达式选择一组服务器,您就可以快速比较它们的性能:

我个人认为最吸引人的功能之一是适合移动设备的摘要,您可以使用移动选项卡访问该摘要。选择您感兴趣的集群,然后选择单个主机:

概括

在本文中,我们介绍了Ganglia,这是一个强大且可扩展的网格和服务器集群监控解决方案。您可以随意安装、探索和使用 Ganglia(顺便说一下,您甚至可以在项目官方网站提供的演示中尝试 Ganglia。

当您使用它时,您还会发现一些 IT 界的知名公司或不使用 Ganglia。除了我们在本文中分享的原因之外,还有很多充分的理由,其中易用性和图表以及统计数据(在名字上加上一个面孔很好,不是吗?)可能是最重要的。

但不要只相信我们的话,您自己尝试一下,如果您有任何疑问,请随时使用下面的评论表给我们留言。