wittyResry / myIssue

My issue mark down^_^ 欢迎吐槽,讨论~~
https://github.com/wittyResry/myIssue/issues
The Unlicense
5 stars 1 forks source link

tsar使用 #93

Open wittyResry opened 5 years ago

wittyResry commented 5 years ago

一、Tsar使用

1、Tsar是什么?

   tsar是淘宝自己开发的一个采集工具(类似于sar工具),主要用来收集服务器的系统信息(如cpu,io,mem,tcp等),以及应用数据(如squid haproxy nginx等)。 收集到的数据存储在磁盘上,可以随时查询历史信息,输出方式灵活多样,另外支持将数据存储到mysql中,也可以将数据发送到nagios报警服务器。 tsar在展示数据时,可以指定模块,并且可以对多条信息的数据进行merge输出,带--live参数可以输出秒级的实时信息。

官方网址:http://tsar.taobao.org/

github地址:https://github.com/kongjian/tsar

https://github.com/alibaba/tsar/blob/master/info.md (https://segmentfault.com/a/1190000005339231)

tcp
字段含义
active:主动打开的tcp连接数目
pasive:被动打开的tcp连接数目
iseg: 收到的tcp报文数目
outseg:发出的tcp报文数目
EstRes:Number of resets that have occurred at ESTABLISHED
AtmpFa:Number of failed connection attempts
CurrEs:当前状态为ESTABLISHED的tcp连接数
retran:系统的重传率
采集方法
tcp的相关计数器文件是:/proc/net/snmp
主要关注一下重传率的计算方式:
retran = (RetransSegs-last RetransSegs) / (OutSegs-last OutSegs) * 100%
采集方法

mem
字段含义
free: 空闲的物理内存的大小
used: 已经使用的内存大小
buff: buff使用的内存大小,buffer is something that has yet to be "written" to disk.
cach: 操作系统会把经常访问的东西放在cache中加快执行速度,A cache is something that has been "read" from the disk and stored for later use
total: 系统总的内存大小
util: 内存使用率
内存的计数器在/proc/meminfo,里面有一些关键项
    MemTotal:      7680000 kB
    MemFree:        815652 kB
    Buffers:       1004824 kB
    Cached:        4922556 kB
含义就不解释了,主要介绍一下内存使用率的计算算法:
util = (total - free - buff - cache) / total * 100%

load
字段含义
load1: 一分钟的系统平均负载
load5: 五分钟的系统平均负载
load15:十五分钟的系统平均负载
runq: 在采样时刻,运行队列的任务的数目,与/proc/stat的procs_running表示相同意思
plit: 在采样时刻,系统中活跃的任务的个数(不包括运行已经结束的任务)
采集方法
/proc/loadavg文件中保存的有负载相关的数据
0.00 0.01 0.00 1/271 23741
分别是1分钟负载,五分钟负载,十五分钟负载,运行进程/总进程 最大的pid
只需要采集前五个数据既可得到所有信息
注意:只有当系统负载除cpu核数>1的时候,系统负载较高

traffic
字段含义
bytin: 入口流量byte/s
bytout: 出口流量byte/s
pktin: 入口pkt/s
pktout: 出口pkt/s
采集方法
流量的计数器信息来自:/proc/net/dev
字段的含义第一行已经标示出来,每一行代表一个网卡,tsar主要采集的是出口和入口的bytes/packets
注意tsar只对以eth和em开头的网卡数据进行了采集,像lo这种网卡直接就忽略掉了,流量的单位是byte

2、总体架构

Tsar是基于模块化设计的程序,程序有两部分组成:框架和模块。

框架程序源代码主要在src目录,而模块源代码主要在modules目录中。

框架提供对配置文件的解析,模块的加载,命令行参数的解析,应用模块的接口对模块原始数据的解析与输出。 模块提供接口给框架调用。

tsar依赖与cron每分钟执行采集数据,因此它需要系统安装并启用crond,安装后,tsar每分钟会执行tsar --cron来定时采集信息,并且记录到原始日志文件。

