【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

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

评论

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

什么是 LuaJIT?为什么 Apache APISIX 选择了 LuaJIT?

API7.ai 技术团队

lua api 网关 APISIX API Gateway

2023年中国品牌全域智能营销白皮书

易观分析

营销 品牌

【3.17-3.24】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

JVM超神之路:金三银四跳槽需要的JVM知识点,都给你整理好了

Java你猿哥

Java 面试 JVM 面经 Java工程师

操作系统跻身国家战略,中国操作系统开源社区走向何方?

OpenCloudOS

Linux 操作系统 DPU 大禹智芯 opencloudOS

Nautilus Chain主网上线在即空投规则公布,如何获得更多的空投?

西柚子

来2023全球边缘计算大会与EMQ探讨云边协同落地实践

EMQ映云科技

物联网 IoT 边缘计算 emq 企业号 3 月 PK 榜

面试官:给你一段SQL,你会如何优化?

做梦都在改BUG

Java MySQL 数据库 sql 性能优化

阿里面试:100个高频Spring面试题,助你一臂之力

Java你猿哥

Java spring 面试 Spring Boot 面经

Visio 绘图注释工具:VSDX Annotator 激活版

真大的脸盆

Mac Mac 软件 注释工具

周杰伦在唱什么?数据可视化告诉你!

博文视点Broadview

火山引擎基于 Dragonfly 加速实践

SOFAStack

开源 开发者 开发

OpenAI 发布ChatGPT 插件支持,官方文档译文

B Impact

面试官:kafka分布式消息系统,你真的了解吗?

做梦都在改BUG

Java kafka 消息队列 消息系统 消息中间件

接招吧!最强“高并发”系统设计 46 连问,分分钟秒杀一众面试者

做梦都在改BUG

Java 系统设计 高并发

深入理解Spring注解机制:注解的搜索与处理机制

Java你猿哥

Java spring Spring Boot ssm Spring注解

江苏银行与易观千帆达成合作,打造金融服务“新样本”

易观分析

金融 银行 经济

大模型时代的异构计算平台

百度Geek说

人工智能 深度学习 AI 企业号 3 月 PK 榜

真香!180页100+题15W+字解析的《Java高级面试指南》,果断收下

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

保姆级教程!玩转 ChunJun 详细指南

袋鼠云数栈

大数据 开源

这5个有趣、强大的AIGC,你值得拥有

没有用户名丶

来啦!OceanBase DevCon • 2023议程公布!

OceanBase 数据库

数据库 oceanbase

浅谈 Java线程状态转换及控制

Java你猿哥

Java 后端 多线程 ssm Java工程师

活动回顾|龙蜥社区云原生 SIG 首届 MeetUp 圆满落幕 持续打造面向云时代的竞争力

OpenAnolis小助手

开源 云原生 Meetup 龙蜥社区 sig

硬核!最全“Java面试宝典+Java核心知识集”,一箭双雕杠春招

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

linux环境arm64架构编译iotDB

小黄鱼

Thrift IoTDB arm64

GtiHub上点赞已破百万!阿里内部并发编程四套全彩手册开源

架构师之道

Java 程序员 面试

MQTT安全专题01|构建可靠的物联网系统

EMQ映云科技

物联网 IoT mqtt 物联网安全 企业号 3 月 PK 榜

ChatGPT 出现严重技术漏洞,“当红炸子鸡”翻车了?

这我可不懂

低代码 openai ChatGPT JNPF

MobPush Android 厂商通道回执配置指南

MobTech袤博科技

面试官:说说什么是单点登录?什么是SSO?什么是CAS?

Java你猿哥

Java ssm CAS SSO

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