RRD是Round Robin Database的缩写,用于记录固定数目,具有循环特性,并且在当前时间点有特定值的数据(比如以天为单位记录气温)。
创新互联公司服务项目包括琼山网站建设、琼山网站制作、琼山网页制作以及琼山网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,琼山网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到琼山省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
RRDtool是由Tobias Oetikertobi@oetiker.ch和广大开源爱好者贡献的遵循工业标准的、开源、高性能的RRD数据存储、图像生成工具包。可以用于编写自定义的系统监控shell脚本它支持Perl、Python、Ruby、TCL和PHP(编译为扩展模块)等语言,可以轻松的构建跨平台的监控应用程序。
ganglia简介
名词说明
引用自此博客介绍
Metrics- 监控电脑的运行数据
Node - 一台电脑,或许拥有多个CPU,中文称之为节点。
Cluster - 一组节点,中文称之为簇。通常节点之间拥有达到G比特的高带宽,簇内通过组播协议,每个节点组播自己的数据,所以每个节点拥有整个簇的状态,这种冗余设计可以提高簇的鲁棒性。一般簇内节点为相同的系统和体系结构,由同一个管理员管理。
Grid - 一组簇,中文可称之为网格。网格的用处是在一个大范围内把各异构的簇通过宽带汇聚在一起。
Ganglia的各种组成
功能
名称及配置文件
位置
数据采集器 名叫gmond(Ganglia MONitor Daemon)的服务程序,配置文件是/etc/ganglia/gmond.conf 位于每个Node上
数据混合收集器 名叫gmetad(Ganglia METAdata Daemon)的服务程序,配置文件是/etc/ganglia/gmetad.conf。它通过轮询收集gmond的数据,并聚合簇的各类信息,然后保存在本地rrdtool的数据库中 最好每个cluster都有一个gmetad,以便能构建多级网络
Web可视化工具 这是用PHP脚本实现的将数据可视化,并画出表格。可以是任何支持PHP、SSL和XML的web服务器。一般都用Apache2 web服务器 一般与gmetad部署在一个节点上
额外的高级工具 gmetric可以用来添加你需要监控的Node额外状态
gstat可以直接获得Ganglia的数据 每台需要这些功能的Node上
实验环境
机器
系统
软件
ip1 centos 7 gmetad + gmond +ganglia-web 3.7.2
ip2 centos 5 gmond 3.7.1
ip3 centos 5 gmond 3.7.1
ip4 centos 5 gmond 3.7.1
ip5 centos 5 gmond 3.7.1
ip6 centos 5 gmond 3.7.1
ip7 centos 5 gmond 3.7.1
ganglia安装配置
安装
ip1 安装ganglia主节点
yum -y install epel-release
yum -y install rrdtool httpd
yum -y install ganglia-devel ganglia-gmetad ganglia-gmond
yum -y install php ganglia-web
ip2-ip7 安装ganglia从节点
yum -y install epel-release
yum -y install ganglia-mond
配置
ganglia配置文件目录:/etc/ganglia
rrd数据库存放目录:/var/lib/ganglia/rrds
httpd主站点目录:/var/www/html
ganglia-web安装目录:/usr/share/ganglia
ganglia-web配置目录:/etc/httpd/conf.d/ganglia.conf
相关配置文件修改
将ganglia-web安装目录链接到httpd主站点目录
将 ganglia-web 的 站 点 目 录 连 接 到 httpd 主 站 点 目 录 $ ln -s /usr/share/ganglia /var/www/html
修改httpd主站点目录下ganglia站点目录的访问权限
将 ganglia 站点目录访问权限改为 apache:apache,否则会报错
$ chown -R apache:apache /var/www/html/ganglia
$ chmod -R 755 /var/www/html/ganglia12
- 修改rrd数据库存放目录访问权限 将 rrd 数据库存放目录访问权限改为12
$ chown -R ganglia:ganglia /var/lib/ganglia/rrds
- 修改ganglia-web的访问权限:修改/etc/httpd/conf.d/ganglia.conf
12
Alias /ganglia /usr/share/ganglia
Location /ganglia
Require all granted
#Require ip 10.1.2.3
#Require host example.org
/Location123456
配置/etc/ganglia/gmond.conf
cluster {
name = "hadoop cluster" ... }
udp_send_channel {
#the host who gather this cluster's monitoring data and send these data to gmetad node
host = ip1
port = 8649 }
udp_recv_channel {
port = 8649 }
tcp_accept_channel {
port = 8649 } 123456789101112131415161718
2.2 Hadoop cluster被监测节点的配置 配置/etc/ganglia/gmond.conf
cluster {
name = "hadoop cluster" ... }
udp_send_channel {
# the host who gather this cluster's monitoring data and send these data to gmetad node
host = ip1
port = 8649 }
udp_recv_channel {
port = 8649 }
tcp_accept_channel {
port = 8649 }1234567891011121314151617
Hadoop配置
主节点:
# 修改/hadoop/etc/hadoop/hadoop-metrics2.propertiesnamenode.sink.ganglia.servers=ip1:8649resourcemanager.sink.ganglia.servers=ip1:8649mrappmaster.sink.ganglia.servers=ip1:8649jobhistoryserver.sink.ganglia.servers=ip1:8649*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10*.sink.ganglia.supportsparse=true
*.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
*.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=401234567891011
从节点
datanode.sink.ganglia.servers=ip1:8649nodemanager.sink.ganglia.servers=ip1:8649*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10*.sink.ganglia.supportsparse=true
*.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
*.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=401234567
成果
可以看到有datanode相关信息
注意问题
ganglia反应有点慢,每次重启后,数据得等一阵子才显示出来。这个也跟设置的有关,10秒一次显示
我本来配置每个节点都有gmond,cluster的信息发送到本地的gmond,由gmond发送给gmetad,但是一直不成功。我使用了telnet localhost 8649,能看到数据,但是gmetad就是不显示。暂时也没找到什么原因。
首先介绍下 pt-stalk,它是 Percona-Toolkit 工具包中的一个工具,说起 PT 工具包大家都不陌生,平时常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自于这个工具包,这里就不多介绍了。
pt-stalk 的主要功能是在出现问题时收集 OS 及 MySQL 的诊断信息,这其中包括:
1. OS 层面的 CPU、IO、内存、磁盘、网络等信息;
2. MySQL 层面的行锁等待、会话连接、主从复制,状态参数等信息。
而且 pt-stalk 是一个 Shell脚本,对于我这种看不懂 perl 的人来说比较友好,脚本里面的监控逻辑与监控命令也可以拿来参考,用于构建自己的监控体系。
三、使用
接着我们来看下如何使用这个工具。
pt-stalk 通常以后台服务形式监控 MySQL 并等待触发条件,当触发条件时收集相关诊断数据。
触发条件相关的参数有以下几个:
function:
∘ 默认为 status,代表监控 SHOW GLOBAL STATUS 的输出;
∘ 也可以设置为 processlist,代表监控 show processlist 的输出;
variable:
∘ 默认为 Threads_running,代表 监控参数,根据上述监控输出指定具体的监控项;
threshold:
∘ 默认为 25,代表 监控阈值,监控参数超过阈值,则满足触发条件;
∘ 监控参数的值非数字时,需要配合 match 参数一起使用,如 processlist 的 state 列;
cycles:
∘ 默认为 5,表示连续观察到五次满足触发条件时,才触发收集;
连接参数:host、password、port、socket。
其他一些重要参数:
iterations:该参数指定 pt-stalk 在触发收集几次后退出,默认会一直运行。
run-time:触发收集后,该参数指定收集多长时间的数据,默认 30 秒。
sleep:该参数指定在触发收集后,sleep 多久后继续监控,默认 300 秒。
interval:指定状态参数的检查频率,判断是否需要触发收集,默认 1 秒。
dest:监控数据存放路径,默认为 /var/lib/pt-stalk。
retention-time :监控数据保留时长,默认 30 天。
daemonize:以后台服务运行,默认不开启。
log:后台运行日志,默认为 /var/log/pt-stalk.log。
collect:触发发生时收集诊断数据,默认开启。
∘ collect-gdb:收集 GDB 堆栈跟踪,需要 gdb 工具。
∘ collect-strace:收集跟踪数据,需要 strace 工具。
∘ collect-tcpdump:收集 tcpdump 数据,需要 tcpdump 工具。