我的HDFS群集中有3台机器:pr2
是元节点,pr1
和pr3
是其他2个节点。我想用ganglia web
来监控它们。为此,Ganglia
(同时包含gmetad
和gmond
)已安装在所有3个节点上,ganglia web
已安装在元节点pr2
上}。
我正在运行以下内容:
在pr2:
service gmetad start
service gmond start
service httpd start
在pr1和pr3上:
service gmond start
我希望在ganglia web
中看到有关所有3个节点的信息。但这就是我所看到的:
似乎只有1个节点正在运行,即pr2
。
可能是什么原因?
配置设置时,我已探索了以下可能性:
pr1
,它应该是本地计算机(pr1
)还是元节点(pr2
)?我分别尝试了pr1
和pr2
,但仍然无法在pr1
上看到pr3
或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? ###
}
udp_send_channels
的部分。有一个参数mcast_join
,我认为是指定元节点。所以我将IP更改为pr2
。但由于ganglia web
未显示pr1
和pr3
的信息,我尝试将其分别更改为pr1
和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
}
udp_recv_channel
的部分。我在这里注释了mcast_join
和bind
,因为我认为pr1
和pr3
节点不需要从任何地方接收任何信息,他们只需要发送信息到元节点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
}
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
工作正常,我是对的吗?
gmond
init文件(用于调用命令),并进行以下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
gmetad.conf
文件以更改datasource
并添加群集名称和用户名。在这里,我应该将数据源更改为本地计算机(pr1
或pr3
),还是更改为元节点(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"
===
或者,一个更大的问题,我不应该更改节点pr1
和pr3
的此文件中的任何内容(因为只有pr2
是将监视所有内容的元节点),而是更改元节点gmetad.conf
的{{1}}文件,仅包含在pr2
所有3个节点中,如下所示:
datasource
[root@pr**2**]# nano /usr/local/etc/gmetad.conf
但是,之后,我在浏览解决这个问题的同时读到了某个地方,写这样的节点名称意味着它首先检查pr1,如果它关闭它将检查pr2,如果那也是下来,它会检查pr3。因此,如果我们想让它从所有3台机器收集数据,我们应该为每个节点编写单独的行,如下所示:
data_source "edhcluster" pr1 pr2 pr3
[root@pr2]# nano /usr/local/etc/gmetad.conf
我也尝试了这一点,然后重新启动了data_source "edhcluster" pr1
data_source "edhcluster" pr2
data_source "edhcluster" pr3
中所有节点(gmetad
,gmond
和httpd
以及pr2
中的所有服务在gmond
和pr1
),但神经网络仍然没有为其他2个节点显示任何内容。
pr3
上修改了gmetad.init
文件(用于调用命令),使pr1
守护程序指向GMETAD
文件的正确路径。但是,我怀疑这可能是错误的,因为gmetad.conf
的{{1}}应该处理这个问题。那么,我认为这是错误的吗?如果是,如何使gmetad守护程序指向另一个节点中的配置文件的路径,元节点gmetad
? pr2
pr2
感谢您查看配置步骤的所有详细信息。如果我错过或忽略了任何其他可能的原因,请随时指出它们。