ITPub博客

首页 > 大数据 > 数据分析 > 小米开源监控Open-Falcon收录汽车之家贡献的Win版Agent

小米开源监控Open-Falcon收录汽车之家贡献的Win版Agent

数据分析 作者:小米运维 时间:2018-11-19 11:27:21 0 删除 编辑

本文介绍了汽车之家为小米开源的Open-Falcon监控系统贡献的Windows监控组件。

前言

小米Open-Falcon监控系统自2015年开源以来,以其丰富的插件,灵活的架构,良好的性能表现,高效的告警策略等特性,赢得的众多互联网公司的青睐。

汽车之家也一直关注着Open-Falcon的发展,系统平台团队通过对Open-Falcon的二次开发,打造了汽车之家的监控系统。这套系统负责了汽车之家所有服务器基础监控,URL监控,日志监控等重要功能。作为公司基础系统,稳定高效的支撑了近万台服务器的监控,告警工作。

设计

初衷

汽车之家除Linux服务器外,还有很多业务运行在Windows机器上,所以对Windows服务器基础监控,IIS,SQL Server等Windows服务的监控也非常重要。但是Open-Falcon未全面覆盖Windows系统,没有官方的Windows Agent去做数据的采集。社区中开源的脚本都是通过计划任务的方式采集。而我们希望的是Open-Falcon在Windows下的Agent采集的逻辑和架构与Linux下保持一致,方便监控平台管理,控制Agent。

目标

我们的设计目标有以下几点:

1.   可以服务的形式运行在Windows服务器上,不用配置计划任务

2.   支持采集Windows服务器基础监控项

3.   支持采集IIS,SQL Server的监控项采集

4.   提供和Linux Agent一样的push数据接口,支持第三方push数据

5.   与Linux Agent其他功能保持一致

基于以上几点我们自研了之家的Open-Falcon Windows Agent。

实现

1    代码架构

Windows-Agent的代码架构如上图所示。程序启动后,会启动5个线程。每个线程都会按照配置好的时间间隔定时采集所需信息。

  • basic thread基础监控项采集线程,通过psutil这个跨平台的库,可以轻松获取操作系统进程和系统利用率等信息。

  • IIS thread IIS数据采集线程,通过winstats这个库,定时的采集IIS站点的连接数,IIS站点的cpu使用率等数据。

  • SQL Server thread SQL server数据采集线程,同样通过winstats, 获取到SQLServer内存和I/O相关数据。

  • status thread Agent自身状态线程。这一点和Linux Agent的功能一样, 定时向HearbeatServer汇报自己Agent的状态。这样在我们的监控平台上就可以向管理Linux服务器一样的管理这些Windows服务器。

  • HTTP HTTP线程会开启一个HTTP服务提供push接口,和LinuxAgent一样,用户可以选择通过该push接口,把自定义的数据push给Agent。方便第三方数据的接入。

2   数据的传输

Open-Falcon Linux下的Agent启动之后,会和transfer组件建立长连接,通过Transfer.Update这个RPC调用,把Agent采集到的监控数据传输给transfer,后面的事情就全部交由Open-Falcon处理。Agent自身状态的汇报也同样方式,通过Agent.ReportStatus这个RPC调用和Hearbeat Server交互,上报自身状态。在Windows下,我们要采用同样的方式和transfer组件,Hearbeat Server组件进行数据的传输,不同的是,Linux下的Agent是golang实现,可以方便的使用golang原生的JSONRpc处理RPC调用,而我们Windows下的Agent使用python开发,所以我们自己实现了jsonrpc的client,来模拟Linux下的处理。保证我们的Agent行为和Linux下的Agent一致。

3    如何变身Windows服务

Windows Agent通过pypiwin32这个库,把python代码变成了服务安装到了Windows服务器上。这个库怎么用呢?Demo如下:

首先要继承win32serviceutil.ServiceFramework这个类,然后分别实现构造方法,停止运行方法SvcStop, 以及启动方法SvcStop。最后在主方法中调用win32serviceutil.HandleCommandLine(AppServerSvc)。就可以通过python agent.py install安装服务,python agent.py start启动服务,有兴趣的同学不妨可以自己试试。

4    配置文件

Windows Agent的配置文件也和Linux Agent一下保持一致,如果你熟悉了Linux下的配置,甚至可以直接copy到Windows服务器下。具体的配置解释如下:


安装

实战

目前Windows Agent运行在汽车之家上千台Windows服务器下2年多时间,始终保持了稳定,可靠的数据采集,同时对资源的消耗也非常小。

下图为Agent作为服务运行

下图为Agent进程的消耗,由于我们内部的Agent监控项要比开源的版本多,所以内存占用大概有30M左右,开源版本的内存占用会小于这个数值

下图为采集到的IIS站点的cpu使用率监控数据

下图为SQL Server采集监控数据

开源

在公司的支持下,我们将代码以Apache许可证开源。目前WindowsAgent组件已经被Open-Falcon社区收录,为更多Windows用户提供支持。

相关文档以及代码参见:

https://github.com/AutohomeRadar/Windows-Agent/

后续计划

我们计划下一步为Windows Agent加入更多的特性。例如对插件的支持,添加更丰富的监控项等。同时,汽车之家对Open-Falcon还做了很多的二次开发,比如告警的升级机制,多种维度的告警收敛,URL监控,网络监控等,并且已经应用到生产环境当中。以后我们也会把通用的组件开源,回馈社区。

感谢汽车之家技术团队对小米开源的Open-Falcon监控系统的支持和贡献,也欢迎更多的Open-Falcon用户加入我们。

本文联合汽车之家系统平台部发布,首发于公众号“之家技术”

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31559359/viewspace-2220536/,如需转载,请注明出处,否则将追究法律责任。

下一篇: Nginx限流特技
请登录后发表评论 登录
全部评论

注册时间:2018-10-26

  • 博文量
    34
  • 访问量
    21397