3、tsar的运行流程图如下:

image

主要执行流程有:

(1)解析输入

根据用户的输入,初始化一些全局信息,如间隔时间,是否merge,是否指定模块,运行模式

(2)读取配置文件信息

主要解析tsar的配置文件,如果include生效,则会解析include的配置文件

配置文件用来获得tsar需要加载的模块,输出方式,每一类输出方式包含的模块,和此输出方式的接收信息

如mod_cpu on代表采集cpu的信息

output_interface file,nagios表示向文件和nagios服务器发送采集信息和报警信息

(3)加载相应模块

根据配置文件的模块开启关闭情况,将模块的动态库load到系统

(4)tsar的三种运行模式

tsar在运行的时候有三种模式:

print模式仅仅输出指定的模块信息,默认显示最近一天的;

live模式是输出当前信息,可以精确到秒级

cron模式,此一般是crontab定时执行,每一分钟采集一次所有配置的模块信息,并将数据写入原始文件,在cron运行的时候 会判断是否配置输出到db或者nagios,如果配置则将相应格式的数据输出到对应接口。

(5)释放资源

程序最后,释放动态库,程序结束

6、命令行使用

tsar命令行主要担负显示历史数据和实时数据的功能,因此有控制展示模块和格式化输出的参数,默认不带任何参数/选项的情况下,tsar打印汇总信息。

tsar命令行主要显示给人看的,所以数据展示中都进行了k/m/g等的进位。

tsar命令会在显示20行数据后再次打印各个列的列头,以利于用户理解数据的含义。

tsar的列头信息包括2行,第一行为模块名,第二行为列名。

tsar输出最后会作min/avg/max的汇总统计,统计所展示中的最小/平均/最大数据。

7、常用选项

查看历史数据,tsar

--live/-l 启用实时模式,类似iostat等,可以配合-i参数和模块参数使用。

--interval/-i 控制时间间隔,在打印历史数据中,单位是分钟,默认显示间隔5分钟;而实时模式(-l)下,单位是秒,默认是5秒。

--ndays/-n 控制显示多长时间的历史数据,默认1,单位天

--merge/-m 对有多个数据的展示,进行汇总,如机器上跑了3个squid,可以用 tsar --squid -m的放式进行展示汇总。

--cron 用于cron运行tsar采集功能。

8、使用方法

[root@example.com ~]# tsar -i 1 -l #以1秒钟为间隔,实时打印tsar的概述数据 Time ---cpu-- ---mem-- ---tcp-- -----traffic---- --sda--- --sdb--- ---load- Time util util retran pktin pktout util util load1
01/10-14:43 1.0 34.6 0.0 3.0 1.0 0.0 0.0 0.0
01/10-14:43 0.0 34.6 0.0 1.0 1.0 0.0 0.0 0.0
01/10-14:43 1.0 34.6 0.0 3.0 1.0 0.0 0.0 0.0

tsar 显示1天内的历史汇总(summury)信息,以默认5分钟为间隔

tsar --cpu -i 1 显示一天内cpu的历史信息,以1分钟为间隔

tsar --live --mem -i 2 以2秒钟为间隔,实时打印mem的数据。

tsar --cpu --mem -i 1 显示一天内的cpu和内存历史数据,以1分钟为间隔。

wittyResry commented 1 year ago

https://github.com/alibaba/tsar

$ wget -O tsar.zip https://github.com/alibaba/tsar/archive/master.zip --no-check-certificate
$ unzip tsar.zip
$ cd tsar
$ make
# make install
# tsar -l -i 1
Time              ---cpu-- ---mem-- ---tcp-- -----traffic---- --vda--- --vda1-- --vdb--- --vdb1-- --vdb2-- --vdb3-- --dm-0-- --dm-1-- --dm-2-- --dm-3-- --dm-4--  ---load-
19/10/22-21:07:47  10.63    58.82     0.00   829.3K  398.7K     0.90     0.90    95.80    41.70     0.00    99.90    15.10     0.00     0.00    73.00    99.90      2.42