本文转载之https://blog.zymlinux.net/index.php/archives/251


Tsar是什么?

Tsar是淘宝的采集工具,主要用来收集服务器的系统信息(如cpu,io,mem,tcp等)以及应用数据(如squidhaproxy nginx等),tsar支持实时查看和历史查看,方便了解应用和服务器的信息!

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

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

新手用Tsar监控ats的各项状态-简单运用_tsar

豪哥贴的一张图

Tsar的优点?

  • 技术开源

    • 淘宝技术支持

    • 淘空见同学非常负责,上次提了下bug,很快就修复了


  • 模块化

  • 自带很多系统性能监控模块

  • 自带很多常用软件的监控模块

  • 可自写插件收集监控其他信息

  • 支持本机查看

  • 支持输出到远程数据库

  • 配合nagios的被动监控,页面显示

1:安装Tsar(本配置适合默认安装ats的童鞋

  • 下载安装很简单,github默认就提供了两种方法,不过先不用急着安装先,继续看下面的内容。

1
2
3
#git clone git://github.com/kongjian/tsar.git

 #cd tsar

 #sed -i -e '20s#/var/run#/usr/local/var#' modules/mod_ts_client.c

 这个只是替换了一个模块,还需要替换

mod_ts_cache.c
mod_ts_client.c
mod_ts_codes.c
mod_ts_conn.c
mod_ts_err.c
mod_ts_os.c

 mod_ts_storage.c

 这这些都在Tsar安装目录的modules下


###########下文有介绍为什么这么做###############


#make
#make install
1
2
3
4
5
#wget -O tsar.zip https://github.com/alibaba/tsar/archive/master.zip
#unzip tsar.zip

 #cd  tsar-master

 #sed -i -e '20s#/var/run#/usr/local/var#' modules/mod_ts_client.c

参考上面

###########下文有介绍为什么这么做###############

#make
#make install
  • Tsar源码包的目录和文件

1
2
3
4
5
6
7
├── conf
├── devel
├── include
├── modules
├── rpm
├── src
└── tools

配置文件在conf目录,模块文件在modules目录里面,Tsar并不是默认就启用所有的模块的,所以ats的监控默认需要手动启用。

  • 启用Tsar的ats监控模块

在conf/tsar.conf文件中的对应位置添加上如下on内容(备注:把下面内容写在同一行上,会有问题

1
2
3
4
5
6
7
mod_ts_cache on
mod_ts_client on
mod_ts_codes on
mod_ts_conn on
mod_ts_err on
mod_ts_os on
mod_ts_storage on
  • 关于ats的socket文件

    在Tsar安装目录的modules下,ats相关的模块c源码中都有ats的一个socket文件的指定,这个socket文件非常重要,如果位置对应不上,Tsar监控ats部分是不会出数据的。

    例如mod_ts_client.c默认配置的socket文件的位置是”/var/run/trafficserver/mgmtapisocket”

    默认安装的ats的socket文件在”/usr/local/var/trafficserver/mgmtapisocket”

    把配置文件跟模块的socket文件修改好再编译安装就可以直接使用了。

使用Tsar

1
2
3
4
5
6
7
8
9
tsar --ts
tsar --ts_conn
tsar --ts_cache
#指定时间间隔方式
tsar --ts -i 1
#实时输出方式
tsar --ts -l 1
#或者组合方式
tsar --ts --ts_conn --ts_cache

关于ats模块各项意思

  • 直接上聊天记录了。

杭州-海洋之心 19:41:18

ts : 每秒请求数,每秒连接数,流量,每秒处理事务,每个连接处理的请求数

杭州-海洋之心 19:46:42

ts_conn: client连接数,server连接数,cache的连接数,打开的连接数,活跃的client连接数,client发送的事务数,server处理的事务烽

赵永明_阿里 20:01:13

transaction & connection,有连接,但不一定在传数据,transaction相关的是正在处理请求的统计,希望可以对大家理解有帮助

赵永明_阿里 20:02:30

t_cli = transaction in client side, t_server = transaction in server side.

2:本人再补充一部分

上面作者纸鸢提到的是默认安装,本人环境是自定义安装的;

#find  /  -name mgmtapisocket

然后用sed 替换那些模块的默认路径

如果还是不出数据,编辑配置文件records.config

CONFIG proxy.config.http.enable_http_stats INT 1


主要就两个点:1./etc/tsar/tsar.conf启用所有模块on;2.每个模块的源码文件的socket文件配置。


第二部分:监控nginx

1:需要nginx 在编译时候加--with-http_stub_status_module,并且在nginx.conf添加如下内容

location  /nginx_status {

               stub_status on;

               access_log off;

               allow 192.168.2.3;#用户可以自己定义,我这是举例说明格式;

               allow 192.168.8.0/24;

               deny all;

               }

2:修改mod_nginx.c文件,此文件在tsar安装目录下的modules目录中

static void
init_nginx_host_info(struct hostinfo *p)
{
    char *port;
    p->host = getenv("NGX_TSAR_HOST");
    p->host = p->host ? p->host : "192.168.2.2"; #默认是172.0.0.1
    port = getenv("NGX_TSAR_PORT");
    p->port = port ? atoi(port) : 80; #监控的端口,如果大家有多个虚拟机主机,需要注意
    p->uri = getenv("NGX_TSAR_URI");
    p->uri = p->uri ? p->uri : "/nginx_status";                                                                  
                                                                                                                                 
    p->server_name = getenv("NGX_TSAR_SERVER_NAME");                                                             
    p->server_name = p->server_name ? p->server_name : "main.gslb.ku6.com";  #server_name 根据nginx.conf 修改