介绍神经节在Ubuntu 14.04

神经节是一个可扩展的分布式监控系统近乎实时的性能指标。

介绍

Ganglia是一个可扩展的分布式监控系统。 它可以非常大量的服务器扩展良好,可用于近实时查看性能指标。

在后端,Ganglia由以下组件组成:

  • Gmond(Ganglia监控守护程序):一种收集有关节点信息的小型服务。 这安装在您要监视的每个服务器上。
  • Gmetad(神经节荟萃守护进程): 主节点上的守护进程,从所有的守护程序的gmond收集的数据(以及其他Gmetad后台程序,如适用)。
  • RRD(循环数据库)工具:用于存储数据和可视化的神经节中时间序列的主节点上的一个工具。
  • PHP Web前端:显示从RRDKnife数据图表和指标的主节点上的Web界面。

基本上,你想监视的每个节点(服务器)都安装了Gmond。 每个节点使用的gmond将数据发送到运行Gmetad单一主节点 ,其收集的所有节点的数据,并将其发送到要存储的RRD工具。 然后,您可以在PHP脚本和Apache的帮助下在Web浏览器中查看数据。

这里是一个功能Ganglia网格的图,主节点显示为运行Gmetad守护程序的Ganglia服务器,其他节点显示为运行Gmond守护程序的连接服务器:

Ganglia建筑学

当您使用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_joinbind线路。 (同样,如果要将此群集添加到网格,您将重新启用这些行。)

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地址/节

主页面显示网格视图,这是受监视节点的概述。 现在应该只有一个: 本地主机

Ganglia网

主选项卡允许您从设置和自定义时间增量查看数据。 您也可以通过手动点击右上角的得到新鲜的数据按钮刷新数据。

Ganglia时间

下面的时间范围内选择,你可以选择从标记选择,或节点的下拉菜单中的特定节点。 现在,localhost应该是你看到的唯一节点。

Ganglia节点

从列表中选择localhost来看看具体到本地主机节点的信息。 由于localhost是唯一受监视的节点,localhost节点页面和主选项卡上的信息将相同。

Ganglia本地主机

从这里,您也可以点击右上角的节点视图按钮来查看有关节点上下文信息。

Ganglia节点视图

主页的其余部分显示节点集群的摘要。 点击任意图表可以查看各种时间增量(从一小时到一年)的详细信息,以及以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网格

结论

Ganglia非常容易设置和扩展从一个节点到数百或数千。 它具有高性能级别,可以帮助您监视尽可能多的服务器,你需要。