linux网络命令(十)之tsar

一、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

2、总体架构

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

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

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

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

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

主要执行流程有:

(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)释放资源

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

4、安装tsar

[[email protected] ~]# wget http://code.taobao.org/p/tsar/file/1799/tsar-2.1.0.tar.gz
[[email protected] ~]# tar -xf tsar-2.1.0.tar.gz 
[[email protected] ~]# cd tsar-2.1.0
[[email protected] tsar-2.1.0]# ./configure
[[email protected] tsar-2.1.0]# make && make install

安装完成后,通过查看该工具的安装目录结构,可以发现其同其他应用程序大致相同,有以下几大部分组成:

可执行文件

/usr/bin/tsar /usr/bin/tsardevel

计划执行与输出轮询

/etc/cron.d/tsar.cron  /etc/logrotate.d/tsar.logrotate (默认120个)

配置目录及配置文件

/etc/tsar  etc/tsar/nagios.conf    /etc/tsar/tsar.conf  /etc/tsar/conf.d

模块文件目录

/usr/local/tsar/modules

帮助文件

/usr/local/man/man8/

5、tsar配置文件

[[email protected] ~]# cat /etc/tsar/tsar.conf 
#debug_level(INFO DEBUG WARN ERROR FATAL)
debug_level FATAL  #指定tsar的运行级别,主要用来调试使用
#[module] on/off to enable mod
mod_cpu on
mod_mem on
mod_swap on
mod_tcp on
mod_udp on
mod_traffic on
mod_io on
mod_pcsw on
mod_partition on
mod_tcpx on
mod_load on

#output type:file,nagios,db
output_interface file,nagios  #设置输出类型,支持file,nagios,db

#[output_file] original data to store
output_file_path /var/log/tsar.data

#[output_stdio] these mod will be show as using tsar  #设置用户终端默认显示的模块
output_stdio_mod   mod_swap,mod_partition,mod_cpu,mod_mem,mod_traffic,mod_load,mod_tcp,mod_udp,mod_tcpx,mod_pcsw,mod_io

#[output_nagios] the alert will be report to nagios server  #设置哪些模块输出到nagios
output_nagios_mod mod_swap,mod_partition,mod_cpu,mod_mem,mod_traffic,mod_load,mod_tcp,mod_udp,mod_tcpx,mod_pcsw,mod_io

#[output_db]   #设置哪些模块输出到数据库
#output_db_mod  mod_swap,mod_partition,mod_cpu,mod_mem,mod_traffic,mod_load,mod_tcp,mod_udp,mod_tcpx,mod_pcsw,mod_io
#output_db_addr console2:56677   #数据库的ip和端口

