*
数据采集工具Tsar
*
主要内容
Tsar的介绍
Tsar的设计
Tsar的自定义模块
相关文档
*
采集对象
服务器信息
cpu load mem tcp traffic io partition等
如tcp模块:连接数,数据包数,重传率
应用信息
apache haproxy squid nginx
如apache模块采集响应时间,QPS
具体字段参考
Tsar的介绍
*
Tsar的介绍
数据使用方式
保存到本地文件
/var/log/保存原始日志,通过
logrotate轮转,保存模块字段计数器如: 1306892761|--tcp:744,11,18789,18517,280|--load:103,109,105,0,403
远程数据库
tsar中配置远程数据库,将数据发送到mysql
配合tsar2db包进行使用,目前cdn上所有节点通过
该方式采集和汇总数据,进行中心展现和保存
Nagios
按照nagios协议要求,发送报警数据到nagios,
达到报警的目的,在tsar中只需要配置阀值即可
*
Tsar的介绍
Tsar的配置使用
主配置文件
/etc/tsar/
配置模块的开关和每种输出方式的模块
mod_cpu on/off
output_db_mod output_nagios_mod等
支持include方式,自定义模块的配置文件可以放在
/etc/tsar/
报警配置文件
/etc/tsar/
指定nagios报警服务器和特定模块的指定字段阀值
threshold ;N;5;10;N;
*
Tsar的介绍
Tsar的数据展现
命令行方式查看各模块的数据,通用参数:
指定模块 --tcp –apache
Merge显示 -m
帮助信息--list --help
历史模式
指定天数 -n 3
指定间隔(分) -i 5
Live模式
指定间隔(秒) -i 1
Cron模式
tsar安装后会每分钟执行一次tsar -c
*
代码分布
Src 框架程序
Modules 模块代码
Include 头文件
Conf 配置文件
Tools 画图脚本
框架部分
解析参数和配置文件
根据输入,决定运行模式和需要处理的模块
管理模块
加载模块,调用数据采集函数和处理函数,释放模块
框架中为模块提供了一些可选的处理方式
Tsar的设计
*
框架的处理流程
Tsar的设计
*
框架输出数据
输出到mysql和nagios
模块部分
模块需要采集的数据定义
模块数据的字段名,字段个数和默认显示
采集函数
采集本模块需要的字段值,赋给mod->record
数据处理函数
告知框架原始数据和最终显示的每个字段的转化方法
Tsar的设计
*
数据字段和处理方式定义
struct mod_info traffic_info[] = {
{"bytout", DETAIL_BIT, MERGE_NULL, STATS_NULL},}
第一部分是字段名称,不超过6个字符
第二部分是是否默认显示出来SUMMARY_BIT/DETAIL_BIT/HIDE_BIT
第三部分是merge方式MERGE_AVG/MERGE_SUM/MERGE_NULL
第四部分是数据处理方式STATS_SUB/STATS_SUB_INTER/STATS_NULL
原始数据收集
收集到原始数据后,通过set_mod_record设置完 成 ,字段之间通过‘,’分割,item之间通过‘;’
Tsar自定义模块
*
结果数据处理
对收集的原始数据处理,得到最终展现的结果
如果需要对原始日志做特定处理,需要重写处理函数
set_squid_record(struct module *mod, double st_array[],
U_64 pre_array[], U_64 cur_array[], int inter)
st_array代表要展示的数据
pre_array和cur_array分别是上次和本次的原始数据
inter是两次采集的间隔时间
模块注册
void register_mod_fileds(struct module *mod,
char *opt, char *usage,struct mod_info *info,
int n_col, void *data_collect, void *set_st_record)
opt是模块快捷方式,usage是模块介绍,info是数 据信息,n_col是列数目,data_collect是采集函数 ,set_st_record是结果计算函数
Tsar自定义模块
*
Baike
淘蝌蚪
SVN地址
tsar
相关文档