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

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

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

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

Tsar的背景

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

下图是现在线上有的很多命令的使用,针对于整个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

原文链接

本文为云栖社区原创内容,未经允许不得转载。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看不见的战斗——阿里云护航世界杯直播容灾实践

摘要: 1978年,中国人开始在电视机上看到世界杯, 中央电视台对阿根廷队参加的半决赛以及阿根廷和荷兰的决赛进行了录播。1982年世界杯,宋世雄坐在一家香港宾馆的小电视前进行解说,然后央视再把香港这家电视台提供的画面…

树莓派安装python3.5_树莓派 | 04 安装基于python3.5的tensorflow,解决python版本不匹配问题...

创建日期:2019-03-03 系列文章 安装流程 在终端中依次执行 sudo apt install libatlas-base-dev pip3 install tensorflow(安装python3的CPU版本tensorflow,目前是不可能正常使用的,因为树莓派自带的Python3是3.5,而用…

使用fastjson工具类json字符串和对象之间的转换

文章目录一、引入依赖二、创建user实体类三、测试一、引入依赖 <!--字符串和对象操作工具类 Start--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependenc…

崩管嵌入式还是单片机,盘就完事了

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 小枣君责编 | 阿秃大家好&#xff0c;我是小枣君。凡是从事计算机或电子信息相关领域工作的童鞋&#xff0c;一定都听说过嵌入式和单片机吧&#xff1f;很多人应该知道&#xff0c;这两个名词和硬件系统有着非常密切的关系。…

DRDS分布式SQL引擎—执行计划介绍

摘要&#xff1a; 本文着重介绍 DRDS 执行计划中各个操作符的含义&#xff0c;以便用户通过查询计划了解 SQL 执行流程&#xff0c;从而有针对性的调优 SQL。DRDS分布式SQL引擎 — 执行计划介绍前言数据库系统中&#xff0c;执行计划是对 SQL 如何执行的形式化表示&#xff0c;…

易商云页面认证失败是什么情况_Serverless 云原生框架 Malagu:认证与授权

认证与授权组件 malagu/security 。Malagu 框架结合传统后台管理系统和云计算平台的认证与授权理念&#xff0c;并借鉴了 Spring Security 设计思想&#xff0c;抽象了一套通用的认证与授权模型。Spring Security 对前后端分离架构支持不是特别友好&#xff0c;Malagu 框架在这…

sharepoint文件夹本地同步_mac文件同步软件-Resilio Sync Home

Resilio Sync Mac版是Mac平台上的一款文件同步软件&#xff0c;Resilio Sync Mac版使用起来非常的简单、方便。你可以通过链接、秘钥或二维码的方式共享你电脑里的任意文件夹&#xff0c;接收方也可以把共享文件存放在任意位置。Resilio Sync Home Pro for mac(文件同步软件)​…

(需求实战_进阶_01)SSM集成RabbitMQ 关键代码讲解、开发、测试

背景&#xff1a; 为了减轻服务器的压力&#xff0c;现在原有项目的基础上集成消息队列来异步处理消息! 此项目是企业真实需求&#xff0c;项目的代码属于线上生产代码&#xff0c;直接用于生产即可&#xff01; 此项目采用MQ发送消息模式为:路由模式&#xff0c;如果对RabbitM…

浅谈Service Mesh体系中的Envoy

摘要&#xff1a; 提到Envoy就不得不提Service Mesh&#xff0c;说到Service Mesh就一定要谈及微服务了&#xff0c;那么我们就先放下Envoy&#xff0c;简单了解下微服务、Service Mesh以及Envoy在Service Mesh中处于一个什么样的角色。背景最近因工作原因开始了解Service Mesh…

Java并发编程笔记之FutureTask源码分析

FutureTask可用于异步获取执行结果或取消执行任务的场景。通过传入Runnable或者Callable的任务给FutureTask&#xff0c;直接调用其run方法或者放入线程池执行&#xff0c;之后可以在外部通过FutureTask的get方法异步获取执行结果&#xff0c;因此&#xff0c;FutureTask非常适…

动动手指头, Feed 流系统亿级规模不用愁

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 少强责编 | 阿秃导读&#xff1a;互联网进入移动互联网时代&#xff0c;最具代表性的产品就是各种信息流&#xff0c;像是朋友圈、微博、头条等。这些移动化联网时代的新产品在过去几年间借着智能手机的风高速成长。这些产品…

(需求实战_进阶_02)SSM集成RabbitMQ 关键代码讲解、开发、测试

接上一篇&#xff1a;&#xff08;企业内部需求实战_进阶_01&#xff09;SSM集成RabbitMQ 关键代码讲解、开发、测试 https://gblfy.blog.csdn.net/article/details/104197309 文章目录一、RabbitMQ配置文件1. RabbitMQ生产者配置文件2. RabbitMQ消费者配置文件3. 连接配置文件…

vue 判断同一数组内的值是否一直_vue一些笔记

vuex action&#xff1a;尤雨溪在知乎回答了&#xff0c;区分 actions 和 mutations 并不是为了解决竞态问题&#xff0c;vuex 真正限制你的只有 mutation 必须是同步的这一点&#xff0c;只是为了devtools追踪状态变化&#xff0c;或者说出于单一职责原则。https://www.zhihu.…

机器学习从业人员到底做什么?

这篇文章是系列文章的第1部分,第2部分将阐述AutoML和神经架构搜索、第3部分将特别地介绍Google的AutoML。 关于机器学习人才的稀缺和公司声称他们的产品能够自动化机器学习而且能完全消除对ML专业知识需求的承诺经常登上媒体的新闻头条。在TensorFlow DevSummit的主题演讲中&a…

黑科技揭秘:面对海量的文本翻译任务,阿里翻译团队是如何解决的

摘要&#xff1a; 对国际化企业来说语言问题是亟待突破的重要关口。面对海量的文本翻译任务&#xff0c;昂贵低效的人工翻译显然不能满足需求&#xff0c;利用计算机自动进行文本翻译的机器翻译才是解决这个问题的关键。阿里翻译团队在机器翻译领域做了大量技术储备&#xff0c…

(需求实战_进阶_03)SSM集成RabbitMQ 路由模式关键代码讲解、开发、测试

接上一篇&#xff1a;&#xff08;企业内部需求实战_进阶_02&#xff09;SSM集成RabbitMQ 关键代码讲解、开发、测试 https://gblfy.blog.csdn.net/article/details/104214033 上一篇给大家介绍了在RabbitMQ 的管控台中&#xff0c;将队列绑定到指定的交换机上&#xff1b;这片…

在计算机中dos代表什么意思,Boot是什么意思

Boot是什么意思如果你去问一个学计算机的人&#xff0c;“启动”是计算机中的那个单词?回答一定是Boot。可是&#xff0c;Boot原来的意思是靴子&#xff0c;“启动”与靴子有什么关系呢?原来&#xff0c;这里的Boot是bootstrap(鞋带)的缩写&#xff0c;它来自一句谚语&#x…

你知道哪些情况下不该使用深度学习吗?

深度学习不适用于什么样的任务&#xff1f;依我之见&#xff0c;以下这些主要场景的深度学习弊大于利。01低成本或者低承诺问题深网是非常灵活的模型&#xff0c;有着许多架构和节点类型&#xff0c;优化器和正则化策略。根据应用&#xff0c;你的模型可能会有卷基层&#xff0…

秒后面的单位是什么_单位与国际单位制是如何由来的?

2013年国庆期的一则网络消息说&#xff0c;11万人看升旗留下了5吨垃圾。有人认为这是一则假消息&#xff0c;因为5吨&#xff1d;5000千克&#xff0c;110000500022千克/人&#xff0c;而每人携带22千克&#xff08;44斤&#xff09;的垃圾是不可能的。以前还看过一个说法&…

(需求实战_进阶_04)SSM集成RabbitMQ 通配符模式 关键代码讲解、开发、测试

背景&#xff1a; 为了减轻服务器的压力&#xff0c;现在原有项目的基础上集成消息队列来异步处理消息! 此项目是企业真实需求&#xff0c;项目的代码属于线上生产代码&#xff0c;直接用于生产即可&#xff01; 此项目采用MQ发送消息模式为:通配符模式&#xff0c;如果对Rabbi…