#support include other mod conf
include /etc/tsar/conf.d/*.conf 
[[email protected] ~]# cat /etc/tsar/nagios.conf 
#The IP address of the host running the NSCA daemon
server_addr mmdev4.corp.alimama.com
#The port on which the daemon is running - default is 5667
server_port 8086
#The cycle of send alert to nagios
cycle_time 300
#nsca client program
send_nsca_cmd /usr/bin/send_nsca
send_nsca_conf /home/a/conf/amon/send_nsca.conf

#tsar mod alert config file
#threshold [hostname.]servicename.key;w-min;w-max;c-min;cmax;
threshold apache.qps;N;N;N;N;
threshold apache.rt;N;N;N;N;
threshold cpu.util;N;N;N;N;
threshold mem.util;N;N;N;N;
threshold load.load1;N;N;N;N;
threshold load.load5;N;N;N;N;
threshold load.load15;N;N;N;N;
threshold io.sda.util;N;N;N;N;
threshold traffic.bytin;N;N;N;N;
threshold traffic.bytout;N;N;N;N;
threshold tcp.retran;N;N;N;N;
threshold partition./.util;N;N;N;N;
threshold partition./var.util;N;N;N;N;
threshold partition./home.util;N;N;N;N;
threshold partition./boot.util;N;N;N;N;

这个文件主要是nagios服务器的配置:

cycle_time 指定上报的间隔时间,由于tsar每一分钟采集一次,上报时会判断是否符合时间间隔,如设置300的话,则在0,5等整点分钟会上报nagios 。

threshold 设置某个要报警项的阀值,前面是模块和要监控的具体名称,后面的四个数据代表报警的范围,warn和critical的范围。

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、使用方法

[[email protected] ~]# 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分钟为间隔。

二、tsar nginx模块

1、下载

tsar的nginx扩展模块项目主页为:https://github.com/taobao/tsar-mod_nginx ,点击下载zip包。

2、安装

[[email protected] ~]# unzip tsar-mod_nginx-master.zip 
[[email protected] ~]# tsardevel nginx
build:make
install:make install
uninstall:make uninstall
test:tsar --list or tsar --nginx --live -i 1
[[email protected] ~]# cp tsar-mod_nginx-master/mod_nginx.c nginx/
cp:是否覆盖"nginx/mod_nginx.c"? y
[[email protected] ~]# cd nginx/
[[email protected] nginx]# ls
Makefile  mod_nginx.c  mod_nginx.conf
[[email protected] nginx]# make && make install

3、测试

[[email protected] ~]# service nginx start
正在启动 nginx:                                           [确定]
[[email protected] ~]# tsar --nginx --live -i 1
Time        ----------------------------------nginx--------------------------------- 
Time        accept  handle    reqs  active    read   write    wait     qps      rt   
01/10-14:57    0.0     0.0     0.0     0.0     0.0     0.0     0.0     0.0     0.0   
01/10-14:57    0.0     0.0     0.0     0.0     0.0     0.0     0.0     0.0     0.0   
01/10-14:57    0.0     0.0     0.0     0.0     0.0     0.0     0.0     0.0     0.0   
01/10-14:57    0.0     0.0     0.0     0.0     0.0     0.0     0.0     0.0     0.0

4、nginx模块不能用问题的处理

此时通过使用tsar --nginx --live -i 1 命令查看,若出现都是横线。是因为nginx没有开启status统计页面 。因为该工具统计的原理是通过获取status页面的输出结果,并对输出内容进行统计和计算得出的结果。而且其获取状态页的url默认是http://127.0.0.1/nginx_status ,所以在nginx上你必须有如下的配置:

location /nginx_status {
          stub_status on;
          access_log   off;
          allow 127.0.0.1;
          deny all;
        }

注:以上的url并非不能更改,可以修改环境变量实现。其自带的几个环境变量如下。

export NGX_TSAR_HOST=192.168.0.1
export NGX_TSAR_PORT=8080
export NGX_TSAR_SERVER_NAME=status.taobao.com
export NGX_TSAR_URI=/nginx_status

此时,再运行可以发现正常出数据。

时间: 2024-12-27 08:40:47

linux网络命令(十)之tsar的相关文章

基础的 Linux 网络命令,你值得拥有

导读 有抱负的 Linux 系统管理员和 Linux 狂热者必须知道的.最重要的.而且基础的 Linux 网络命令合集.在 It’s FOSS 我们并非每天都谈论 Linux 的“命令行方面”.基本上,我更专注于 Linux 的桌面端.但你们读者中的一些人在内部调查(仅面向 It's FOSS newsletter 订阅者)中指出,你们也想学些命令行技巧.速查表也受大部分读者所喜欢和支持. 为此,我编辑了一个 Linux 中基础网络命令的列表.它并不是一个教你如何使用这些命令的教程,而是一个命令

你必须了解的基础的 Linux 网络命令

Linux 基础网络命令列表 我在计算机网络课程上使用 FreeBSD,不过这些 UNIX 命令应该也能在 Linux 上同样工作. 连通性 ping <host>:发送 ICMP echo 消息(一个包)到主机.这可能会不停地发送直到你按下 Control-C.Ping 的通意味着一个包从你的机器通过 ICMP 发送出去,并在 IP 层回显.Ping 告诉你另一个主机是否在运行. telnet <host> [port]:与主机在指定的端口通信.默认的 telnet 端口是 23

Linux网络管理——Linux网络命令

3. Linux网络命令 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB","STHeiti","Microsoft YaHei","WenQuanYi Micro Hei",SimSun,Song,sans-serif;} .note-content h2 {line-height: 1.6; color: #0AA

程序猿必知的 基础Linux 网络命令

在嵌入式开发中,我们常常用到各种linux命令,今天和大家分享的就是基础的 Linux网络命令,这是在网上无意中看到的一篇整理得非常好的文章,分享给大家,希望对大家有帮助.  有抱负的 Linux 系统管理员和 Linux 狂热者必须知道的.最重要的.而且基础的 Linux 网络命令合集.在 It's FOSS 我们并非每天都谈论 Linux 的"命令行方面".基本上,我更专注于 Linux 的桌面端.但你们读者中的一些人在内部调查(仅面向 It's FOSS newsletter 订

初中级DBA必须要学会的9个Linux网络命令,看看你有哪些还没用过

笔者不久前写了一篇文章<做DBA必须学会,不会会死的11个Linux基本命令>,博文地址为:http://blog.csdn.net/ljunjie82/article/details/45022355 此篇文章,则是写的初中级DBA必须要学会的9个Linux网络命令,这些命令对一个DBA在维护管理.故障排除方面能否高效的开展工作,起着举足轻重的作用. 1.ethtool Ethtool是用于查询及设置网卡参数的命令,用得最多的,莫过于查看网卡的速度,如百兆.千兆.万兆. 常用用法: (1)e

最常用的Windows、Linux网络命令总结

题记:工作中经常用到Windows.Linux的网络命令,记录总结出最常用的,一方面对Windows.Linux做个对比:另一方面加深对网络命令的认知. 有不全的地方,大家补上.一起探讨下,谢谢! 2014-11-29 pm10:29思于家中床前 作者:铭毅天下 转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/41604621 如果感觉本文对您有帮助,请点击'顶'支持一下,您的支持是我坚持写作最大的动力,谢谢!

linux网络命令详解

1 ifconfig命令 格式:ifconfig  {inerface} {options} options参数有:up,down,mtu,netmask,broadcast 单独ifconfig命令:查看网络所有端口: 范例1:ifconfig eth0 192.168.1.0 netmask 255.255.0.0 mtu 8000(配置端口eth0的ip地址) 范例2:ifconfig eth0:0 192.168.50.50(表示在eth0再仿真出来一个网络接口) 注意:ifconfig

linux 网络命令学习笔记

1.临时配置IP 命令 a.  ifconfig eth0 192.168.0.1 netmask 255.255.255.255 b.  或者直接在linux设置里面关于网络设置部分设置 2.网络查看命令 a. netstat -runla         -t 列出TCP协议端口 -u 列出UDP协议端口 -a 列出所有网络链接 -l 列出仅在监听状态的网络服务 (listing) -n 不使用服务器名和域名,只是列出IP地址和端口号 b. ifconfig /all        查看当前

linux网络命令(十一)之glances

一.glances使用 1.简介 glances 是一款用于 Linux.BSD 的开源命令行系统监视工具,它使用 Python 语言开发,能够监视 CPU.负载.内存.磁盘 I/O.网络流量.文件系统.系统温度等信息.本文介绍 glances 的使用方法和技巧,帮助 Linux 系统管理员了解掌握服务器性能. 2.特点 glances 可以为 Unix 和 Linux 性能专家提供监视和分析性能数据的功能,其中包括: CPU 使用率 内存使用情况 内核统计信息和运行队列信息 磁盘 I/O 速度