开发者学堂课程【企业运维监控平台架构设计与实现:ganglia的安装与配置过程】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/384/detail/4821
ganglia的安装与配置过程
目录:
一、Ganglia 监控管理端配置
二、Ganglia的客户端配置
三、Ganglia web端配置
一、Ganglia 监控服务端配置
安装完成之后,第三块就涉及到相关的配置,具体如何配置,登录服务器查看,它会自动安装包,例如 ganglia 库,客户端等包,最后一个就是 ganglia 核心程序,安装完成之后查看安装路径
具体服务配置:
登录服务器,执行yum命令
[root@host236 ganglia]# yum install ganglia*
执行完毕后会自动下载所需要的包
Ganglia-web
Ganglia-gmod-python
Ganglia-gemtad
Ganglia-gmode 扩展库
通过 yum 安装 ganglia,下载路径为 /etc/ganglia
第一个是关于服务端的配置文件:gmetad.conf
第二个是关于客户端的配置文件:gmond.conf
[root@host236 ganglia]# more gmetad.conf
1. 主要参数
监控管理端的配置文件是 gmetad.conf ,这个配置文件内容比较多,但是需要修改的配置仅有如下几个,我们只看重点,需要关注的点:
(1)Datasource:指定去拉去数据的源,后面跟上名称就行,我定义的mycluster相当于一个集群,多个客户端汇集到服务端,这边只是定义了一个
//举例:首先mycluster
#datasource"mycluster"10 localhost my.machine.edu:8649 1.2.3.5:8655
//10的意思是每10秒为更新数据的间隔
//根据域名主机名IP地址和端口获取数据 my.machine.edu:86491
//获取多个源使用空格进行分割
#data source "my grid" 50 1.3.4.7:8655 grid.org:8651 grid-backup.org:8651
#datasource"another source"1.3.4.7:86551.3.4.8
//指定去拉去数据的源一个客户端汇聚到服务端
data source
"Cluster1"
cloudocoud2
data source:
此参数定义了集群名字,以及集群中的节点。
Cluster1 就是这个集群的名称,cloudo 和 cloud2 指明了从这两个节点收集数据duster1 后面指定的节点名可以是 IP 地址,也可以是主机名,由于采用了 multicast 模式,每个 gmond 节点都有本 Cluster1 集群节点所有监控数据,因此不需要把所有节点都写入 datasource 中。
建议写入不低于2个,这样,在 coudo 节点出现故障的时候,gmetad 会自动到 cloud2 节点采集数据,这样就保证了 Ganglia 监控系统的高可用性。
上面通过 datasource 参数定义了一个服务器集群 duster1,对于要监控多个应用系统的情况,还可以对不同用途的主机进行分组,定义多个服务器集群,分组方式可以通过下面的方法定义:
data source"mycluster"10localhost mymachineedu:8649 1235:8655 data source"mygrid"501.3.4.7:8655 grid org:8651grid-backup.org:8651data source"anothersource"13.4.7:865513.4.8
可以通过定义多个 datasource 来实现监控多个服务器集群,而每个服务器集群在定义集群节点的时候,可以采用主机名或 P 地址等形式,也可以加端口,如果不加端口,默认端口是8649,同时可以设定采集数据的频率,如上面的“10 localhost、5013.47:8655”等,分别表示每隔10秒钟、50秒钟采集一次数据。
(2)gridname
gridname: 此参数是定义一个网格名称。一个网格有多个服务器集群组成,每个服务器集群由“data source"选项来定义。
gridname "lIVEYGrid xml_port8651
(3) setuid_username
ganglia启动用户配置参数,默认值不需要更改
(4)xml port
xml port: 此参数定义了一个收集数据汇总的交互端口,如果不指定,默认是8651,可以通过 telnet 这个端口得到监控管理端收集到的客户端的所有数据。
interactive_port 8652
(5)interactive_port
interactive_port: 此参数定义了 Web 端获取数据的端口,这个端口在配置 Ganglia的 Web 监控界面时需要指定。
(6)rrd rootdir
rrd rootdir: 此参数定义了d数据库的存放路径,gmetad 在收集到监控数据后会将其更新到该目录下的对应的 rrd 数据库中。通过 yum 安装默认位置
rrd_rootdir"/var/lib/ganglia/rrds"
二、Ganglia监控客户端配置
关于客户端的配置文件:gmond.conf
[root@host236 ganglia]# more gmond.conf
globals {
daemonize= yessetuid = yes
user = gangli
//指定用户启动ganglia
debug levei =o
//改为1为调试模式
max udp msg len =
1472
mute = no
deaf = no
allow_extra_ data = yes
host_dmax = 86400 /*secs. Expires (removes from web interface
hosts in 1 day*/
host tmax=20/*secs*/
cleanup threshold = 300/*secs*/gexec = no
#By default gmond will use reverse DNS resolution when displaying your hostname# Uncommeting following value will override that value.
#override_hostname = "mywebserver.domain.com"
# If you are not using multicast this value should be set to something other than 0.
#otherwise if you restart aggregator gmond you will get empty graphs. 60 seconds is reasonablesend metadata interval =/*secs*/
监控非常多,数据很大,服务器非常多,每个节点负载大,形成网络风暴
Ganglia 监控客户端 gmond 安装完成后,配置文件位于 Ganglia 安装路径的 etc 目录下,名称为 gmond.conf ,这个配置文件稍微复杂,如下所示:
1. 主要参数
(1)globals
globals{
daemonize=yes
#是否后台运行,这里表示以后台的方式运行
setuid=yes
#是否设置运行用户,在Windows中需要设置为false
user=nobody
#设置运行的用户名称,必须是操作系统已经存在的用户,默认是nobody
debug_level=0
#调试级别,默认是o,表示不输出任何日志,数字越大表示输出的日志 越多
max_udp_msg_len=1472
mute = no.
#是否发送监控数据到其他节点,设置为no表示本节点将不再广播任何自 己收集到的数据到网络上
deaf=no
#是否接受其他节点发送过来的监控数据,设置为no表示本节点将不再接收任何其他节点广播的数据包
allow_extra_data=yes
#是否发送扩展数据
host_dmax=0/*secs*/
#是否删除一个节点,0代表永远不删除,0之外的整数代表节点的不响应时间,超过这个时间后,Ganglia 就会刷新集群节点信息进而删除此节点 cleanup threshold=300/*secs*/
#gmond 清理过期数据的时间
gexec=no
#是否使用 gexec 来告知主机是否可用,这里不启用
send metadata interval=0
#在单播协议中,新添加的节点在多长时间内响应一下以表示自己的存在,0代表仅在gmond启动时通知一次,单位秒
(2)cluster
cluster{
name ="Cluster1"
#集群的名称,是区分此节点属于某个集群的标志,必须和监控服务端 data_source 中的某一项名称匹配
owner="junfeng"
#节点的拥有者,也就是节点的管理员
latlong="unspedified"
#节点的坐标,经度、纬度等,一般无需指定
url="unspecified"
#节点的URL地址,一般无需指定
}
(3)host
host{
location="unspecified"
#节点的物理位置,一般无需指定
udp_send_channel{
#udp包的发送通道
mcast join=239.2.11.71
#指定发送的多播地址,多播地址为默认地址,可修改,其中23921171是一个D类地址。如果 使用单播模式,则要写host=host1,在单播模式下也可以配置多个udpsend channel
port=8649
#监听端口
ttl=1
#指定路由,一个局域网内值为1
udp_recv_channel{
#接收udp包配置
mcast join=239.2.11.71
#指定接收的多播地址,同样也是239211.71这个D类地址
port=8649
#监听端口
bind=239.2.11.71
#绑定地址
}
tcp_accept_channel{
port=8649
#通过tcp协议监听的端口,在远端可以通过连接到8649端口得到监控数据
}
在一个集群内,所有客户端的配置是一样的。完成一个客户端配置后,将配置文件复制到此集群内的所有客户端主机上即可完成客户端主机的配置。
Cond.d配置扩展信息
[root@host236 conf.d]# ls
cpu_stats.pyconf entropy-pyconf
multicpu. Conf procstat.pyconf
diskfree.pyconf mem_stats.pyconf
multi_interface.pyconfvm stats.pyconf diskstat.pyconf
modpython. Conf netstats.pyconf
拓展写自己的插件可将信息放入内
三、Ganglia web端配置
Ganglia 的 web 监控界面是基于 PHP 的,因此需要安装 PHP 环境。
有两种方式安装 Ganglia 的 web 监控界面
一种是 yum 直接安装,
另一种是通过源码安装。
两种方式安装配置文件一致
PHP 环境的安装这里不做介绍,大家可以在http://sourceforge.net/projects/ganglia/files/
下载 gangliaweb 的最新版本,然后将 gangliaweb 程序放到 ApcheWeb 的根目录即可,这里我们下载的版本是 ganglia-web-3.71。
配置 Ganglia 的 Web 界面比较简单,只需要修改几个 php 文件即可。首先是 conf default.php,可以将 onfdefaultphp 重命名为 confphp ,也可以保持不变,Ganglia 的 Web 默认先找 confphp,找不到会继续找 confdefaultphp ,需要修改的内容如下:
// ganglia web 的根目录
$conf['gweb_confdir']="/var/www/html/ganglia";
#ganglia程序安装目录
$conf[gmetad_root']="/opt/app/ganglia";
#ganglia web读取rrd数据库的路径,这 里是/opt/app/ganglia/rrds
$conf['rrds']="${conf['gmetad_root']}/rrds";
#需要“777”权限
$
conf['dwoocompileddir']="${conf['gwebconfdir']}/dwoo/compiled";
#需要“777”权限
$conf['dwoo_cache_dir']="${conf['gweb_confdir']}/dwoo/cache";
#指定rrdtool 的路径
$
conf['rrdtool']="/opt/rrdtool/bin/rrdtool";
#生成图形模板目录
$conf['graphdir']=$conf['gweb_root].'/graph.d';
#gmetad服务所在服务器的地址
$
conf[ganglia_ip']="127.0.01";
#gmetad服务器的交互式提供监控数据端口发布
$conf['ganglia port'=8652;
这里需要说明的是:“$conf['dwoo compiled dir']”和“$conf['dwoo cache dir']”指定的路径在默认情况下可能不存在,因此需要手动建立compiled和cache目录,并授予 Linux 下“777”的权限。另外,rrd数据库的存储目录 /opt/app/ganglia/rrds 一定要保证 rrdtool 可写,因此需要执行授权命令:
Chown-Rnobody:nobody/opt/app/ganglia/rrds
这样 rrdtoo 才能正常读取d数据库,进而将数据通过 Web 界面展示出来。其实 ganglia-web 的配置还是比较简单的,一旦配置出错会给出提示,根据错误提示进行问题排查,一般都能找到解决方法。
启动服务端和客户端,通过 web 端展示出来
IIVEYGrid Grid 服务端配置的内容,相当于一个集群点
全局图
分组图
绿色:网络进来量
蓝色:网络出去连
负载快照图
颜色区分
灰色:负载低,私有类
蓝色:负载0-24%
绿色:25-49%
浅黄色:50-75%
橙色:75-100%
红色:100%
颜色显示负载情况
重点关注指定服务器最大占用的内存:part_max_used
当值达到百分之八十,就会监控报警
Ganglia 支持移动端,在手机上可以查看状态信息。