介绍
Ganglia是一个可扩展的分布式监控系统,它可以很好地扩展到非常大的服务器数量,并且用于近乎实时地查看性能指标。
在后端,Ganglia由以下组成部分组成:
- Gmond (Ganglia监控大卫):一个小型服务,收集有关节点的信息. 这是安装在你想要监控的每个服务器上
- Gmetad (Ganglia meta daemon):一个大卫在 master node上,收集来自所有Gmond大卫的数据(以及其他Gmetad大卫,如果适用)。
- RRD(Round Robin Database)工具:一个工具在 master node上,用于存储数据和时间序列中的Ganglia的可视化
- PHP Web front-end:一个网页接口在 master node上,显示RRD工具中的图形和指标。
基本上,你想要监控的每个节点(服务器)都安装了Gmond,每个节点都使用Gmond将数据发送到运行Gmetad的单个 master node,该节点收集所有节点数据并将其发送到RRD工具来存储,然后您可以使用PHP脚本和Apache来查看Web浏览器中的数据。
以下是一个功能性Ganglia网格的图表,主节点显示为Ganglia服务器运行Gmetad,其他节点显示为运行Gmond的连接服务器:
当您使用 Web 界面来查看监控数据时,数据被组织在多个层面上。Ganglia 将 节点,即单个监控机器,组织成 群集,这些群集是类似节点的群集。
在本文中,我们将首先设置一个单一的集群,名为 我的集群,有两个节点,然后我们将设置一个单一的网格,名为 伦敦,有两个集群, 服务器和 数据库。
前提条件
你将需要:
- 一个主节点 Droplet 运行 Ubuntu 14.04. 这是您将使用的节点来查看所有监控数据
- 您想要监控的至少一个额外节点,运行 Ubuntu 14.04
- 如果您想要准确匹配网格示例,您应该有两个运行 Ubuntu 14.04的节点。
在每个 Droplet 上创建一个 sudo 用户. 首先,使用adduser
命令创建用户,用您想要使用的用户名替换用户名。
1adduser username
这将创建用户和相应的家庭目录和组。您将被要求为新用户设置密码并确认密码。您还将被要求输入用户信息。
接下来,用visudo
命令授予用户sudo权限。
1visudo
在用户特权规格
部分中,为创建的用户添加另一个行,使其看起来像这样(使用您选择的用户名而不是用户名
):
1# User privilege specification
2root ALL=(ALL:ALL) ALL
3username ALL=(ALL:ALL) ALL
保存文件并切换到新用户。
1su - username
更新和升级系统包。
1sudo apt-get update && sudo apt-get -y upgrade
安装
在主节点上,安装 Ganglia 监视器、RRDtool、Gmetad 和 Ganglia Web 前端。
1sudo apt-get install -y ganglia-monitor rrdtool gmetad ganglia-webfrontend
在安装过程中,您将被要求重新启动 Apache. 选择Yes. 根据您的系统,您可能会被要求两次。
通过将Ganglia Web 前端配置文件复制到Apache sites-enabled
文件夹来设置在线图形仪表板。
1sudo cp /etc/ganglia-webfrontend/apache.conf /etc/apache2/sites-enabled/ganglia.conf
可选:您可能希望使用 密码保护此网站以增加安全性,否则它将向互联网开放,您可能不希望暴露您的服务器配置和IP地址。
注意:本节和 客户端安装部分显示了一个简单的设置,涉及一个单个集群,名为 我的集群。
编辑 Gmetad 配置文件来设置您的集群. 此文件配置了 Getad 戴蒙将收集数据的位置和方式。
1sudo vi /etc/ganglia/gmetad.conf
查找以data_source
开头的行,如下所示:
1data_source "my cluster" localhost
在下面的示例中,数据源被称为我的集群
,它每分钟从 localhost(它本身)收集指标一次,您可以添加更多data_source
行以创建您想要的数量的集群。
1data_source "my cluster" 60 localhost
保存你的变化
接下来,编辑Gmond配置文件. 虽然这是主节点,但我们也将其设置为我的集群
集群中的第一个节点进行监控。
1sudo vi /etc/ganglia/gmond.conf
在集群
部分中,请确保您将名称设置为您在gmetad.conf
文件中设置的相同名称,在本示例中是我的集群
。
作为参考,所有者
值指定了群集的管理员,这对于联系目的有用。latlong
值为全球分布的群集设置了纬度和长度坐标。
1[...]
2cluster {
3 name = "my cluster" ## use the name from gmetad.conf
4 owner = "unspecified"
5 latlong = "unspecified"
6 url = "unspecified"
7}
8[...]
在udp_send_channel
部分中,插入一个新的主机
行,其值为localhost
,即您正在发送信息的服务器。
作为参考,mcast_join 值提供了一个多发送地址,但我们只需要将数据发送到一个主机,所以这是不必要的(如果您后来决定要为这个集群创建网格,您将重新启用它)。
1[...]
2udp_send_channel {
3 #mcast_join = 239.2.11.71 ## comment out
4 host = localhost
5 port = 8649
6 ttl = 1
7}
8[...]
在udp_recv_channel
部分中,评论mcast_join
和bind
的行。
绑定
值提供一个本地地址,但由于集群只会发送信息,这是不必要的。
1[...]
2udp_recv_channel {
3 #mcast_join = 239.2.11.71 ## comment out
4 port = 8649
5 #bind = 239.2.11.71 ## comment out
6}
7
8/* You can specify as many tcp_accept_channels as you like to share
9 an xml description of the state of the cluster */
10tcp_accept_channel {
11 port = 8649
12}
13[...]
重新启动 Ganglia-monitor、Gmetad 和 Apache。
1sudo service ganglia-monitor restart && sudo service gmetad restart && sudo service apache2 restart
WEB 接口
Ganglia现在应该设置并可访问在 http://ip-address/ganglia。
主页显示了网格视图,这是您监控的节点的概述,目前应该只有一个: localhost。
主选项卡允许您查看设置和自定义时间增加的数据,您也可以通过点击右上角的 Get Fresh Data 按钮手动更新数据。
在时间范围选择下方,您可以从标记为 ** - 选择一个节点**的下滑菜单中选择特定节点。
从列表中选择 localhost 以查看 localhost 节点的特定信息.由于 localhost 是唯一被监控的节点,所以 localhost 节点页面和主页面的信息将是相同的。
从这里,您还可以点击右上角的 Node View按钮,查看有关节点的背景信息。
主页的其余部分显示了节点的集群的摘要。 点击任何图表以查看从一个小时到一年的各种时间加分的详细信息,以及以 CSV 或 JSON 格式导出图表数据。
随着节点的增长,在主页上查看它们都变得困难,您可以使用搜索选项卡找到特定主机或指标,使用常规表达式。
客户安装
在您想要监控的第二个节点上,在 my cluster集群中,安装 Ganglia 显示器。
1sudo apt-get install -y ganglia-monitor
编辑 Gmond 配置文件来监控节点。
1sudo vi /etc/ganglia/gmond.conf
就像我们在主节点上一样,在集群
部分更新集群名称(本示例中的‘我的集群’),以便它匹配主节点上的名称。
1[...]
2cluster {
3 name = "my cluster" ## Cluster name
4 owner = "unspecified"
5 latlong = "unspecified"
6 url = "unspecified"
7[...]
为主机
添加一个行到udp_send_channel
块中,该行应该是您主 Ganglia 节点的 IP 地址(例如 1.1.1.1
)。
1[...]
2udp_send_channel {
3 #mcast_join = 239.2.11.71 ## Comment
4 host = 1.1.1.1 ## IP address of master node
5 port = 8649
6 ttl = 1
7}
8[...]
用/*... */
语法评论整个udp_recv_channel
部分,因为这个服务器不会收到任何东西。
1[...]
2/* You can specify as many udp_recv_channels as you like as well.
3udp_recv_channel {
4 mcast_join = 239.2.11.71
5 port = 8649
6 bind = 239.2.11.71
7}
8*/
9[...]
重新启动监控服务。
1sudo service ganglia-monitor restart
等待几分钟,然后重新加载 Web 界面. 新的节点应该自动出现在集群中。
在此集群中要监控的任何其他节点上重复这些步骤。
您现在有一个集群!您可以在 Web 界面上查看集群的概述,并钻入特定节点以及特定指标。
网
例如,如果您有多个 MySQL 数据库集群服务于不同的应用程序,您可以将所有这些集群组织在同一个网格中,以查看所有 MySQL 服务器的性能。
要创建网格,请在 Ganglia **master 节点上编辑 /etc/ganglia/gmetad.conf
文件。
请注意,每个Gmetad只能创建一个网格. 如果您想创建多个网格,您需要在另一个服务器上安装Gmetad。
1sudo vi /etc/ganglia/gmetad.conf
在网格
部分中命名你的网格,不要评论网格名
行,然后用你选择的网格名称代替MyGrid
。
1# The name of this Grid. All the data sources above will be wrapped in a GRID
2# tag with this name.
3# default: unspecified
4# gridname "MyGrid"
例如,如果您正在为所有伦敦服务器创建网络:
1gridname "London"
添加或编辑此网格中所需的每个集群的新data_source
行。
更新集群的名称,然后为您想要添加到该集群的每个服务器添加主机和端口信息. 请注意,集群是由端口号识别的,因此每个新的 data_source
行或集群应该使用不同的端口号。
例如,在下面的示例中,我们将两个集群,称为 服务器和 数据库,添加到伦敦网格. 服务器中的所有节点都使用端口 8556,而 数据库中的所有节点都使用端口 8857。
1data_source "Servers" localhost 1.1.1.2:8556
2data_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 配置文件。
1sudo vi /etc/ganglia/gmond.conf
更新集群部分中的名称
值以匹配集群名称. 在这里,我们将设置一个节点作为 Databases集群的一部分。 (请注意,如果您使用以前的方法设置两个节点,您将不得不返回并在每个节点上编辑 /etc/ganglia/gmond.conf
文件以匹配新设置。
1/* If a cluster attribute is specified, then all gmond hosts are wrapped inside
2 * of a <CLUSTER> tag. If you do not specify a cluster tag, then all <HOSTS> will
3 * NOT be wrapped inside of a <CLUSTER> tag. */
4
5cluster {
6 name = "Databases"
7 owner = "unspecified"
8 latlong = "unspecified"
9 url = "unspecified"
10}
此外,与以前的部分不同,您不应该评论mcast_join
的行。
您的udp_send_channel
块应该是这样的。 请确保更新端口
号码! 在我们的示例中,因为这是数据库集群的一部分,端口应该是 8557。
1udp_send_channel {
2mcast_join = 239.2.11.71
3port = 8557
4ttl = 1
5}
您的udp_recv_channel
块应该是这样的,使用相应的端口号码。
1udp_recv_channel {
2mcast_join = 239.2.11.71
3port = 8557
4bind = 239.2.11.71
5}
最后,您的tcp_accept_channel
块应该是这样的,使用相应的端口号。
1tcp_accept_channel {
2port = 8557
3}
在每个节点上重新启动监控服务。
1sudo service ganglia-monitor restart
在 Ganglia 主机服务器或 **master 节点上重新启动 Ganglia-monitor、Gmetad 和 Apache。
1sudo service ganglia-monitor restart && sudo service gmetad restart && sudo service apache2 restart
在 Web 接口中,您现在应该看到您的网格的名称,以及选择集群的选项. 从那里您可以选择并钻入节点。
结论
Ganglia 非常容易设置并从一个节点扩展到数百或数千个,具有高性能水平,可以帮助您监控您需要的服务器。