淘宝tsar 安装使用教程 nginx配置

在github上有3块tsar代码,分别为:

1 tsar 项目,  tsar项目 https://github.com/alibaba/tsar

2 tsar 添加自定义nginx监控模块  tsar_nginx_mod https://github.com/taobao/tsar-mod_nginx

3 tsar结果导出到mysql  tsar2db https://github.com/alibaba/tsar2db

这里介绍

 一 tsar安装使用

 二 自定义添加nginx_mod监控模块

 

tsar 介绍:

简介

tsar是淘宝自己开发的一个采集工具,主要用来收集服务器的系统信息(如cpu,io,mem,tcp等),以及应用数据(如squid haproxy nginx等)。

收集到的数据存储在磁盘上,可以随时查询历史信息,输出方式灵活多样,另外支持将数据存储到mysql中,也可以将数据发送到nagios报警服务器。

tsar在展示数据时,可以指定模块,并且可以对多条信息的数据进行merge输出,带–live参数可以输出秒级的实时信息。

总体架构

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

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

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

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

tsar的运行流程图如下:

 

21132358wul3

 

主要执行流程有:

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

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

一 tsar安装

从github上检出代码:

$git clone  git://github.com/kongjian/tsar.git

$cd tsar

$make

$make install

或者直接从github上下载源码

$wget -O tsar.zip  https://github.com/alibaba/tsar/archive/master.zip

$unzip tsar.zip

$cd tsar

$make

$make install

tsar-master目录下

安装 tsardevel   

make tsardevel   

安装完有4个配置文件

  • /etc/tsar/tsar.conf, which is tsar’s main configuration file;
  • /etc/cron.d/tsar, is used to run tsar to collect information every minute;
  • /etc/logrotate.d/tsar will rotate tsar’s log files every month;
  • /usr/local/tsar/modules is the directory where all module libraries (*.so) are located;
[root@centos6pc tsarlog]# tsar -help
Usage: tsar [options]
Options:
    --cron/-c           run in cron mode, output data to file
    --interval/-i       specify intervals numbers, in minutes if with --live, it is in seconds
    --list/-L           list enabled modules
    --live/-l           running print live mode, which module will print
    --ndays/-n          show the value for the past days (default: 1)
    --merge/-m          merge multiply item to one
    --help/-h           help
Modules Enabled:
    --cpu               CPU share (user, system, interrupt, nice, & idle)
    --mem               Physical memory share (active, inactive, cached, free, wired)
    --swap              swap usage
    --tcp               TCP traffic     (v4)
    --udp               UDP traffic     (v4)
    --traffic           Net traffic statistics
    --io                Linux I/O performance
    --pcsw              Process (task) creation and context switch
    --partition         Disk and partition usage
    --tcpx              TCP connection data
    --load              System Run Queue and load average
    --nginx            nginx statistics

安装完使用tsar -l 实时输出信息 5秒一次

tsar -l -i 2 两秒一次

[root@centos6pc tsarlog]# tsar -l -i 2

Time        ---cpu-- ---mem-- ---tcp-- -----traffic---- --sda---  ---load- ------nginx----- 
Time          util     util   retran    pktin  pktout     util     load1      qps      rt   
21/02-13:30    0.7     12.6      0.0      0.0     0.0      0.0      0.1      0.5     0.0   
21/02-13:30    0.2     12.6      0.0      0.0     0.0      0.0      0.1      0.5     0.0   
21/02-13:30    0.0     12.6      0.0      0.0     0.0      0.0      0.1      0.5     0.0   
21/02-13:30    0.2     12.6      0.0      0.0     0.0      0.0      0.1      0.5     0.0

21133158il7q

看到上面有nginx的信息,其中包括指标 qps rt 是我已经配置好的,

与 /etc/tsar/tsar.conf 中的配置无关,我没有使用这里的配置

21133749udp8

 

这里肯定也能监控nginx ,我没有实验,我用的是添加nginx监控模块,tsar_nginx_mod https://github.com/taobao/tsar-mod_nginx

我对比过这个监控模块的代码和默认的nginx模块代码, 监控模块比默认的代码多很多。


配置

1.配置文件/etc/tsar/tsar.conf
#debug_level(INFO DEBUG WARN ERROR FATAL)
debug_level FATAL
#[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 #输出到file nagios mysqldb
output_interface file  
#[output_file] original data to store
output_file_path /var/log/tsar.data #file的路径
#[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
#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
#support include other mod conf
include /etc/tsar/conf.d/*.conf

debug_level 指定tsar的运行级别,主要用来调试使用

mod_xxx on/off 开启指定模块

out_interface 设置输出类型,支持file,nagios,db

out_stdio_mod 设置用户终端默认显示的模块

output_db_mod 设置哪些模块输出到数据库

output_db_addr 数据库的ip和端口

output_nagios_mod 设置哪些模块输出到nagios

include 支持include配置,主要用来加载用户的自定义模块

二 添加自定义nginx监控模块

1 安装tsardevel 下载地址: http://code.taobao.org/p/tsar/wiki/get/

 

 

21134252fgwn

 

2 从 github tsar_nginx_mod https://github.com/taobao/tsar-mod_nginx 下载nginx监控模块文件, 其实就一个 .c文件

tsardevel nginx 默认在当前目录想创建nginx目录,

里面有文件makefile mod_nginx.c mod_nginx.conf

用上述github下载的文件替换掉 mod_nginx.c文件

然后make && make install 即可

 

21134440poap

 

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

tsar 监控的cpu 内存 等信息是安装tsar本机的

但是nginx模块监控的nginx可以是远程的

只要修改上述四个变量即可

例如

export NGX_TSAR_HOST=x.x.x.x

export NGX_TSAR_PORT=80

export NGX_TSAR_SERVER_NAME=www.xxxx.com

export NGX_TSAR_URI=/ngx_status

我监控的结果如下:

 

21135157kpvw

 

结尾: 1这里没有 tsar2db的例子

2 如果想用1台服务器监控多台服务器的nginx

如果想监控多台服务器, 是否可以在每台服务器上安装tsar, 然后输出到同一个mysqldb。

 

 

转载请注明:沧海一粒--个人博客 技术生活兴趣分享 » 淘宝tsar安装使用教程 配置 nginx监控模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值