ganglia组播和单播
ganglia快速开始向导(翻译自官方wiki)
转自:http://cryinstall.com/?p=180
快速开始向导
介绍
Ganglia 监控套件包括三个主要部分:gmond,gmetad,和网页接口,通常被称为ganlia-web
* gmond 是一个守护进程,他运行在每一个需要监测的节点上,收集监测统计,发送和接受在同一个组播或单播通道上的统计信息
*如果他是一个发送者(mute=no)他会收集基本指标,比如系统负载(load_one),CPU利用率。他同时也会发送用户通过添加C/Python模块来自定义的指标。
*如果他是一个接收者(deaf=no)他会聚合所有从别的主机上发来的指标,并把它们都保存在内存缓冲区中。
* gmetad 也是一个守护进程,他定期检查gmonds,从那里拉取数据,并将他们的指标存储在RRD存储引擎中。他可以查询多个集群并聚合指标。他也被用于生成用户界面的web前端。
* ganglia-web 顾名思义,他应该安装在有gmetad运行的机器上,以便读取RRD文件。
集群是主机和度量数据的逻辑分组,比如数据库服务器,网页服务器,生产,测试,QA等,他们都是完全分开的,你需要为每个集群运行单独的gmond实例。
一般来说每个集群需要一个接收的gmond,每个网站需要一个gmetad。
安装
最简单的方法来安装就是使用二进制包。在Ubuntu/Debian 上,你可以用apt-get来安装。
apt-get install ganglia-monitor gmetad
补充:我做实验是用centos,在centos上只需要添加epel和rpmfusion库即可使用以下命令分别安装上述三个组件
yum install ganglia-gmond
yum install ganglia-gmetad
yum install ganglia-web
防火墙规则
默认情况下gmond使用UDP协议的8649端口(在udp_send_channel 和udp_rec_channel中被指定),gmetad下载统计数据通过TCP的8649端口(在tcp_accept_channel中被指定)。
如果你的防火墙有任何的规则阻止这些端口上的通信,那么你的统计信息就不会被显示了。
单个集群配置
如果你只有少数主机需要处理,我们推荐使用单个集群,因为这是最容易启用和配置的。唯一你需要做的是决定是否要启用单播或者组播传输。
组播模式是默认的设置,也是最简单的使用方式,并且他提供沉余。对“抖动”敏感的环境可能需要考虑启用Ganglia在单播模式下运行,他可以显著的减少主机间喋喋不休的交流,不过就是配置起来复杂一点。像Amazon’s AWS EC2产品这样的环境就是不支持组播的,所以单播是惟一可用的设置选项。
组播
如果你正在使用组播传输,那么你没必要改变任何东西,因为这是Ganglia包安装默认的。唯一要做的就是把gmetad指向一个或几个运行着gmond的主机。没有必要列出每一个单个主机,因为gmond被设置为接受模式时会包含所有主机的列表以及整个集群的统计信息。
# /etc/gmetad.conf on monhost
data_source "MyCluster" monhost
单播
要配置成为单播你应该指定一个(或者多个)接受的主机,比如我将要挑选mon1主机作为接收者。mon1的gmond.conf应该看起来像这样。
globals {
daemonize = yes
setuid = yes
user = nobody
debug_level = 0
max_udp_msg_len = 1472
mute = no
deaf = no
allow_extra_data = yes
host_dmax = 86400 /* Remove host from UI after it hasn't report for a day */
cleanup_threshold = 300 /*secs */
gexec = no
send_metadata_interval = 30 /*secs */
}
cluster {
name = "Production"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
host {
location = "unspecified"
}
udp_send_channel {
host = mon1
port = 8649
ttl = 1
}
udp_recv_channel {
port = 8649
}
tcp_accept_channel {
port = 8649
}
在其他的所有主机上,你只需要配置这个
globals {
daemonize = yes
setuid = yes
user = nobody
debug_level = 0
max_udp_msg_len = 1472
mute = no
deaf = yes
allow_extra_data = yes
host_dmax = 86400 /* Remove host from UI after it hasn't report for a day */
cleanup_threshold = 300 /*secs */
gexec = no
send_metadata_interval = 30 /*secs */
}
cluster {
name = "Production"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
host {
location = "unspecified"
}
udp_send_channel {
host = mon1
port = 8649
ttl = 1
}
请注意send_metadata_interval被设置为30秒。Ganglia的度量指标从他的元数据间隔发送得到的。元数据包含诸如度量分组,类型等等。假如你重启了接收的gmond主机,那么元数据就会丢失,gmond就不知道如何处理度量数据,因此会把他们抛弃。这会导致生成空白的图表。在组播模式下,gmonds可以和其他任意一台主机通信,在元数据丢失情况请求重新获取。但这在单播模式下是不可能的,因此你需要命令gmond定期的发送元数据。
现在在你的gmetad.conf中放置
# /etc/gmetad.conf on mon1
data_source "Production" mon1
重启所有,应该会生效了
多个集群配置

就像你在上面的图表中看到的,有三个集群在同一个广播域上,我们并不需要部署三个分开的Ganglia网页接口和gmetad收集器,我们只需要在node0.c1节点上部署一个就可以了,他并会从三个不同的组播通道上收集统计数据。
那么在服务器上需要的组件有:
*在每个节点上都需要ganglia-gmond
*在node0.c1上需要ganglia-d和ganglia-web(假设我们指定节点0.c1作为ganglia网页接口和统计数据接收器)。
下面是配置文件的部分设置:
在集群一完全相同的/etc/gmond.conf。我列举最重要的部分:
# /etc/gmond.conf - on ClusterOne
cluster {
name = "ClusterOne"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
} udp_send_channel {
mcast_join = 239.2.11.71
port = 8661
ttl = 1
} udp_recv_channel {
mcast_join = 239.2.11.71
port = 8661
bind = 239.2.11.71
} tcp_accept_channel {
port = 8661
}
在集群二所有的节点都相同的/etc/gmond.conf
# /etc/gmond.conf - on ClusterTwo
cluster {
name = "ClusterTwo"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
} udp_send_channel {
mcast_join = 239.2.11.71
port = 8662
ttl = 1
} udp_recv_channel {
mcast_join = 239.2.11.71
port = 8662
bind = 239.2.11.71
} tcp_accept_channel {
port = 8662
}
在集群三上都相同的/etc/gmond.conf
# /etc/gmond.conf - on ClusterThree
cluster {
name = "ClusterThree"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
} udp_send_channel {
mcast_join = 239.2.11.71
port = 8663
ttl = 1
} udp_recv_channel {
mcast_join = 239.2.11.71
port = 8663
bind = 239.2.11.71
} tcp_accept_channel {
port = 8663
}
只存在于node0.c1上的/etc/gmetad.conf(最重要的部分):
# /etc/gmetad.conf on node0.c1
data_source "ClusterOne" node0.c1:8661 node1.c1:8661
data_source "ClusterTwo" node0.c2:8662 node1.c2:8662
data_source "ClusterThree" node3.c2:8663 node1.c3:8663
注意,我们并没有列出每个集群上所有的节点作为data sources(假如你的集群拥有数以千计的节点不就悲剧了么)。想象一下现在我们有三个不同的池,他们各种有边界。要发生的事情就是,gmetad守护进程根据data source的配置访问数据,如果其中的一个节点死机了,其他的也可以提供统计数据给gmetad,因为gmond节点会交换数据。
现在你要干的事情就是配置一下在node0.c1上的web服务器,开启gmetad(默认的RRDs位置在/var/lib/ganglia/rrds),并开启所有集群上的gmond服务。你应该会有一个为三个集群服务的正常工作的监控系统,而他只在一个服务器上。
ganglia组播和单播的更多相关文章
- Android为TV端助力:UDP协议(接收组播和单播)
private static String MulticastHost="224.9.9.98";private static int POST=19999;private sta ...
- UDP单播和组播使用SO_REUSEADDR 测试结果
UDP单播通信 一. 预置条件 A.B在同一台机器,网络中存在往A.B所在的机器的8888端口发送单播UDP数据 A:端口复用绑定在端口8888上 B:端口复用绑定在端口8888上操作步骤:(1)先启 ...
- IP组播
1 IP组播基础 IP组播技术有效地解决了单点发送.多点接收的问题.组播源只发送一份数据,被传递的信息在距组播源尽可能远的网络节点才开始被复制和分发,并且只发送给需要该信息的接收者. 说明: 本章 ...
- 桌面共享UDP组播实现
组播(Multicast)传输:在发送者和每一接收者之间实现点对多点网络连接.如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包.它提高了数据传送效率.减少了骨干网络出现拥塞的 ...
- IPSec组播概要
IPSec作为主流IP安全协议之一,在单播环境下,特别是在VPN场景中应用广泛.但是在组播环境貌似看到的不多,通过RFC4301了解到IPSec首先是支持组播的,即通过手动配置的方式可以实现组播包加密 ...
- HCNP Routing&Switching之组播技术-组播基础
组播技术背景 随着internet网络的不断发展,网络中交互的各种数据.语音.视频信息数量突增:新型的在线直播.网络电视.视频会议等应用也在逐渐兴起:这些业务大多符合点到多点的模式,对信息安全性.传播 ...
- HCNP Routing&Switching之组播技术-组播地址
前文我们聊到了组播技术背景,单播.广播在点到多点应用中的问题,以及组播对比单播.广播在点到多点的网络环境中的优势.劣势,相关回顾请参考https://www.cnblogs.com/qiuhom-18 ...
- <转>单播,广播,组播的缺点与优点
原文链接:http://apje.blog.163.com/blog/static/145345252007101175714761/ 当前的网络中有三种通讯模式:单播.广播.组播(多播),其中的组播 ...
- MAC 地址(单播、组播、广播地址分类)
简介 一个制造商在生产制造网卡之前,必须先向 IEEE 注册,以获取到一个长度为 24bit 的厂商代码,也称为 OUI(Organizationally-Unique Identifier).制造商 ...
随机推荐
- Shiro的鉴权方式
一. 怎么用 Shiro 支持三种方式的授权 编程式:通过写 if/else 授权代码块完成: Subject subject = SecurityUtils.getSubject(); if(sub ...
- redis环境搭建和java应用
安装 连接 Java连接redis 下载 wget http://download.redis.io/releases/redis-4.0.9.tar.gz 解压移动 tar -xvf redis-4 ...
- 【BZOJ 2665】 2665: [cqoi2012]编号(暴力?)
2665: [cqoi2012]编号 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 347 Solved: 217 Description 你需要给一 ...
- 【51Nod 1756】【算法马拉松 23】谷歌的恐龙
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1765 设答案为\(X\). 则\[X=\frac{m}{n}\times ...
- [BZOJ4247]挂饰(DP)
当最终挂饰集合确定了,一定是先挂挂钩多的在挂挂钩少的. 于是按挂钩从大到小排序,然后就是简单的01背包. #include<cstdio> #include<algorithm> ...
- POJ 2728 JZYZOJ 1636 分数规划 最小生成树 二分 prim
http://172.20.6.3/Problem_Show.asp?id=1636 复习了prim,分数规划大概就是把一个求最小值或最大值的分式移项变成一个可二分求解的式子. #include< ...
- 【可持久化并查集】BZOJ3673-可持久化并查集 by zky
颓了十多天别问我再干嘛,在补学校作业 啊,开学了……我的夏天…… [题目大意] n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b ...
- poj 1456 贪心+STL
题意:有n个商品,每个商品如果能在截止日期之前售出就会获得相应利益,求能获得的最大利益 一开始对每个时间进行贪心,后来发现后面的商品可以放到之前来卖,然后就wa了 这里就直接对价格排序,把物品尽量放到 ...
- Codeforces Beta Round #5 A. Chat Server's Outgoing Traffic 水题
A. Chat Server's Outgoing Traffic 题目连接: http://www.codeforces.com/contest/5/problem/A Description Po ...
- C#中&和&&,|和||区别
当两者都为逻辑运算符时. 其实没什么差别. &&和||当已经确定结果时,不会对第二个操作数求值.也不知道什么情况会用到这个差别.做个笔记好了. http://blog.csdn.net ...