汽车之家监控系统的第一次里程碑
1. 介绍
作者介绍
本文作者是吴城 联系方式:autohomeops@autohome.com.cn,主要负责汽车之家云平台的开发和管理工作。 个人Blog http://jackywu.github.io/
团队介绍
我们是汽车之家运维团队,是汽车之家技术部里最为核心的团队,由op和dev共同组成。我们的目标是为汽车之家集团打造一个高性能,高可扩展,低成本,并且稳定可靠的网站基础设施平台。 团队技术博客地址为 http://autohomeops.corpautohome.com
联系方式
可以通过邮件或者在官方技术博客留言跟我们交流。
2. 前言
每个公司都有一套监控系统,或大或小,或简单或复杂。 汽车之家的监控系统最初使用的是Zabbix,从双机冷热备,到用Proxy构建分布式模式,到实现跨机房的灾备,这一路走的跟大家想象中的差不多。
3. 正文
3.1 历程
那为什么后来要新做监控系统呢?
Zabbix有几个短板
- 重度依赖数据库,无法支持超大规模集群的监控
- Zabbix Server端模块化程度低,二次开发不灵活
我们希望能够有一个分布式的,更加具有扩展性的系统架构。
3.2 我们的设计思路
我们对系统的设计目标是
- 精准告警
- 自动定位
- 故障自愈
该系统的产品定位
- 运维提供监控系统,负责系统的稳定性
- 业务运维能够自助使用该系统,关注基础监控的配置和告警接收
- 业务部门能够自助使用该系统,关注业务监控的配置和告警接收
根据我们对监控系统的研究,我们认为我们需要这样的架构
概念解释
- Agent:负责采集数据。
- Transfer:负责将采集到的数据转发到不同的后端。后端包括:分析器,存储,等等组件。
- Storage:历史数据存储。
- Dashboard:负责监控策略的配置和监控数据的查看。
- Detector:负责检测Agent上报的数据是否代表异常发生。
- Analyzer:负责分析Detector产生的异常事件行为,做一些逻辑后再发送告警。
- Sender:从Analyzer接收消息,发送告警通知。
- Processor:负责对异常事件进行自动化处理,即“自愈”。
3.3 我们的实现策略
根据这个架构我们去调研。 我们可以用非常基础的积木去搭建我们自己的系统,例如collectd,statsd,MySQL和HBase,或者类似的其他开源组件。 后来我们发现差不多相同时期小米开源了自己的监控系统Open-Falcon,我们的设计思路非常接近,所以我们就选择了在其基础之上进行二次开发。
3.4 产品设计
这里描述一下跟Open-Falcon在产品方面不同之处。
A. 服务树
我们根据公司的组织架构,加上业务系统的组织关系,构建了自己的服务树。 组织架构和服务器自动跟CMDB同步。
B. Dashboard
根据我们自己公司的业务组织形式,和以往的使用习惯,我们新建了自己的Dashboard。
- 我们抽象出了“业务”和“功能模块”的概念,用来代表“系统”和“子系统”,或者“大分组”和”二级分组“的含义。Open-Falcon只支持一级分组。
- ”功能模块“关联了”主机组“,”告警策略“,”告警模板“。
- ”告警策略“里,我们实现了”告警升级“,”延迟告警“,按“功能模块”合并主机的告警。
- 我们在页面上提供了对“功能模块”里主机告警的自助“订阅”功能。
这块内容我们后续会单独发文来分享。
C. 告警判断表达式
我们对Judge修改,新增了昨日对比函数
- daydiff(#3)>1:昨天和今天同时间对比,数据差值大于1
- daypdiff(#3)>1:昨天和今天同时间对比,数据差值大于1%
D. 告警通知策略
- 为了解决告警轰炸问题,我们增加了“告警升级机制”:告警发生后立刻发送给”组1”的人,X分钟故障还在持续则发送通知给“组2”的人,如此类推。组员和间隔可以定制。
- 为了进一步优化一个时间段内告警发生和恢复往复跳动导致告警泛滥的问题,我们增加了这样的机制: 在一个时间段内,告警首次发生,则立刻发送通知,然后利用拉长时间段的原理,抑制掉期间抖动的告警,时间段末尾处再发送故障或者恢复状态。时间段可以定制。
- 为了进一步优化一组功能相同(或者有其他角度共性)的机器同时发生同类异常导致告警泛滥的问题,我们增加了这样的机制:也是利用拉长时间段的原理,在时间段末尾,将属于同一个功能模块下的机器,按照相同监控项合并。时间段可以定制。
这块内容我们后续也会考虑开源。
E. Agent
在汽车之家除了有Linux之外还有Windows服务器,为了实现系统逻辑架构的统一,我们基于Windows Service服务用Python开发了自己的Agent (author:ninjadq )。
该Agent跟freedomkk-qfeng/falcon-scripts的区别是:
- 支持IIS和SQLServer的监控项采集。
- 运行为Windows的Service,不用配置定时任务。Agent的运行模式跟Linux下的Go-Agent一致。
- 每个应用软件一个线程,在应用采集不多,且是定期采集的情况下,线程切换的开销可以忽略不计。
- 实现了本地的http代理接口。
跟LeonZYang/agent的区别是
- 不用给golang打patch。
在公司的支持下,我们将代码以Apache许可证开源。 参见”Windows Agent”https://github.com/AutohomeRadar/Windows-Agent/。 其中我们借用了”freedomkk-qfeng/falcon-scripts”部分采集代码,感谢作者的代码。
欢迎提交PR和Issue,欢迎用QQ或者邮件跟我们联系。
4. 未来的Roadmap
- 故障定位
- 基于时间维度和语义的事件关联性分析
- 网络和业务的可视化跟异常可能性分析
- 动态阈值分析
- 监控项行为分析 + 动态监控策略匹配
- Judge/Graph/等等组件的多机房数据同步和冷备方案
5. 小结
监控系统建设是一个任重而道远的漫长过程,只要需求不断,可能永远不会有停止的一天。 我们会和社区保持紧密沟通,吸取一些经验,同时贡献一份力量。欢迎大家通过上述方式跟我们交流。
汽车之家监控系统的第一次里程碑相关推荐
- 监控系统故障定位之事件关联分析的设计
一.前言 在<汽车之家监控系统的第一次里程碑>](http://autohomeops.corpautohome.com/articles/汽车之家监控系统的第一次里程碑/)之后,我们实现 ...
- 基于计算机视觉的智能交通监控系统
前言 目前,计算机视觉技术在智能交通领域已经取得了比较广泛的应用.其中,主要应用的技术是目标检测与识别.目标跟踪.本文重点分析了这些计算机视觉技术在车辆跟踪.流量统计.车牌识别.闯红灯违章检测.不礼让 ...
- 汽车重点转向驾驶员监控系统
相比之下,人们对高级驾驶员监控在减少死亡人数方面的潜力有了更高的认识.一个迹象是对驾驶员监控系统 (DMS) 和其他安全技术(例如自动紧急制动和防撞系统)的规定,这些技术包括在待定的美国基础设施立法中 ...
- 5.25 综合案例2.0-居家隔离监控系统(2.2版本接口有更新)
综合案例2.0-居家隔离监控系统 简介 AJ-SR04M- T-X超声波测距模块 准备 硬件连接图 代码流程 功能实现 1.物联网平台开发 2.设备端开发 3.调试 4.创建钉钉机器人 5.IoT S ...
- 鹰眼系统原理_山东首家露天焚烧鹰眼监控系统在我镇投入使用
露天冒烟着火,不用人员到现场,电子围栏就会锁定目标,自动报警,提醒监管人员立即现场处置.日前,莱西市院上镇新安装建设的污染源鹰眼监控系统投入使用,实现了环境监控全方位.自动化.据了解,这是山东省首家在 ...
- android11多媒体,【图】安卓11系统可无线连接车载安卓多媒体_汽车之家
[汽车之家 行业] 日前我们获悉,安卓11正式版有望于2020年内正式发布,安装了新系统的手机将可无线连接到安卓汽车系统(Android Auto),方便驾驶者使用. 现有的安卓手机可通过数据线的形 ...
- 安科瑞电力监控系统在耐世特汽车系统(苏州)有限公司项目中的设计与应用
苏月婷 江苏安科瑞电器制造有限公司 摘要:介绍耐世特汽车系统(苏州)有限公司电力监控系统,采用智能电力仪表采集配电现场的各种电参量和开关信号.系统采用光纤组网和就地组网相结合的组网的方式,组网后通过光 ...
- 鸿蒙系统的制造线,【图】实现万物互联 华为鸿蒙操作系统发布_汽车之家
[汽车之家 资讯] 6月2日,华为正式发布了鸿蒙操作系统(HarmonyOS),该系统可实现多设备之间融合为一个终端,形成万物互联.此外,汽车作为超级终端,也将搭载全新的鸿蒙操作系统.据悉,BEIJ ...
- android auto支持高德地图,【图】苹果新系统:CarPlay终于支持高德地图_汽车之家...
[汽车之家 互联出行] 苹果在美国时间6月4日的苹果开发者大会上,发布了最新的iOS 12操作系统,其实关于交通互联的部分最重要的变化就是之后全面支持高德地图了. 本次苹果发布的iOS 12系统,重 ...
最新文章
- android 内部存储 清空,Android清空应用内部文件缓存
- 澎思科技马原:AI为基,IoT为翼,加速人工智能普惠丨MEET2021
- php.ini 延迟,php超时报错Maximum execution time of 120 seconds exceeded in解决办法
- 一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈...
- C#中的Clipboard与ContextMenuStrip应用举例
- windows+hugo+github搭建个人博客
- linux系统冒号模式map怎么用,shell中冒号 : 用途说明
- html底部弹出选择,jQuery手机端底部弹出菜单列表特效代码
- 入行老师-郭靖(亦师亦友)同学
- 注意!恶意NPM包正在安装勒索软件和密码窃取木马
- 递归求解汉诺塔问题(C++)
- mysql中in和exists区别
- 史上最全的福昕高级pdf编辑器安装教程
- linux kvm装ghost镜像,kvm安装win7虚拟机
- 基于PCQQ协议的Python QQ机器人库
- pdf 转 高清图片
- Mac安装gensim报错:No extention 巴拉巴拉
- 2018年第一周APP黑马榜单
- 十款浏览器插件,让你拥有更好的浏览器体验
- 可观测性-Metrics-存储-InfluxDb连续查询(CQ)Continuous Queries