asp.net core监控—引入Prometheus(六)
在前面的系列博文中,我们说自定义业务计数器步骤:
1、分析业务,规划好监控跟踪指标
2、定义指标收集器
3、侵入编程(尽量在开发时分离业务实现与监控指票的收集代码)收集指标
4、开发grafana展示模板,完成展示
结合《asp.net core监控—引入Prometheus》二,三,四,五4种模版的demo,来较为深入分析了解一下这些步骤。
本系列是Prometheus和Grafan组合,这个组合擅长展示系统的实时跟踪数据,如果是统计数据,它们不一定是最佳选择。
1、分析业务,规划好监控跟踪指标
这一点是最难的,首先要了解自己的项目解决的主要问题是什么,比如商城第一要务是卖东西,单位时间内卖了多少,卖了多钱,是比较重要的,再考虑相对次要的问题,比如单位时间内什么东西卖的多,单位时间内用户的增加量等信息,罗马不是一天建成的,建议先从重要的开始,逐渐在构建自己的监控跟踪系统。
2、定义指标收集器
本系列博文中说到Prometheus四种类型的收集器,按照规划好的监控指标,选择适当的使用,一般情况下Counter(计数器)、Gauge(仪表盘)直观,通俗易懂,Histogram(直方图)、Summary(摘要)比较抽像,但它们更能从宏观上展示业务状况,统计学上更科学。
3、侵入编程(尽量在开发时分离业务实现与监控指票的收集代码)收集指标
这部分我们在demo中有做分享,可能不是最好的解决方案,这部分可能要根据每个项目的架构来处理,努力把类似监控,日志,跟踪等非业务功能与业务代码区分开来,减少耦合。另一方便,有一些监控数据对业务系统的耦合是比较紧的,比如《asp.net core监控—引入Prometheus(三)》的Gauge(仪表盘)中,展示的是订单每个阶段的数量,其实是不准确的,因为当我们系统重启时,这些值就会置零,如果修改代码,每次启动系统,从数据库里查询出订单各个阶段的数量,来初始化仪表盘,表面上是可以的,但如果系统是分布式部署,就会引来一个问题,每个节点或Pod都有一份数据,当用Grafana集中展示时,就要把节点累加,造成数据重复,系统运行后,每次下单,支付,发货,触发的是单节点仪表盘上的数值变化,这样,运行一段时间就会造成数据即不是倍数关系,也不是增量关系;其实如果我们仔细分析的话,每个订单实时的量不适合这种在应用中用加减来对外吐值,可以换一个数据库或缓存的数据源来查询展示,俗话说,不能在一个树上吊死,我们要利用grafana不同的面板数据源都是独立的这个特点,分别对待。
4、开发grafana展示模板,完成展示
这是个技术活了,首先要熟悉grafana的使用了,grfafan的相关的文章还不少;在grafana中,不同的数据源取数据的方式不尽相同,这个是学习点,还有grfana的一些函数也是很好的选择,自动提示引入函数的功能能让我们配置起来更简便,还有不同的面板类型,有很多的属性,能给我们的图表锦上添花,多探索,多琢磨。
《asp.net core监控—引入Prometheus》的系列到这篇就完成了,仅把自己的粗略认识分享给大家,欢迎指正!
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524