Ubuntu 14.04 上的 Ganglia 简介

介绍

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的连接服务器:

Ganglia Architecture

当您使用 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_joinbind的行。

绑定值提供一个本地地址,但由于集群只会发送信息,这是不必要的。

 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

Ganglia Web

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

Ganglia Time

在时间范围选择下方,您可以从标记为 ** - 选择一个节点**的下滑菜单中选择特定节点。

Ganglia Node

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

Ganglia Localhost

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

Ganglia Node View

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

Ganglia Detail

随着节点的增长,在主页上查看它们都变得困难,您可以使用搜索选项卡找到特定主机或指标,使用常规表达式。

客户安装

在您想要监控的第二个节点上,在 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 界面上查看集群的概述,并钻入特定节点以及特定指标。

Ganglia Cluster

例如,如果您有多个 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 Grid

结论

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

Published At
Categories with 技术
Tagged with
comments powered by Disqus