第一章 主机的存活监控
–
文章目录- 运维可观测系列--大规模主机/服务存活探测的实现
- 前言
- 一、问题描述
- 二、目标
- 1. 提供多种目标对象的探测服务
- 2. 探测结果能以大盘的形式直观输出
- 3. 探测的目标对象,支持如下类型
- 4. 可以水平扩容
- 5. 易部署,易运维
- 三、系统架构
- 三、工程实现
- 五、效果预览
- 六、代码链接
- 总结
前言
主机宕机如何快速发现? 机器之间是否存在网络延迟?
如果,我们需要管理成百上万台机器,需要有一个全局大盘,能实时检测到这些机器,以及机器上服务的状态,是否有一个快速可复制的方案呢?
本文,将给出一个生产可用的实现方案,可以开箱即用,而且提供对应的自监控大盘,快速初始化的工具。
一、问题描述
如果有几百,上千台主机或服务需要维护,确保维护目标对象的存活状态就是可观测系统首要解决的问题。 我们希望能有一个快捷的工具或系统,能够基于我们的资源列表,快速实现存活状态的探测,并输出可观测大盘,能实现告警。
二、目标 1. 提供多种目标对象的探测服务 2. 探测结果能以大盘的形式直观输出 3. 探测的目标对象,支持如下类型- 主机 - 服务端口 - HTTP接口服务4. 可以水平扩容 5. 易部署,易运维 三、系统架构
为了实现如上目标,我们的系统架构如下
系统红色部分,表示配置流
蓝色为数据流
绿色为输出大屏
红色为告警事件
系统整体工作流程描述如下
-
采集配置的初始化。
AutoConf 为一个简单的配置解析自动转化工具。
AutoConf将从CMDB,或其他的数据源接口获取需要探测的目标资源列表
AutoConf 将资源列表,转化为探测采集的配置文件Conf
在本系统中,我们选择telegraf 作为采集器,因此,Conf 为telegraf 的配置文件 -
可以扩展的采集agent
有了采集配置后,我们可以根据目标资源的业务体量,决定部署1个或N个采集Agent。
根据经验,1个telegraf 覆盖1~2000台机器,启一个telegraf agent 即可。 -
采集结果的存储
由于我们的数据是时许数据,为了便于后续的分析和处理,需要兼容prometheus 生态,利用开源的力量,快速输出大盘和告警。可以选择兼容prometheus数据协议的victoriametrics 作为存储数据库。
相比influxdb , Victoriametrics 有更好的压缩比,且支持集群高可用模式,而最有优势的地方,是victoriametrics 完全兼容promql , 方便我们后续对应各种维度的聚合。 -
数据输出为大盘或告警
利用grafana 可以快速基于业务为度构建起大盘,以及高级
为了能快速构建起这个项目,这里提供了一个开源实现。
- 其中AUTOConf 部分通过一个简单的Shell 脚本实现目标配置的转化。
- 一键部署。 未来便于大家快速本地验证,提供了基于docker-compose 一键部署方案
- 自监控。 确保本身服务的可用性,观察自己的容量性能等指标,提供了自监控方案。通过部署cadvisor可以采集agent, 存储服务,grafana等服务的状态信息
- 开箱即用。 提供内置的监控大盘,服务起来后,即可看到目标状态大屏,并且有自身组件的内部状态大盘。
-
主机存活大盘
-
容器服务自监控大盘
-
存储服务自监控大盘
以上实现完全开源,代码地址。
https://github.com/ieasydevops/ping-host
总结
本文作者meixinyun 是一位资深码农,聚焦在运维可观测领域。非常期待和大家交流,共享。如果喜欢文章欢迎点赞,收藏。如果有其他技术问题也欢迎加我私信沟通交流。



