前言
做性能验证往往需要去监控系统的各项性能指标,Linux系统监控工具有很多,但对于命令行操作,安装便捷,监控项较全面等方面,个人比较推荐tsar
tsar
介绍
TSAR(Taobao System Activity Reporter))是淘宝自己开发的采集工具。
主要用来收集服务器的系统信息(如cpu,io,mem,tcp等),以及应用数据(如squid haproxy nginx等)。收集到的数据存储在磁盘上,可以随时查询历史信息,输出方式灵活多样,另外支持将数据存储到mysql中,也可以将数据发送到nagios报警服务器。Tsar在展示数据时,可以指定模块,并且可以对多条信息的数据进行merge输出,带–live参数可以输出秒级的实时信息。Tsar能够比较方便的增加模块,只需要按照tsar的要求编写数据的采集函数和展现函数,就可以把自定义的模块加入到Tsar中。
总体架构
Tsar是基于模块化设计的程序,程序有两部分组成:框架和模块。
- 框架程序源代码主要在src目录,而模块源代码主要在modules目录中。
- 框架提供对配置文件的解析,模块的加载,命令行参数的解析,应用模块的接口对模块原始数据的解析与输出。 模块提供接口给框架调用。
Tsar依赖与cron每分钟执行采集数据,因此它需要系统安装并启用crond,安装后,tsar每分钟会执行tsar --cron来定时采集信息,并且记录到原始日志文件。
安装tasr
有两种安装方式
- clone代码
git clone git://github.com/alibaba/tsar.git cd tsar make make install
- 下载源码-我是采用的这个方法
#依次执行以下命令即可 1.wget -O tsar.zip https://github.com/alibaba/tsar/archive/master.zip --no-check-certificate 2.unzip tsar.zip 3.cd tsar-master 4.make 5.make install
执行命令:
wget -O tsar.zip https://github.com/alibaba/tsar/archive/master.zip --no-check-certificate
解压:unzip tsar.zip
执行命令:
cd tsar-master
make
执行命令:make install
tsar配置介绍
安装完tsar后会生成如下的文件
Tsar配置文件路径:/etc/tsar/tsar.conf,tsar的采集模块和输出的具体配置;
定时任务配置:/etc/cron.d/tsar,负责每分钟调用tsar执行采集任务;
日志文件轮转配置:/etc/logrotate.d/tsar,每个月会把tsar的本地存储进行轮转;
模块路径:/usr/local/tsar/modules,各个模块的动态库so文件;
配置文件
负责tsar的采集模块和输出的具体配置;在这里配置启用哪些模块,输出等内容。
cd /etc/tsar/tsar.conf
常用参数说明
可结合下文参数,来对应查看/etc/tsar/tsar.conf文件
debug_level 指定tsar的运行级别,主要用来调试使用
mod_xxx on/off 开启指定模块
out_interface 设置输出类型,支持file,nagios,db
out_stdio_mod 设置用户终端默认显示的模块
output_db_mod设置哪些模块输出到数据库
output_db_addr 数据库的ip和端口
output_nagios_mod设置哪些模块输出到nagios
include 支持include配置,主要用来加载用户的自定义模块
cycle_time指定上报的间隔时间,由于tsar每一分钟采集一次,上报时会判断是否符合时间间隔,如设置300的话,则在0,5等整点分钟会上报nagios
threshold 设置某个要报警项的阀值,前面是模块和要监控的具体名称,后面的四个数据代表报警的范围,warn和critical的范围
定时任务配置
每分钟以root用户的角色调用tsar命令来执行数据采集。
cat /etc/cron.d/tsar
日志文件
每个月会把tsar的本地存储进行轮转,此外这里也设定了数据在/var/log/tsar.data下
cd /etc/logrotate.d/tsar
tsar使用
在Tsar的使用中,如下是可以参考的帮助信息,但实际使用可可能不会涉及如此多,可以直接参考下一个实际使用
Usage: tsar [options] Options: -check 查看最后一次的采集数据 --check/-C 查看最后一次tsar的提醒信息,如:tsar --check / tsar --check --cpu --io --watch/-w 显示最后多少分钟的记录. 如:tsar --watch 30 / tsar --watch 30 --cpu --io --cron/-c 使用crond模式来进行tsar监控 --interval/-i 指明tsar的间隔时间,默认单位分钟,默认显示间隔5分钟;带上--live参数则单位是秒,默认是5秒。 --list/-L 列出启用的模块 --live/-l 启用实时模式,类似iostat等,可以配合-i参数和模块参数使用。 --file/-f 指定输入文件 --ndays/-n 控制显示多长时间的历史数据,默认1天 --date/-d 指定日期,YYYYMMDD或者n代表n天前 --merge/-m 对有多个数据的展示,进行汇总,如机器上跑了3个squid,可以用 tsar –squid -m的放式进行展示汇总。 --detail/-D 能够指定查看主要字段还是模块的所有字段 --spec/-s 指定字段,tsar –cpu -s sys,util --item/-I 显示指定项目数据, 如:tsar --io -I sda -–help/-h 显示提示信息和模块信息 Modules Enabled: --cpu 列出cpu相关的监控计数 --mem 物理内存的使用情况 --swap 虚拟内存的使用情况 --tcp TCP协议IPV4的使用情况 --udp UDP协议IPV4的使用情况 --traffic 网络传出的使用情况 --io Linux IO的情况 --pcsw 进程和上下文切换 --partition 磁盘使用情况 --tcpx TCP连接相关的数据参数 --load 系统负载情况
tsar实际使用参考
查看可用的监控模块列表
tsar -L
可在配置文件中调整:/etc/tsar/tsar.conf
查看CPU情况
tsar --cpu
user表示用户空间cpu使用情况
sys表示内核空间cpu使用情况
wait表示IO对应的cpu使用情况
hirq,sirq分别是硬件中断,软件中断的使用情况
util是系统使用cpu的总计情况
依次类推:
可针对的查看下面具体某项或某几项的情况
cpu mem swap tcp udp traffic io pcsw partition tcpx load
tsar常用命令
显示1天内的历史汇总(summury)信息,以默认5分钟为间隔
tsar
查看所有监控项实时数据
tsar -l
查看所有监控项,历史或实时数据,以每次1秒钟作为采集显示
tsar -d 1 --cpu --load --mem -i 1 #-d 1: 查看一天前的数据;去掉-d 1则表示查询截止目前24小时内的数据 #-i 1 : 表示以每次1分钟作为采集显示;
查看所有监控项历史或实时数据,以每次1秒钟作为采集显示
tsar -i 1 -l #-l: 实时数据;不加-l就是所有历史数据了
查出指定监控项实时数据,以每次1秒钟作为采集显示
tsar --cpu --load --mem -i 1 -l
查出指定监控项实时数据,以每次5秒钟作为采集显示
tsar --cpu --load --mem -l 5
追溯历史日期的数据
tsar --load --cpu -d "20230111" -f /var/log/tsar.data 或 tsar --load --cpu -d "20230111" #-d : 指定历史日期; #-f : 指定tsar的数据文件;