Tsar是淘宝的一个用来收集服务器系统和应用信息的采集报告工具,如收集服务器的系统信息(cpu,mem等),以及应用数据,收集到的数据存储在服务器磁盘上,可以随时查询历史信息,也可以将数据发送到nagios报警。
Tsar能够比较方便的增加模块,只需要按照tsar的要求编写数据的采集函数和展现函数,就可以把自定义的模块加入到tsar中。
一般是将Tsar和ATS部署到同一台物理主机上,以便于收集统计信息。
1.从官网下载最新版tsar源码
cd /usr/local/src
git clone git://github.com/kongjian/tsar.git
cd tsar
2.启用Tsar的ats监控模块
在conf/tsar.conf文件中的对应位置添加上如下on内容
mod_ts_cache on
mod_ts_client on
mod_ts_codes on
mod_ts_conn on
mod_ts_err on
mod_ts_os on
mod_ts_storage on
说明如下:
mod_ts_cache on #ts Cache信息
mod_ts_client on #ts前端信息
mod_ts_codes on #ts http_code
mod_ts_conn on #ts连接信息
mod_ts_err on #ts err信息
mod_ts_os on #ts回源信息
mod_ts_storage on #ts存储信息
安装之后配置文件会被复制到/etc/tsar/tsar.conf,排错的时候需要看这个配置文件对了没有。
3.调整ats特定模块中的源码,设置正确的ats的socket文件路径
在modules目录下的ats相关的模块c源码中都有ats的一个socket文件的指定,这个socket文件非常重要,如果位置对应不上,Tsar监控ats部分是不会出数据的。
例如mod_ts_client.c默认配置的socket文件的位置是”/var/run/trafficserver/mgmtapisocket”
默认安装的ats的socket文件在”/usr/local/var/trafficserver/mgmtapisocket”
把配置文件跟模块的socket文件修改好再编译安装就可以直接使用了。
在ats所在的服务器上面,搜索mgmtapisocket所在的路径
updatedb
locate mgmtapisocket
查到为
/usr/local/var/trafficserver/mgmtapisocket
然后用sed替换那些模块的默认路径
cd modules/
sed -i "s#/var/run/trafficserver/mgmtapisocket#/usr/local/var/trafficserver/mgmtapisocket#g" mod_ts_cache.c
sed -i "s#proxy.process.cache.ssd.read.success#proxy.process.cache.interim.read.success#g" mod_ts_cache.c //解决ssdhit没有数据显示的问题
sed -i "s#/var/run/trafficserver/mgmtapisocket#/usr/local/var/trafficserver/mgmtapisocket#g" mod_ts_client.c
sed -i "s#/var/run/trafficserver/mgmtapisocket#/usr/local/var/trafficserver/mgmtapisocket#g" mod_ts_codes.c
sed -i "s#/var/run/trafficserver/mgmtapisocket#/usr/local/var/trafficserver/mgmtapisocket#g" mod_ts_conn.c
sed -i "s#/var/run/trafficserver/mgmtapisocket#/usr/local/var/trafficserver/mgmtapisocket#g" mod_ts_err.c
sed -i "s#/var/run/trafficserver/mgmtapisocket#/usr/local/var/trafficserver/mgmtapisocket#g" mod_ts_os.c
sed -i "s#/var/run/trafficserver/mgmtapisocket#/usr/local/var/trafficserver/mgmtapisocket#g" mod_ts_storage.c
cd ..
可以将上面操作写成一个脚本
如果还是不出数据,查看配置文件records.config,确保
CONFIG proxy.config.http.enable_http_stats INT 1
注意要点,主要就两点:
1)./etc/tsar/tsar.conf中启用ATS相关的所有模块on;
2).ATS每个模块的源码文件的socket文件配置与ATS实际安装的socket文件路径一致。
4.在tsar顶层目录下面继续编译和安装
make
make install
5.使用tsar
查看历史数据,tsar
-L/–list 查看可用的模块列表
-l/–live 查看实时数据,tsar -l –cpu
-i/–interval 指定间隔,历史,tsar -i 1 –cpu
–modname 指定模块,tsar –cpu
-s/–spec 指定字段,tsar –cpu -s sys,util
-d/–date 指定日期,YYYYMMDD或者n代表n天前
-C/–check 查看最后一次的采集数据
-d/–detail 能够指定查看主要字段还是模块的所有字段
-h/–help 帮助功能
一般固定格式 为 tsar –-模块名 -i 1 -l
tsar 命令帮助信息
tsar --ts 显示ATS客户端相关的统计信息
tsar --ts_cache 显示ATS缓存对象统计信息
tsar --ts_conn 显示ATS网络连接统计信息
tsar --ts_os 显示ATS回源源站统计信息
tsar --ts_storage 显示ATS磁盘存储统计信息
#指定时间间隔方式
tsar --ts -i 1
#实时输出方式
tsar --ts -l 1
tsar -l -i 1
#或者组合方式
tsar --ts --ts_conn --ts_cache
需要注意,从理论上说,刚安装上tsar,就可以监测同一物理主机上的ATS了,但是立即查看数据时,它可能会显示
或者没有数据的情况
这都是正常现象,过一会儿就好了。
使用下面的命令确认tsar当前支持的模块列表
tsar -L
6.ats监测项说明
tsar
默认显示一天的监控记录,包括所有的项,最后一项是系统负载。
tsar --ts
qps 处理请求数/s
cons 新建连接/s
Bps 流量/s
rt 响应时间(ms)
rpc 连接复用率(平均每个连接服务多少个请求数)
tsar --ts_cache
hit 请求命中率
ramhit 内存命中率
band 字节命中率
ssdhit 分级存储,ssd命中率
tsar --ts_conn
client 前端连接数,#对文件句柄要求较高
server 回源连接数
cache 读取Cache的连接数
open 总计打开的连接
c_act 活跃的client连接数
t_cli 正在传输的client连接数,最占用内存的,一个连接占用16k
t_srv 正在传输的回源连接数
tsar --ts_os
qps 回源请求数/s
cons 回源新建连接/s
mbps 回源流量
rpc 回源连接复用
tsar --ts_storage
ram 内存使用大小
disk 磁盘使用大小
objs object数量
size 平均object大小
tsar --ts_err -i 1 -l
分析ats的各种错误并汇总。
tsar --ts_codes -i 1 -l
查看各种响应码的次数汇总
对ats的各种响应码做次数汇总。
7.生成rpm包
线上使用时如果提供rpm包安装将会很方便,其实在源码中的rpm子目录下面已经提供了好了tsar.spec.in和生成rpm包的脚本,我们只需要执行下面的命令就可以
如何打rpm包?
进入源码目录中的rpm子目录下面,直接执行
sh tsar-build.sh /root tsar 2.1.3 20160731
打好的rpm包将会放到该目录下面,复制出来直接安装就可以啦,参见下面的截图
8.高级功能
下面是线上环境经常使用的命令
待续
9.重要事项说明
目前tsar源码中不知何故,已经删除了ATS相关的模块,如果我们需要继续使用tsar来监控ATS的话,请下载比较早期的版本,确保源码中modules子目录下面有module_ts_xxx.c相关的文件。
参考文献
[1].https://blog.zymlinux.net/index.php/archives/251
[2].http://itoedr.blog.163.com/blog/static/12028429720132463325268/
[3].https://github.com/alibaba/tsar
[4].https://github.com/yanghao-zh/trafficserver-admin-books-zh_CN/blob/master/doc/ats_tsar.md
[5].http://www.shencan.net/index.php/2013/04/18/%E6%B7%98%E5%AE%9Dtsar-%E5%BC%80%E6%BA%90%E6%80%A7%E8%83%BD%E7%9B%91%E6%8E%A7%E9%87%87%E9%9B%86%E5%B7%A5%E5%85%B7/
[6].http://www.csdn.net/article/2013-04-15/2814879-taobao-opensource-monitoring-tool-tsar
[7].https://blog.zymlinux.net/index.php/archives/1050