运维监控
此文档 主要介绍 TuGraph 的可视化运维监控
1.设计思路
可视化监控并不是TuGraph自身不可或缺的一部分,因此在设计时将可视化监控作为TuGraph周边生态中的一个应用,来减少和TuGraph数据库的耦合度,以及对于TuGraph自身的影响。TuGraph可视化监控采用目前最火热的开源解决方案,TuGraph Monitor + Prometheus + Grafana来实现。其中TuGraph Monitor作为TuGraph服务的客户端,通过TCP链接向TuGraph服务发起Procedure请求,TuGraph服务在接收到请求后收集自身所在机器的cpu,memory,disk,io,以及请求数量等指标的统计结果进行响应。TuGraph Monitor在接收到TuGraph响应的指标数据后,将数据包装成prometheus需要的格式,保存在内存中,等待Prometheus服务通过http请求获取。Prometheus服务会定期通过http请求从TuGraph Monitor获取封装好的请求数据,按照获取的时间保存在自己的时序数据库中。Grafana可以根据用户的配置,从Prometheus处获取某个时间段内的统计数据,并在web界面上绘制浅显易懂的图形来展示最终结果。整个请求链路中,都采用了主动获取,即PULL的模型,好处之一是它能最大限度的避免数据生产者和数据消费者之间的耦合度,使得开发更简单,好处之二是数据生产者不需要考虑数据消费者的数据处理能力,即使某个消费者的数据处理能力较弱,也不会因为生产者生产数据过快而压垮消费者。主动拉取模型的不足之处在于数据的实时性不够,但在这个场景中,数据并没有很高的实时性要求。
1.1.TuGraph
TuGraph数据库提供了收集服务所在机器中磁盘,内存,网络IO,以及查询请求等多种数据信息的能力,并通过标准Procedure方式提供查询。收集数据这一动作仅在有用户通过接口查询时才会发生,避免了在用户不需要TuGraph监控服务所在机器的指标时对用户业务查询请求带来的影响。
1.2.TuGraph Monitor
TuGraph Monitor是TuGraph周边生态中的一个工具,它作为TuGraph众多用户中的一个,通过C++ RPC Client与TuGraph进行通信,通过Procedure查询接口来查询TuGraph服务所在机器的性能指标,并将TuGraph返回的结果包装成Prometheus需要的数据模型,等待Prometheus获取。用户可以通过设置查询时间间隔来保证获取监控指标对于业务查询的影响最小化。
1.3.Prometheus
Prometheus是一个开源的监控平台,并配备有专属的时序数据库,它会定期通过http请求从TuGraph Monitor服务获取统计指标,并保存在自己的时序数据库中。详细信息请参考官网: https://prometheus.io/docs/introduction/first_steps