介绍
Tsar(淘宝系统活动报告器)是一个监控工具,可以用来收集和汇总系统信息,例如CPU、负载、IO,以及应用程序信息,例如nginx、HAProxy、Squid等,结果可以存储在本地磁盘或发送到 Nagios。
Tsar 可以通过编写模块轻松扩展,这使其成为功能强大且用途广泛的报告工具。
模块介绍:信息
安装
Tsar 在 GitHub 上可用,您可以按如下方式克隆和安装它:
$ git clone https://github.com/alibaba/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
, 这是 tsar 的主要配置文件;/etc/cron.d/tsar
, 用于每分钟运行 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
通常,我们通过简单的编辑来配置 Tsar /etc/tsar/tsar.conf
:
- 要添加模块,请添加如下一行
mod_<yourmodname> on
- 要启用或禁用模块,请使用
mod_<yourmodname> on/off
- 要为模块指定参数,请使用
mod_<yourmodname> on parameter
output_stdio_mod
是将模块输出设置为标准 I/Ooutput_file_path
是设置历史数据文件,(你也应该修改logrotate脚本/etc/logrotate.d/tsar
)output_interface
指定 tsar 数据输出目的地,默认为本地文件。有关更多信息,请参阅高级部分。
用法
- null :查看默认模组历史数据,
tsar
- --modname :指定要显示的模块,
tsar --cpu
- -L/--list : 列出可用模块,
tsar -L
- -l/--live : 显示实时信息,
tsar -l --cpu
- -i/--interval : 设置报告间隔,
tsar -i 1 --cpu
- -s/--spec :指定模块详细信息字段,
tsar --cpu -s sys,util
- -D/--detail : 不要将数据转换为 K/M/G,
tsar --mem -D
- -m/--merge : 合并乘以一,
tsar --io -m
- -I/--item :显示规格项目数据,
tsar --io -I sda
- -d/--date : 指定数据,YYYYMMDD,或者 n 表示 n 天前
- -C/--check : 显示最后收集的数据
- -h/--help :显示帮助,
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
由于 tsar 使用 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
在 tsar 的配置文件中添加输出类型。
然后指定将启用哪些模块:
output_db_mod mod_cpu,mod_mem,mod_traffic,mod_load,mod_tcp,mod_udpmod_io
请注意,您应该设置 tsar2db 侦听的 IP 地址(或主机名)和端口,例如:
output_db_addr console2:56677
Tsar2db 接收 sql 数据并将其刷新到 MySQL。您可以在https://github.com/alibaba/tsar2db 上找到有关 tsar2db 的更多信息。
模块开发
沙皇很容易扩展。每当您想要 tsar 尚未收集的信息时,您可以使用C
或编写模块Lua
。
C 模块
首先,安装 tsardevel 工具(make tsardevel
将为您执行此操作):
然后运行tsardevel <yourmodname>
,你会得到一个名为 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
以查看输出。
Lua 模块
首先,安装 tsarluadevel 工具(make tsarluadevel
将为您执行此操作):
然后运行tsarluadevel <yourmodname>
,你会得到一个名为 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 中的 register()、read() 和 set() 函数。然后运行make install
以安装您的模块并运行tsar --lua_yourmodname
以查看输出。
更多的
有任何问题,请随时通过kongjian@taobao.com与我联系