Ubuntu14.04上的Ganglia简介

来自菜鸟教程
跳转至:导航、​搜索

介绍

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

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

  • Gmond(Ganglia监控守护进程):一个收集节点信息的小服务。 它安装在您要监控的每台服务器上。
  • Gmetad(Ganglia 元守护程序): 主节点 上的守护程序,它从所有 Gmond 守护程序(和其他 Gmetad 守护程序,如果适用)收集数据。
  • RRD(Round Robin Database)工具:主节点上的一个工具,用于按时间序列存储Ganglia的数据和可视化。
  • PHP Web 前端: 主节点 上的 Web 界面,显示来自 RRD 工具中数据的图表和指标。

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

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

当您使用 Web 界面查看监控数据时,数据会按多个级别进行组织。 Ganglia 将 节点 组织成 集群 ,它们是一组相似的节点。 在更高的层次上,簇的集合也可以被组织成 grids。 当您登录 Web 界面时,您会看到该组织。

在本文中,我们将首先设置一个名为 my cluster 的集群,它有两个节点。 稍后,我们将建立一个名为 London 的单个网格,其中包含两个集群,ServersDatabases。 这些示例将显示每个集群中的两个节点。

先决条件

你会需要:

  • 一个运行 Ubuntu 14.04 的主节点 Droplet。 这是您将用来查看所有监控数据的节点。
  • 至少要监控一个额外的节点,运行 Ubuntu 14.04
  • 如果您想完全匹配网格示例,您应该再有两个节点运行 Ubuntu 14.04。 但是,您可以在每个集群上仅使用一个节点轻松完成本教程。

在每个 Droplet 上创建一个 sudo 用户。 首先,使用 adduser 命令创建用户,将用户名替换为您要使用的名称。

adduser username

这将创建用户和适当的主目录和组。 系统将提示您为新用户设置密码并确认密码。 您还将被提示输入用户信息。 确认用户信息以创建用户。

接下来,使用 visudo 命令授予用户 sudo 权限。

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。 选择是。 根据您的系统,您可能会被询问两次。 再次选择是。

通过将 Ganglia Web 前端配置文件复制到 Apache sites-enabled 文件夹来设置在线图形仪表板。

sudo cp /etc/ganglia-webfrontend/apache.conf /etc/apache2/sites-enabled/ganglia.conf

可选:您可能希望 密码保护 此站点以提高安全性。 否则,它将对 Internet 开放,您可能不希望公开您的服务器配置和 IP 地址。

注意:本部分和 客户端安装 部分显示了一个更简单的设置,涉及一个名为 my cluster 的集群。 如果您想立即设置网格和两个集群,您可能还需要参考 Grids 部分中的设置。

编辑 Gmetad 配置文件以设置您的集群。 此文件配置 Getad 守护程序将在何处以及如何收集数据。

sudo vi /etc/ganglia/gmetad.conf

找到以data_source开头的那一行,如下图:

data_source "my cluster" localhost

编辑 data_source 行以列出集群的名称、以秒为单位的数据收集频率以及服务器的连接信息。 在下面的示例中,数据源称为 my cluster,它每分钟从 localhost(本身)收集一次指标。 您可以添加更多 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 值提供了要绑定的本地地址,但由于集群只会发送信息,因此这是不必要的。

[...]
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

网页界面

现在应该在 http://ip-address/ganglia 上设置和访问 Ganglia。

主页显示网格视图,它是受监控节点的概览。 现在应该只有一个:localhost

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

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

从列表中选择 localhost 以查看特定于 localhost 节点的信息。 由于 localhost 是唯一被监控的节点,因此 localhost 节点页面和主选项卡上的信息将是相同的。

从这里,您还可以单击右上角的 Node View 按钮来查看有关节点的上下文信息。

主页的其余部分显示节点集群的摘要。 单击任何图表以查看从一小时到一年的各种时间增量的详细信息,以及以 CSV 或 JSON 格式导出图表数据。

随着您的节点增长并且在主页上查看它们变得困难,您可以使用搜索选项卡使用正则表达式查找特定的主机或指标。 您还可以比较主机、创建自定义聚合图等。

客户端安装

my cluster 集群中要监控的第二个节点上,安装 Ganglia 监控器。

sudo apt-get install -y ganglia-monitor

编辑用于监控节点的 Gmond 配置文件。

sudo vi /etc/ganglia/gmond.conf

就像我们在主节点上所做的那样,更新 cluster 部分中的集群名称(本例中为 my cluster),使其与主节点上的名称匹配。

[...]
cluster {
  name = "my cluster"     ## Cluster name
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
[...]

hostudp_send_channel 块中添加一行,这应该是您的主 Ganglia 节点的 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 服务器的性能。 或者,如果您在世界各地都有应用程序服务器,您可以按位置将它们放在一个网格中,例如伦敦。

要创建网格,请编辑 Ganglia 主节点 上的 /etc/ganglia/gmetad.conf 文件。

请注意,每个 Gmetad 只能创建一个网格。 如果要创建多个网格,则需要在另一台服务器上安装 Gmetad。 在这个例子中,我们将调用我们的网格 London

sudo vi /etc/ganglia/gmetad.conf

通过取消注释 gridname 行并将 MyGrid 替换为您选择的网格名称,在网格部分命名您的网格。 在本例中,我们将网格命名为 London

# 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 行或集群都应使用不同的端口号。

例如,在下面的示例中,我们向伦敦网格添加了两个集群,称为 ServersDatabasesServers中的所有节点都使用端口8556Databases中的所有节点都使用端口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 值以匹配集群名称。 在这里,我们将设置一个节点作为 Databases 集群的一部分。 (请注意,如果您使用之前的方法设置了两个节点,则必须返回并编辑每个节点上的 /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 编号! 在我们的示例中,由于这是 Databases 集群的一部分,因此端口应该是 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

在 Ganglia 主机服务器或 主节点 上重新启动 Ganglia-monitor、Gmetad 和 Apache。

sudo service ganglia-monitor restart && sudo service gmetad restart && sudo service apache2 restart

在 Web 界面中,您现在应该会看到网格的名称,以及选择集群的选项。 从那里您可以选择并深入了解一个节点。

结论

Ganglia 很容易设置和从一个节点扩展到数百或数千个节点。 它具有高性能水平,可以帮助您监控所需数量的服务器。