`
猫耳呀
  • 浏览: 165645 次
社区版块
存档分类
最新评论

【开源】Tsar——灵活的系统和应用采集软件

 
阅读更多

摘要: 在开源人的盛会LinuxCon + ContainerCon + CloudOpen中国(简称LC3)大会上,阿里云CDN团队的空见(花名),为大家分享了开源的系统和应用采集软件Tsar的背景、设计思路和用法、模块开发以及未来规划。

在开源人的盛会LinuxCon + ContainerCon + CloudOpen中国(简称LC3)大会上,阿里云CDN团队的空见(花名),为大家分享了开源的系统和应用采集软件Tsar的背景、设计思路和用法、模块开发以及未来规划。

实际上它是阿里巴巴在做系统或应用监控时候的一个idea,团队同学在实际的使用过程中比较舒服,软件扩展性、稳定性、易用性也比较好,所以目前在所有机器上都有部署,作为基础监控agent,来提供稳定的数据支持,同时也对外开源。

Tsar的背景

对于线上SA/PE/研发来说,当他开发了一个软件并部署之后,需要关注软件的运行情况,需要到上面来看整个服务器的CPU/内存/网络/IO等基本的指标是否OK,针对这些指标找一些软件的瓶颈和针对性的优化。其实现在市面上类似的软件非常多,所有的软件都有一定的专用性,可能只是采集某一块的东西,每个软件采集的指标不同,这些指标时间的用法是不一致的。所以对于使用的人的要求非常高,需要知道所有的监控软件怎样使用,对于排查线上问题非常不方便。这也是我们最开始的痛点,我们发现所有的数据我们都有,但是怎样去联动和使用起来是不方便的事情。于是,我们就萌生了Tsar的想法。

下图是现在线上有的很多命令的使用,针对于整个Linux站里各个层级都有一些对应的命令,对于运维等使用人员的学习上手成本非常高,不利于我们统一做一些监控。

需求与解法

所以我们最开始的需求就是希望有一个简单易用,基础数据齐全,最好也有应用数据的采集软件。因为刚才列的都是通用指标,但是我们有应用软件,所以我们希望知道应用软件上的一些数据,比如QPS、响应时间。目前的开源软件是无法支持的,需要业务自己写采集工具,做数据收集和监控。

另外我们希望数据之间能做一些数据关联,比如说当前CPU高了,是不是带来了一些其他数据指标的波动,这些指标之间需要对照去看,才能确定问题出在哪。

同时,数据也要能过滤、实时离线查看,并且可以本地长时间保存,也能远程发送,方便在中心做一些数据的分析和挖掘。

有了这些需求,我们的解法是模仿Sar,Sar本身是系统活动报告,实现系统指标的采集,我们基于它做了一些扩展。Tsar除了做系统层面数据采集,还能做应用层面采集,还可以进行模块化,并支持扩展。比如现在采集了十个指标,如果有另外有应用指标和业务数据想去采集,可以很方便的在Tsar里去写个模块来采集。同时也支持简单的报警和发送远端。

设计和用法

Tsar的原理非常简单,主要是用了动态库的特性,我们每一个采集模块里面都会实现一些函数,比如采集函数、分析处理函数,还有注册的时候提供的模块的基本字段,比如模块名、模块包含的字段、字段从哪里采集、采集完之后如何处理和输出,这些函数注册到Tsar的框架里,每一个周期去采集的时候调用这些指令的函数,就可以完成整个数据的采集和输出的过程。

整个模块的注册执行过程如下图:

下图是Tsar功能性大图,最下面是系统计数器和软件接口,具体的每一个模块是参考Sar实现了很多系统指标的采集,另外对于应用软件也提供了LVS、Nginx等比较常见的应用软件模块。

在上面采集过程中,会对模块做一些过滤处理,具体执行每个模块的采集函数,拿到这些数据,按照格式化,框架会把数据做格式化,存到/var/log/tsar.data中。我们采集到所有的原始数据,是以文件的形式存储在上面的,这里有一个跟Sar的区别,Tsar里面的字段是可读的,Sar是无法看到这里面的含义的。

这些数据采集到之后,支持对远端的发送,比如发送到一个网络的接口上,或者发送到MySql、Nagios等。另外,数据的展现分两块,分为实时的展现和历史的展现,实时的展现就需要隔一秒看下指标是什么样子的,历史的展现是对过去的每一分钟数据做一下历史的回放。目前,Tsar支持秒级、分钟级、按天等不同维度的数据展现。

Tsar的用法

Tsar用法是比较简单的,不管哪种模块,都是共享这个用法的。上面最常见的就是check这个指令,就是把系统最近一次的监控指标输出出来。有了这个功能之后,所有的基础软件的采集基本上每分钟都可以调用一个check,拿到最近一分钟的监控数据,把这份数据拿到我们监控平台上,里面去做一些监控配置和中心化处理。这个指令是用的最为频繁的。


-c是一个定时执行的指令,通过这个方式,会把你当前开启的模块所有的采集函数都执行一遍,拿到数据,把数据存到tsar.data的原始文件里去,供以后使用。
-i就是指定一个间隔时间,多少秒或多少分钟。

下图是一些用法的截图,在实时模式下可以指定-l 或者--live,可以现场采集模块数据,实时分析结果,不指定默认是离线方式。时间间隔,-i不指定的话,默认是秒和分钟,实时是每秒采集显示,离线是每分钟显示。也可以指定模块, --mod_name,指定了几个模块,就展示几个指标。通过这种方式,可以把你关注的指标在一屏里显示出来,这样可以看到他们之间的影响和关系,从而找到问题的症结所在。

Tsar也支持多item模块,有的时候一个系统指标是有多个实例的,item概念就在这里体现,可以比较灵活的展示数据。另外,--check是看我们最后一分钟的数据,它会把最后一分钟每个指标和字段在这一行里展示出来,可以很方便的做一些监控处理。

本身Tsar是单机软件,可以给其他系统提供丰富的数据源输入。

下图是比较常见的配置,包括配置文件、指定模块、指定输出等。

下图是如何输出到Mysql和Nagios的配置办法。

image.png

定制开发

Tsar目前支持C,bash、Lua三种方式开发自定义模块,内部已经有近100个应用模块。模块组成包括模块名称、描述信息、采集函数、展现函数等,Tsar本身也可以利用tsardevel的脚本自动生成一个模板,在这个模版的基础上进行修改,比较高效。

image.png

具体模块开发内容如下图:

image.png

采集函数是对value_1/2/3进行具体的抓取,不管是去计数器文件,还是接口里,都可以把值拿到。但是拿到的值并不是最终要展现的值,而是瞬间的值。

image.png

展现的值要通过数据展现函数来进行处理运算,展现函数里的两个输入参数会告诉你,你采集的最近2个数组的数据是什么,通过对2个数组的运算,最后得出来的结果就是最终展现的数字。当前面几个内容都做好了之后,最后在模块里做一下注册函数的生成就好了,这里有几个关键信息,比如模块名称。使用方式、模块字段数据结构、字段个数、采集函数和展现函数。

image.png

至此,一个模块基本就完成了。

未来规划

我们对Tsar的未来规划,主要三个方面。

第一个是跨平台,对于某些Linux版本支持的不是特别好,所以在跨平台方面我们会多多尝试。 
第二个完善框架,目前框架比较大的问题,单个模块出现一些异常,整个采集就会挂掉,这块我们会去解耦一些模块和框架的强依赖关系,希望容灾性更好。
第三是丰富一些模块,常见的系统模块已经很多,内部的应用模块也比较丰富了,我们也希望开源这块大家可以多提供一些模块进来,能让我们支持的采集种类更丰富一些。

目前在阿里巴巴整个开源代码库里,外部的贡献者不多,十几个,内部有超过一百人在贡献代码,首页和代码库欢迎大家访问。有任何问题也可以联系本文分享者:空见。

image.png

•首页: http://tsar.taobao.org/
•代码: https://github.com/alibaba/tsar

 

原文链接

分享到:
评论

相关推荐

    系统信息采集和监控工具 Tsar.zip

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

    系统监控开源软件

    - **简介**:Tsar是一款用于采集和监控系统信息的工具,广泛应用于互联网企业的监控体系中。 - **功能**: - 系统性能指标采集; - 监控报警; - 数据可视化。 #### 互联网企业级监控系统OpenFalcon - **简介**...

    淘宝Tsar数据采集工具详细说明文档(原作者文档+本人加入整理

    淘宝Tsar数据采集工具是一款由淘宝开发的服务器系统和应用信息收集工具。它能够收集包括服务器的系统信息(例如CPU、内存)和应用程序数据(如nginx、swift等)。Tsar所收集的数据会被存储在服务器的磁盘上,便于...

    Tsar监视工具 v1.0.zip

    在实际应用中,Tsar可以帮助系统管理员及时发现和定位系统性能问题,例如网络拥塞、CPU过载或者内存泄漏等。通过对历史数据的分析,还可以预测系统负载趋势,提前进行资源规划。此外,Tsar还可以与其他系统管理工具...

    tsar-master.zip

    - **功能介绍:** tsar(The System Activity Reporter)是一款开源的跨平台系统性能监控工具,它提供了一个命令行界面来展示系统性能统计数据,包括CPU利用率、内存占用、磁盘I/O、网络流量等。 - **数据收集:**...

    淘宝开源监控工具

    总结,tsar作为淘宝自主研发的监控工具,不仅提供了全面的系统和应用监控能力,而且具有灵活的配置和友好的报告展示,对于运维团队来说是不可或缺的助手。通过深入理解并运用tsar,可以提升运维效率,确保服务的稳定...

    Tsar介绍.pptx

    数据采集模块负责定期收集系统和应用的统计信息,如CPU、内存、文件系统、数据库等。这些数据会保存到本地,并通过配置文件和命令行参数控制不同的输出方式,如标准输出、数据库存储或Nagios告警。报警功能可以根据...

    存储tsar数据到MySQLtsar2db.zip

    tsar2db用来收集一个cdn节点内tsar的采集数据,存到mysql数据库,提供给其它应用查询 数据保留最近3个月的,各表字段含义和tsar采集定义相同 从mysql的tsar库中可以看到整个cdn节点tsar采集到的数据 配置tsar向tsar...

    Python库 | tsar-0.5.2-py3-none-any.whl

    在Python的开发环境中,`tsar`是一个非常实用的工具,尤其对于系统监控和性能分析的场景。`tsar-0.5.2-py3-none-any.whl`文件是该库的一个特定版本(0.5.2)的预编译包,适用于Python 3解释器。这个文件格式是`.whl`...

    ubuntu 安装tsar

    【标题】:“Ubuntu系统下安装TSAR监控工具” 在Linux操作系统中,Ubuntu是一个广泛使用的开源发行版,尤其在服务器环境中。TSAR(The System Activity Reporter)是一款强大的系统性能监控工具,能够提供详细的...

    tsar-2.1.0.tar

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

    大型互联网广告应用系统架构

    中间件的应用可以极大地提高系统的灵活性和可扩展性,以下是该广告系统中使用的关键中间件: - **HSF**:高性能的RPC框架,提供远程服务调用和软负载均衡功能。 - **TDDL**:透明数据访问层,支持数据库切分、读写...

    阿里开源项目合集

    **Tsar** 是淘宝内部使用的服务器监控工具,用于收集服务器的系统信息和应用数据,特点包括: - **实时监控**:能够实时查看服务器状态和应用数据; - **历史数据查询**:支持历史数据的查询,有助于问题定位和性能...

    Tsar监视工具 v1.0

    Tsar(淘宝系统活动报告器)是一个监视工具,可用于收集和汇总系统信息,例如CPU,负载,IO和应用程序信息(例如nginx,HAProxy,Squid等)。结果可以存储在本地磁盘或发送到Nagios。可以通过编写模块轻松扩展Tsar,...

    tsar:阿里巴巴 TSAR 项目的克隆

    介绍Tsar(淘宝系统活动报告器)是一个监控工具,可以用来收集和汇总系统信息,例如CPU、负载、IO,以及应用程序信息,例如nginx、HAProxy、Squid等,结果可以存储在本地磁盘或发送到 Nagios。 Tsar 可以通过编写...

    Tsar监视工具-其他

    Tsar(淘宝系统活动报告器)是一个监视工具,可用于收集和汇总系统信息,例如CPU,负载,IO和应用程序信息(例如nginx,HAProxy,Squid等)。结果可以存储在本地磁盘或发送到Nagios。可以通过编写模块轻松扩展Tsar,...

    淘宝网Nginx应用、定制与开发实战.pdf[书签版]

    此外,还提供了一些参考资源,帮助读者进一步深入学习和应用Nginx和Tengine。 整体来看,该资源详细介绍了淘宝网如何使用Nginx进行Web服务器的构建、优化、功能定制和开发,并分享了在实际工作中遇到的问题及解决...

    cpp-支持trafficserver62x

    在IT行业中,软件维护和升级是一项至关重要的任务,但对于某些特定场景,尤其是企业内部使用的老版本系统,可能由于兼容性、稳定性等原因无法轻易升级。在这种情况下,我们需要针对旧版本系统进行定制化开发,以满足...

    下一代规划阿里交易型技术架构研究PPT教案.pptx

    这种设计提高了系统的灵活性和可维护性,使得新功能的开发和部署更加便捷。 2. **技术架构**: 技术架构层面,阿里使用了多种中间件来支撑其业务需求。例如,HSF(High Speed Service Framework)作为分布式服务...

Global site tag (gtag.js) - Google Analytics