内部数据监控平台搭建方案

1.监控工具对比
1、
是由 开源的分布式监控系统,支持多种采集方式和采集客户端,同时支持SNMP、IPMI、JMX、、SSH等多种协议,它将采集到的数据存放到数据库中,然后对其进行分析整理,如果符合告警规则,则触发相应的告警 。

内部数据监控平台搭建方案

文章插图
核心组件主要是Agent和,其中Agent主要负责采集数据并通过主动或者被动的方式采集数据发送到/Proxy,除此之外,为了扩展监控项,Agent还支持执行自定义脚本 。主要负责接收Agent发送的监控信息,并进行汇总存储,触发告警等 。
将收集的监控数据存储到 中 。支持常用的关系型数据库,如果MySQL、、等,默认是MySQL,并提供 Web页面(PHP编写)数据查询 。
由于使用了关系型数据存储时序数据,所以在监控大规模集群时常常在数据存储方面捉襟见肘 。所以从 4.2版本后开始支持时序数据库,不过目前成熟度还不高 。
2、Open-
内部数据监控平台搭建方案

文章插图
Open-是小米开源的企业级监控工具,用Go语言开发而成,包括小米、滴滴、美团等在内的互联网公司都在使用它,是一款灵活、可扩展并且高性能的监控方案,主要组件包括了:
1)-agent是用Go语言开发的程序,运行在每台Linux服务器上,用于采集主机上的各种指标数据,主要包括CPU、内存、磁盘、文件系统、内核参数、连接等,目前已经支持200多项监控指标 。并且,Agent支持用户自定义的监控脚本 。
2) 简称HBS心跳服务,每个Agent都会周期性地通过RPC方式将自己的状态上报给HBS,主要包括主机名、主机IP、Agent版本和插件版本,Agent还会从HBS获取自己需要执行的采集任务和自定义插件 。
3)负责接收Agent发送的监控数据,并对数据进行整理,在过滤后通过一致性Hash算法发送到Judge或者Graph 。
4)Graph是基于RRD的数据上报、归档、存储组件 。Graph在收到数据以后,会以的数据归档方式来存储,同时提供RPC方式的监控查询接口 。
【内部数据监控平台搭建方案】5)Judge告警模块,转发到Judge的数据会触发用户设定的告警规则,如果满足,则会触发邮件、微信或者回调接口 。这里为了避免重复告警引入了Redis暂存告警,从而完成告警的合并和抑制 。
6)是面向用户的监控数据查询和告警配置界面 。
3、
内部数据监控平台搭建方案

文章插图
原名为,由Ethan 开发并维护 。是一个老牌监控工具,由C语言编写而成,主要针对主机监控(CPU、内存、磁盘等)和网络监控(SMTP、POP3、HTTP和NNTP等),当然也支持用户自定义的监控脚本 。
它还支持一种更加通用和安全的采集方式NREP(),它首先在远端启动一个NREP守护进程,用于在远端主机上面运行检测命令,在服务端用check nrep的插件通过SSL对接到NREP守护进程执行相应的监控行为 。相比SSH远程执行命令的方式,这种方式更加安全 。
4、
内部数据监控平台搭建方案

文章插图
是由开发的开源监控报警系统和时序列数据库 。的基本原理是通过HTTP周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口并且符合定义的数据格式,就可以接入监控 。
负责定时在目标上抓取(指标)数据并保存到本地存储里面 。采用了一种Pull(拉)的方式获取数据,不仅降低客户端的复杂度,客户端只需要采集数据,无需了解服务端情况,而且服务端可以更加方便的水平扩展 。