介绍
Ganglia是一个可扩展的分布式监控系统。 它可以非常大量的服务器扩展良好,可用于近实时查看性能指标。
在后端,Ganglia由以下组件组成:
- Gmond(Ganglia监控守护程序):一种收集有关节点信息的小型服务。 这安装在您要监视的每个服务器上。
- Gmetad(神经节荟萃守护进程): 主节点上的守护进程,从所有的守护程序的gmond收集的数据(以及其他Gmetad后台程序,如适用)。
- RRD(循环数据库)工具:用于存储数据和可视化的神经节中时间序列的主节点上的一个工具。
- PHP Web前端:显示从RRDKnife数据图表和指标的主节点上的Web界面。
基本上,你想监视的每个节点(服务器)都安装了Gmond。 每个节点使用的gmond将数据发送到运行Gmetad单一主节点 ,其收集的所有节点的数据,并将其发送到要存储的RRD工具。 然后,您可以在PHP脚本和Apache的帮助下在Web浏览器中查看数据。
这里是一个功能Ganglia网格的图,主节点显示为运行Gmetad守护程序的Ganglia服务器,其他节点显示为运行Gmond守护程序的连接服务器:
当您使用Web界面查看受监视的数据时,数据按多个级别组织。 神经节组织节点 ,它们是单独的监视机,成群集 ,类似于节点组。 在一个较高的水平,集群的集合也可以组织成网格 。 当您登录Web界面时,您会看到此单位。
在本文中,我们将首先建立打电话给我的集群单个集群,具有两个节点。 稍后,我们将建立一个名为伦敦两个集群, 服务器和数据库的单一网格。 示例将显示每个集群中的两个节点。
先决条件
你会需要:
- 一个主节点Droplet运行Ubuntu 14.04。 这是将用于查看所有监视数据的节点。
- 要监视至少一个额外的节点,运行Ubuntu 14.04
- 如果你想完全匹配电网的例子,你应该有两个运行Ubuntu 14.04的节点。 但是,您只需在每个集群上只有一个节点即可轻松完成教程。
在每个Droplet上创建一个sudo用户。 首先,创建与用户adduser
命令,与您要使用的名称替换用户名。
adduser username
这将创建用户和相应的主目录和组。 系统将提示您为新用户设置密码并确认密码。 还将提示您输入用户的信息。 确认用户信息以创建用户。
接下来,授与用户的权限Sudovisudo
命令。
visudo
这将打开/etc/sudoers
文件。 在User privilege specification
部分,添加另一条线路为创建的用户,所以它看起来像这样(与您所选择的用户名,而不是username
):
# User privilege specification
root ALL=(ALL:ALL) ALL
username ALL=(ALL:ALL) ALL
保存文件并切换到新用户。
su - username
更新和升级系统软件包。
sudo apt-get update && sudo apt-get -y upgrade
安装
在主节点上,安装Ganglia监视器,RRDtool,Gmetad和Ganglia Web前端。
sudo apt-get install -y ganglia-monitor rrdtool gmetad ganglia-webfrontend
在安装过程中,将要求您重新启动Apache。 选择是。 根据您的系统,您可能会被问两次。 再次选择yes。
通过复制神经节Web前端的配置文件到Apache设置联机图形仪表盘sites-enabled
文件夹。
sudo cp /etc/ganglia-webfrontend/apache.conf /etc/apache2/sites-enabled/ganglia.conf
可选:您可能需要密码保护这个网站以提高安全性。 否则,它将打开到Internet,您可能不希望公开您的服务器配置和IP地址。
注意:本节及客户端安装部分显示一个简单的设置涉及到一个集群,一个名为我的群集 。 如果你想建立电网和两个集群向右走,你可能想在网格部分引用该设置也是如此。
编辑Gmetad配置文件以设置集群。 此文件配置Getad守护程序在何处以及如何收集数据。
sudo vi /etc/ganglia/gmetad.conf
查找开头的行data_source
,如下图所示:
data_source "my cluster" localhost
编辑data_source
行列出集群,以秒为单位的数据收集频率和您的服务器的连接信息的名称。 在下面的例子中,数据源被称为my cluster
,它收集度量一旦从本地主机(本身)一分钟。 您可以添加更多data_source
行,只要你想创建任意多个集群。
data_source "my cluster" 60 localhost
保存更改。
接下来,编辑Gmond配置文件。 即使这是主节点,我们也将其设置为监视作为“我的群集”群集中的第一个节点。 该gmond.conf
文件配置,其中节点发送其信息。
sudo vi /etc/ganglia/gmond.conf
在cluster
部分,确保您的名称设置为您在设定的同一个gmetad.conf
文件,在这个例子是my cluster
。 字段的其余部分是可选的,可以保留为unspecified
。
作为参考, owner
值指定集群,这对接触非常有用的管理员。 该latlong
值设置为全球分布式集群纬度和经度坐标。 该url
值是一个链接提供有关群集的更多信息。
[...]
cluster {
name = "my cluster" ## use the name from gmetad.conf
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
[...]
在udp_send_channel
部分,插入一个新的host
与价值线localhost
,这是服务器在您所发送的信息。 注释掉mcast_join
线。
作为参考, mcast_join
值提供了一个组播地址,但我们需要将数据发送到只有一台主机,所以这是不必要的。 (如果您以后决定要为此群集创建网格,您将重新启用它。)
[...]
udp_send_channel {
#mcast_join = 239.2.11.71 ## comment out
host = localhost
port = 8649
ttl = 1
}
[...]
在udp_recv_channel
部分,注释掉mcast_join
和bind
线路。 (同样,如果要将此群集添加到网格,您将重新启用这些行。)
该bind
值提供绑定到一个本地地址,但由于集群将只发送信息,这是unncessary。
[...]
udp_recv_channel {
#mcast_join = 239.2.11.71 ## comment out
port = 8649
#bind = 239.2.11.71 ## comment out
}
/* You can specify as many tcp_accept_channels as you like to share
an xml description of the state of the cluster */
tcp_accept_channel {
port = 8649
}
[...]
重新启动Ganglia-monitor,Gmetad和Apache。
sudo service ganglia-monitor restart && sudo service gmetad restart && sudo service apache2 restart
Web界面
神经节现在应建立和访问的http:// IP地址/节 。
主页面显示网格视图,这是受监视节点的概述。 现在应该只有一个: 本地主机 。
主选项卡允许您从设置和自定义时间增量查看数据。 您也可以通过手动点击右上角的得到新鲜的数据按钮刷新数据。
下面的时间范围内选择,你可以选择从标记选择,或节点的下拉菜单中的特定节点。 现在,localhost应该是你看到的唯一节点。
从列表中选择localhost来看看具体到本地主机节点的信息。 由于localhost是唯一受监视的节点,localhost节点页面和主选项卡上的信息将相同。
从这里,您也可以点击右上角的节点视图按钮来查看有关节点上下文信息。
主页的其余部分显示节点集群的摘要。 点击任意图表可以查看各种时间增量(从一小时到一年)的详细信息,以及以CSV或JSON格式导出图形数据。
随着节点增长并在主页面上查看所有节点变得困难,可以使用搜索选项卡使用正则表达式查找特定主机或指标。 您还可以比较主机,创建自定义聚合图形等。
客户端安装
你想要的我的集群集群中监视第二个节点,安装监控神经节。
sudo apt-get install -y ganglia-monitor
编辑用于监视节点的Gmond配置文件。
sudo vi /etc/ganglia/gmond.conf
就像我们做了主节点上,更新群集名称( my cluster
在此示例中) cluster
节所以它的名字相匹配的主节点上。
[...]
cluster {
name = "my cluster" ## Cluster name
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
[...]
一个行添加到udp_send_channel
块的host
,这应该是你的主神经节节点(如IP地址1.1.1.1
)。 注释掉mcast_join
线。
[...]
udp_send_channel {
#mcast_join = 239.2.11.71 ## Comment
host = 1.1.1.1 ## IP address of master node
port = 8649
ttl = 1
}
[...]
注释掉整个udp_recv_channel
部分用/* ... */
语法,该服务器将不接受任何东西。
[...]
/* You can specify as many udp_recv_channels as you like as well.
udp_recv_channel {
mcast_join = 239.2.11.71
port = 8649
bind = 239.2.11.71
}
*/
[...]
重新启动监视服务。
sudo service ganglia-monitor restart
等待几分钟,然后重新加载Web界面。 新节点应自动出现在集群中。
在您要在此集群中监视的任何其他节点上重复这些步骤。
你现在有一个集群! 您可以在Web界面上查看集群的概述,并向下钻取特定节点以及特定度量标准。
网格
网格允许您将几个集群组织在一起。 例如,如果您有几个MySQL数据库集群服务于不同的应用程序,则可以在同一个网格中组织所有这些集群,以查看所有MySQL服务器的性能。 或者,如果你有世界各地的应用服务器,你可以把它们放在一个网格的位置,如伦敦。
要创建一个网格,编辑/etc/ganglia/gmetad.conf
神经节主节点上的文件。
请注意,每个Gmetad只能创建一个网格。 如果要创建多个网格,您需要在另一个服务器上安装Gmetad。 在这个例子中,我们将调用我们的电网伦敦 。
sudo vi /etc/ganglia/gmetad.conf
通过取消注释命名网格部分网格gridname
线和更换MyGrid
与您所选择的网格名称。 在这个例子中,我们将其命名为电网伦敦 。
# The name of this Grid. All the data sources above will be wrapped in a GRID
# tag with this name.
# default: unspecified
# gridname "MyGrid"
例如,如果您为所有伦敦服务器创建网格:
gridname "London"
添加或编辑新data_source
您在此网格希望每个集群行。
更新群集的名称,然后为要添加到该群集的每个服务器添加主机和端口信息。 请注意,簇通过端口号,因此每个新标识data_source
线,或群集,应使用不同的端口号。
例如,在下面的例子中,我们将两个簇,称为服务器和数据库 ,伦敦网格。 所有在服务器节点正在使用端口8556,以及所有在数据库节点正在使用端口8857。
data_source "Servers" localhost 1.1.1.2:8556
data_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配置文件。
sudo vi /etc/ganglia/gmond.conf
更新name
在集群节相匹配的群集名称值。 在这里,我们将建立一个节点是数据库集群的一部分。 (请注意,如果您设置使用早期方法两个节点,你会要回去和编辑/etc/ganglia/gmond.conf
他们每个人的文件,以匹配新的设置。)
/* If a cluster attribute is specified, then all gmond hosts are wrapped inside
* of a <CLUSTER> tag. If you do not specify a cluster tag, then all <HOSTS> will
* NOT be wrapped inside of a <CLUSTER> tag. */
cluster {
name = "Databases"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
此外,与前几节,你不应该注释掉mcast_join
线。
您udp_send_channel
块应该是这样的。 请务必更新的port
号! 在我们的例子,因为这是数据库集群的一部分,则端口应该是8557。 其他行可以保持不变。
udp_send_channel {
mcast_join = 239.2.11.71
port = 8557
ttl = 1
}
您udp_recv_channel
块应该是这样的,使用适当的端口号。 其他行可以保持不变。
udp_recv_channel {
mcast_join = 239.2.11.71
port = 8557
bind = 239.2.11.71
}
最后,你tcp_accept_channel
块应该是这样的,使用适当的端口号。
tcp_accept_channel {
port = 8557
}
重新启动每个节点上的监视服务。
sudo service ganglia-monitor restart
重新启动神经节显示器,Gmetad和Apache神经节主机服务器或主节点上。
sudo service ganglia-monitor restart && sudo service gmetad restart && sudo service apache2 restart
在Web界面中,您现在应该可以看到网格的名称和选择集群的选项。 从那里,您可以选择和向下钻取到一个节点。
结论
Ganglia非常容易设置和扩展从一个节点到数百或数千。 它具有高性能级别,可以帮助您监视尽可能多的服务器,你需要。