使用“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(应用程序本身)一起执行以下功能:
- rrdtool(循环数据库)是一种用于使用图表存储和显示数据随时间变化的工具。
ganglia-gmetad
是从您要监控的主机收集监控数据的守护进程。在这些主机和主节点中,还需要安装ganglia-gmond(监控守护进程本身):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_channel和udp_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。除了我们在本文中分享的原因之外,还有很多充分的理由,其中易用性和图表以及统计数据(在名字上加上一个面孔很好,不是吗?)可能是最重要的。
但不要只相信我们的话,您自己尝试一下,如果您有任何疑问,请随时使用下面的评论表给我们留言。