大厂Data+Agent 秘籍:腾讯/阿里/字节解析如何提升数据分析智能。 了解详情
写点什么

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

本文转载自小米运维

  • 2018-11-16
  • 本文字数:1970 字

    阅读完需:约 6 分钟

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

前沿

小米 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。

实现

代码架构


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。方便第三方数据的接入。

数据传输

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 一致。

如何变身 Windows 服务

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



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

配置文件

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 监控,网络监控等,并且已经应用到生产环境当中。以后我们也会把通用的组件开源,回馈社区。


2018-11-16 22:102529

评论

发布
暂无评论
发现更多内容

从0到1:基于SpringBoot的体育场馆预约小程序开发笔记(一)

CC同学

自学记录鸿蒙API 13:实现人脸比对Core Vision Face Comparator

李游Leo

鸿蒙 HarmonyOS HarmonyOS NEXT

NetBackup Virtual Appliance 5 - 领先的企业备份和恢复解决方案

sysin

NetBackup

自学记录鸿蒙 API 13:骨骼点检测应用Core Vision Skeleton Detection

李游Leo

鸿蒙 HarmonyOS HarmonyOS NEXT

云端安全守护者,华为云Flexusx上的AWVS容器化部署与安全扫描实践

轶天下事

华为云Flexus云服务器X实例下的微微CMS安装

轶天下事

华为云Flexus云服务器X实例搭建部署H5美妆护肤分销商城、前端uniapp

轶天下事

华为云X实例CPU性能测试详解与优化策略

轶天下事

使用Memtester 对华为云 X 实例进行内存性能测试

轶天下事

阿里P8面试官不小心泄露了25年春招进大厂必备的Java面试场景题!

程序员高级码农

Java 编程 程序员 java面试 Java面试题

ByConity ELT测试——体验BSP模式带来的高效数据处理

颜颜yan_

OOM ByConity bsp模式 ByConity ELT

进大厂必备的Java八股文大全(最强精简易懂版,八股文中的八股文)

Geek_Yin

Java Java面试八股文

使用Flexus X实例集成ES搜索引擎

轶天下事

优化企业运营流程,华为云Flexusx实例下Odoo ERP系统的完整解决方案

轶天下事

部署个人云社交媒体聊天服务VoceChat

轶天下事

这份神仙版的SpringBoot学习文档,简直把所有操作都给写出来了

Geek_Yin

Java 程序员 spring-boot java 技术提升

部署开源ChatGPT/LLMs聊天应用LobeChat

轶天下事

华为云Flexus云服务器X实例的网络性能测试

轶天下事

华为云Flexus云服务器X实例之openEuler系统下玩转iSulad容器技术

轶天下事

小米开源监控Open-Falcon收录汽车之家贡献的Win版Agent
_软件工程_InfoQ精选文章