架构图
1、Prometheus服务,可以直接通过目标拉取数据,或者间接地通过中间网关拉取数据。它在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中,PromQL和其他API可视化地展示收集的数据。
2、Pushgateway是一个独立的服务,Pushgateway位于应用程序发送指标和Prometheus服务器之间。Pushgateway接收指标,然后将其作为目标被Prometheus服务器拉取。可以将其看作代理服务, 它接收度量,而不是探测它们。
3、Alertmanager是一个独立的告警模块,接收Prometheus等客户端发来的警报,之后通
过分组、删除重复等处理,并将它们通过路由发送给正确的接收器;告警方式可以按照不同的规则发送给不同的模块负责人,Alertmanager支持Email, Slack,等告警方式, 也可以通过webhook接入钉钉等国内IM工具。
4、node-exporter用于采集服务器层面的运行指标,包括机器的loadavg、
filesystem、meminfo、CPU等基础监控。
5、Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采
集的数据查询然后可视化的展示,并及时通知。
Prometheus作为一套完整的开源监控接近方案,因为其诸多强大的特性以及生态的开放性,俨然已经成为了监控领域的事实标准并在全球范围内得到了广泛的部署应用。那么应该如何利用Prometheus对我们的应用形成有效的监控呢?事实上,作为应用我们仅仅需要以符合Prometheus标准的方式暴露监控数据即可,后续对于监控数据的采集,处理,保存都将由Prometheus自动完成。
一、SinoRepl监控需求
二、架构说明
n JSON文本文件
Ø config.json:定义执行环境相关变量设定
Ø sql_metric.{module}.json:定义执行SQL指令,搜集度量数据
Ø shell_metrics.{module}.json:定义执行Shell script,搜集度量数据
Ø 实现工厂设计模式(factory design patterns)
n config.json主要元素
Ø os元素:aix,
hpux, linux
ü 以目录方式,将该操作系统执行的shell script进行集中及分离
Ø mode元素:export及push
ü 控制度量数据传送方式
Ø module元素:sinodb,
ra, rt, rs, node, …
ü 以目录方式,将该操作系统执行的shell script进行集中及分离
n 主要shell script
Ø shell环境:bash, ksh, sh
Ø 由*_metrics.{module}.json中定义的项目,以shell或sql方式,搜集度量数据
n Export模式
Ø 度量数据:
ü 操作系统相关:Node_Exporter会自动搜集
ü 应用相关:必须自行开发shell script
Ø 将搜集的度量数据,复制到Node_Exporter文件搜集器的指定目录
Ø Prometheus透过Node_Exporter
API ,传送请求及接收相关度量信息
n Push模式
Ø 度量数据:
ü 操作系统相关:必须自行开发shell script
ü 应用相关:必须自行开发shell script
Ø 将搜集的度量数据,传送至Pushgateway
Ø Prometheus透过Pushgateway API
,传送请求及接收相关度量信息
三、界面展示
四、研发总结
n 优势
p 可以涵盖原功能规格文件所列的项目
p 度量化/离散化/度量分解,提供监控数据的不同理解
p 时序数据可视化展示,更清晰易懂
p 功能涵盖:监视+可视化+告警
p 模块独立,可以水平扩展开发,避免模块间的影响和干扰
p 代码功能单纯,行数比较小,容易理解及维护,易进行Unit Testing
p 支援AIX/HP-UX/Linux平台
p Prometheus可以分群分组布署,降低网络及操作系统带宽、效能及资源,占用过高
n 弱势
p 功能开发,人力及时程有限,欠缺技术发展规划及策略
p 欠缺功能:控制/微调
p shell script容易被修改及复制
p cron job做为排程工具不是优选择
ü 短期解决方案:java quartz
ü 长期解决方案:自行开发
p 过度依赖开源工具,产品化时,应重新评估