tsar
收集服务器系统和应用信息的采集报告工具
淘宝系统活动报告(TabaoSystemActivityReporter)是一种监控工具,它可以用来收集和总结系统信息,如CPU、负载、IO和应用程序信息,如nginx、HAProxy、Squid等,结果可以存储在本地磁盘上,也可以发送到Nagios。
沙皇可以很容易地通过编写模块来扩展,这使得它成为一个强大而通用的报告工具。
总体架构
Tsar是基于模块化设计的程序,程序有两部分组成:框架和模块。
框架程序源代码主要在src目录,而模块源代码主要在modules目录中。
框架提供对配置文件的解析,模块的加载,命令行参数的解析,应用模块的接口对模块原始数据的解析与输出。 模块提供接口给框架调用。
tsar依赖与cron每分钟执行采集数据,因此它需要系统安装并启用crond,安装后,tsar每分钟会执行tsar –cron来定时采集信息,并且记录到原始日志文件。
在GitHub上可以使用沙皇,您可以按以下方式克隆和安装它:
$ git clone git://github.com/kongjian/tsar.git
$ cd tsar
$ make
# make install
或者您可以下载zip文件并安装它:
$ wget -O tsar.zip https://github.com/alibaba/tsar/archive/master.zip --no-check-certificate
$ unzip tsar.zip
$ cd tsar
$ make
# make install
安装后,您可能会看到以下文件:
/etc/tsar/tsar.conf,这是沙皇的主要配置文件;
/etc/cron.d/tsar,用于运行沙皇每分钟收集信息;
/etc/logrotate.d/tsar每月轮换沙皇的日志文件;
/usr/local/tsar/modules所有模块库(*.so)所在的目录;
默认情况下,安装后没有显示输出。快跑tsar -l要查看实时监视是否有效,例如:
[kongjian@tsar]$ tsar -l -i 1
Time ---cpu-- ---mem-- ---tcp-- -----traffic---- --xvda-- -xvda1-- -xvda2-- -xvda3-- -xvda4-- -xvda5-- ---load-
Time util util retran pktin pktout util util util util util util load1
11/04/13-14:09:10 0.20 11.57 0.00 9.00 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11/04/13-14:09:11 0.20 11.57 0.00 4.00 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
通常,我们通过简单的编辑来配置沙皇。/etc/tsar/tsar.conf:
若要添加模块,请添加如下所示的行mod_ on
若要启用或禁用模块,请使用mod_ on/off
若要指定模块的参数,请使用mod_ on parameter
output_stdio_mod是将输出的模块设置为标准I/O。
output_file_path是设置历史数据文件,(您应该修改log旋转式脚本)。/etc/logrotate.d/tsar)
output_interface指定沙皇数据输出目的地(默认情况下是本地文件)。有关更多信息,请参见高级部分
NULL:参见默认MODS历史数据,tsar
-modname:指定要显示的模块,tsar --cpu
-L/-名单:现有名单,tsar -L
-我/--现场直播:显示实时信息,tsar -l --cpu
-I/-间隔:确定报告间隔,tsar -i 1 --cpu
-s/-spec:指定模块详细信息字段,tsar --cpu -s sys,util
-D/-细节:不要将数据交予K/M/G,tsar --mem -D
-m/-合并:合并乘项为1,tsar --io -m
-I/-项目:显示规格项目数据,tsar --io -I sda
-d/-日期:指定数据,YYYYMMDD或n表示n天前
-C/--检查:显示上次收集的数据
-h/-帮助:显示帮助,tsar -h
输出到Nagios
要打开它,只需设置输出类型output_interface file,nagios在主配置文件中。
您还应该指定Nagios的IP地址、端口和发送间隔,例如:
####The IP address or the hostname running the NSCA daemon
server_addr nagios.server.com
####The port on which the daemon is listening - by default it is 5667
server_port 8086
####The cycle (interval) of sending alerts to Nagios
cycle_time 300
由于沙皇使用Nagios的被动模式,因此您应该指定NSCA二进制文件及其配置文件,例如:
####nsca client program
send_nsca_cmd /usr/bin/send_nsca
send_nsca_conf /home/a/conf/amon/send_nsca.conf
然后指定要检查的模块和字段。有4个阈值。
####tsar mod alert config file
####threshold servicename.key;w-min;w-max;c-min;cmax;
threshold cpu.util;50;60;70;80;
输出到MySQL
若要使用此功能,只需添加输出类型output_interface file,db沙皇的配置文件。
然后指定将启用哪个模块:
output_db_mod mod_cpu,mod_mem,mod_traffic,mod_load,mod_tcp,mod_udpmod_io
请注意,您应该设置tar2db侦听的IP地址(或主机名)和端口,例如:
output_db_addr console2:56677
Tsar2db接收SQL数据并将其刷新到MySQL。您可以在https://github.com/alibaba/tsar2db.
沙皇很容易扩展。当您需要沙皇尚未收集的信息时,您可以用C或Lua.
首先,安装tsardevel工具(make tsardevel会为你这样做的):
那就跑tsardevel ,您将得到一个名为Yourmodname的目录,例如:
[kongjian@tsar]$ tsardevel test
build:make
install:make install
uninstall:make uninstall
[kongjian@tsar]$ ls test
Makefile mod_test.c mod_test.conf
您可以根据需要修改mod_test.c中的read_test_stats()和set_test_Record()函数。那就跑make;make install安装模块并运行tsar --yourmodname以查看输出。
首先,安装Tarluadevel工具(make tsarluadevel会为你这样做的):
那就跑tsarluadevel ,您将得到一个名为Yourmodname的目录,例如:
[kongjian@tsar]$ tsarluadevel test
install:make install
uninstall:make uninstall
test:tsar --list or tsar --lua_test --live -i 1
[kongjian@tsar]$ ls test
Makefile mod_lua_test.conf mod_lua_test.lua
您可以根据需要在mod_lua_test.lua中修改、()、read()和set()函数。那就跑make install安装模块并运行tsar --lua_yourmodname以查看输出。
参考链接
https://github.com/alibaba/tsar
https://tool.lu/software/detail/1t.html
链接:https://www.jianshu.com/p/5562854ed901