1

我的 HDFS 集群中有 3 台机器:pr2是元节点,pr1pr3是其他 2 个节点。我想用ganglia web. 为此,Ganglia(gmetadgmond) 已安装在所有 3 个节点上,并且ganglia web已安装在元节点pr2.

我正在运行以下内容:

在 pr2 上:

service gmetad start
service gmond start
service httpd start

在 pr1 和 pr3 上:

service gmond start

我希望看到ganglia web有关所有 3 个节点的信息。但这就是我所看到的:

在此处输入图像描述

似乎只有 1 个节点正在运行,即pr2.

可能是什么原因?

在配置设置时,我探索了以下可能性:

  1. 在gmond配置文件中,有一个地方指定了“宿主机”。这里的“主机”应该是什么?例如,对于 node pr1,它应该是本地机器(pr1)还是元节点(pr2)?我已经分别尝试过,但pr1pr2仍然看不到pr1pr3on的信息ganglia web。另外,我还需要在本节中添加更多内容吗?

[root@pr1]# nano /usr/local/etc/gmond.conf

/* The host section describes attributes of the host, like the location */
host {
  location = "unspecified" ### Should I replace "unspecified" with pr2 (the meta node), or with pr1? ###
}
  1. 此外,在同一个配置文件中,有一个部分用于配置udp_send_channels. 有一个参数mcast_join,我认为是指定元节点。所以我把IP改成pr2. 但是由于ganglia web没有显示 and 的信息pr1pr3我尝试将其分别更改为pr1and pr3,但无济于事。

[root@pr1]# nano /usr/local/etc/gmond.conf

udp_send_channel {
  #bind_hostname = yes 
  mcast_join = 239.2.11.71 ### Should I change this IP to pr2 or pr1? ###
  port = 8649
  ttl = 1
}
  1. 同样,在同一个文件中,有一个部分用于配置udp_recv_channel. 我在这里注释掉了mcast_joinand bind,因为我认为pr1andpr3节点不需要从任何东西接收任何信息,它们只需要向元节点发送信息,pr2. 我错了吗?

[root@pr1]# nano /usr/local/etc/gmond.conf

udp_recv_channel {
  #mcast_join = 239.2.11.71
  port = 8649
  #bind = 239.2.11.71
  retry_bind = true
  # Size of the UDP buffer. If you are handling lots of metrics you really
  # should bump it up to e.g. 10MB or even higher.
  # buffer = 10485760
}
  1. 然后我运行以下冒烟测试:

gmond -d 5 -c /usr/local/etc/gmond.conf

它返回以下内容(显示长输出的尾部):

...
...
Counting device /dev/mapper/centos-root (2.69 %)
Counting device /dev/mapper/centos-home (0.02 %)
Counting device /dev/sda1 (18.49 %)
For all disks: 206.174 GB total, 204.498 GB free for users.
    metric 'part_max_used' has value_threshold 1.000000
    sent message 'heartbeat' of length 48 with 0 errors
Processing a metric value message from pr1.embs
Got a heartbeat message 1511171541

这意味着它gmond工作正常,对吗?

  1. 然后我配置gmond初始化文件(用于调用命令),并进行以下 2 处更改:(i)指向GMOND正确的路径,以及(ii)将守护进程指向gmond.conf文件的正确路径。我可能在这里做错了什么吗?

[root@pr1]# nano /etc/init.d/gmond

### Change here ###
#GMOND=/usr/sbin/gmond
GMOND=/usr/local/sbin/gmond

# TMPDIR set to SysV IPC ramdrive to avoid include processing failures
TMPDIR=/dev/shm
export TMPDIR

. /etc/rc.d/init.d/functions

start() {
    [ -x $GMOND ] || exit 5
    [ -f /etc/ganglia/gmond.conf ] || exit 6
    echo -n "Starting GANGLIA gmond: "

    ### Change here ###
    #daemon $GMOND
    daemon $GMOND -c /usr/local/etc/gmond.conf
  1. 然后我修改gmetad.conf文件以更改datasource并添加集群名称和用户名。在这里,我应该将数据源更改为本地计算机(pr1pr3)还是元节点(pr2)?

[root@pr1]# nano /usr/local/etc/gmetad.conf

===(change)
data_source "edhcluster" pr1 ### Should I change this to pr2, the meta node?
===

===(add)
gridname "edhcluster"
===

===(add)
setuid_username "ganglia"
===

或者,一个更大的问题,我是否应该不更改此节点文件中的任何内容pr1pr3(因为只有pr2元节点将监视所有内容),而是更改gmetad.conf元节点的文件pr2,仅包含在其datasource所有3个节点,像这样:

[root@pr**2**]# nano /usr/local/etc/gmetad.conf

data_source "edhcluster" pr1 pr2 pr3

但是,我不久前在浏览以解决此问题时在某处读到,这样写节点的名称意味着它将首先检查 pr1,如果它关闭,它将检查 pr2,如果它关闭也会检查pr3。因此,如果我们想让它从所有 3 台机器上收集数据,我们应该为每个节点编写单独的行,如下所示:

[root@pr2]# nano /usr/local/etc/gmetad.conf

data_source "edhcluster" pr1
data_source "edhcluster" pr2
data_source "edhcluster" pr3

我也试过了,然后重新启动了所有节点中的所有服务(gmetad, gmondand httpdin pr2, and gmondin pr1and pr3),但是 ganglia web 仍然没有显示其他 2 个节点的任何内容。

  1. 然后我修改了gmetad.init文件(用于调用命令)pr1以使GMETAD守护程序指向gmetad.conf文件的正确路径。但是,我怀疑这可能是错误的,因为gmetad应该pr2处理这个问题。那么,我将其确定为错误是否正确?如果是,如何使 gmetad 守护进程指向另一个节点元节点中的配置文件的路径pr2

[root@pr1]# nano /etc/init.d/gmetad

### Change here ###
#GMETAD=/usr/sbin/gmetad
GMETAD=/usr/local/sbin/gmetad

. /etc/rc.d/init.d/functions

test -f /etc/sysconfig/gmetad && . /etc/sysconfig/gmetad

export RRDCACHED_ADDRESS

start() {
    [ -x $GMETAD ] || exit 5
    [ -f /etc/ganglia/gmetad.conf ] || exit 6
    echo -n "Starting GANGLIA gmetad: "

    ### Change here ###
    #daemon $GMETAD
    daemon $GMETAD -c /usr/local/etc/gmetad.conf 
    ### If this means that the gmetad of the local system 
    ### will monitor this node, how do I make the daemon 
    ### point to the gmetad.conf file of the meta node, pr2?

    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/gmetad
    return $RETVAL
}

感谢您浏览配置步骤的所有详细信息。如果我错过或忽略了任何其他可能的原因,请随时指出。

4

0 回答 0