HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

小米开源监控 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:102156

评论

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

3大方面升级华为云CCE集群体验,助力集群高效运维管理

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 华为云CCE容器服

Downie 4 for Mac(最好用的视频下载软件)

iMac小白

Premiere Pro 2023 for Mac(pr 2023)完美激活版下载

iMac小白

什么样的LED显示屏适合用在车站

Dylan

信息化 应用 LED显示屏 led显示屏厂家

挖掘外贸网站产品核心词,提高购物旺季的订单转化

九凌网络

Spring高手之路16——解析XML配置映射为BeanDefinition的源码

砖业洋__

spring源码 BeanDefinition分析 Spring框架内部工作 XML配置文件

如何使用Python调用API接口获取淘宝商品数据

Noah

网络安全专用产品有哪些?能一一列举出来吗?

行云管家

网络安全 防火墙 等保 安全运维

Acrobat Pro DC 2023 for mac 完美激活版下载

iMac小白

pycharm pro for mac破解版下载(Python编辑开发)

iMac小白

「智造」第6期:浅谈智能工厂

用友BIP

智能制造

Mac电脑矢量绘图软件:llustrator 2023 for mac最新激活版

iMac小白

专访|OpenTiny 社区 Mr 栋:结合兴趣,明确定位,在开源中给自己一些技术性挑战

OpenTiny社区

开源 前端 React UI组件库

从GPT定制到Turbo升级再到Assistants API,未来AI世界,你准备好了吗?

EquatorCoco

人工智能 AI GPT ChatGPT

清华-用友数智化领导力项目正式开课!

用友BIP

数智化领导力

GPTs数据泄露大语言模型安全刻不容缓,如何用AI Agent提升LLM应用安全系数?

王吉伟频道

数据安全 大语言模型 AI Agent AI智能体 RPA Agent

DBeaverUltimate for Mac激活版下载(数据库管理软件)

iMac小白

Axure RP 8 for Mac(交互式原型设计工具) 中文版

iMac小白

Linux内核安全子系统简介(上)

nn-30

Linux Linux Kenel 内核 linux security 内核安全

“ChatGPT 之父”暗讽马斯克;传安卓版本与鸿蒙将不再兼容;PICO 裁撤游戏工作室团队丨 RTE 开发者日报 Vol.83

声网

App Cleaner & Uninstaller for Mac 完美激活 mac清理卸载工具

iMac小白

犀牛8 建模软件Rhinoceros 8 for Mac 完美激活版下载

iMac小白

.NET Core中一些优秀的项目和框架

互联网工科生

.net core

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