业务指标监控开发
本文将介绍下图中的业务指标如何显示在Venus页面中
定义指标类 RuntimeData
首先,请在项目中新增一个名为 Monitor 的文件夹。
然后创建一个名为 RuntimeData 的类型,并定义一些指标项,例如:
在这个类型中,使用了三种数据类型:
- SumValue:表示一个全局的汇总数据。 全局有二层含义:
- 与应用无关(通常是查询汇总进程外的数据)
- 与部署多少个节点无关(取最近接收到的某个节点发来的数据)。
- TotalValue:表示一个应用程序的【当天合计】数据, 如果应用部署了多个节点,它们的数据会合并在一起。
- RealtimeValue:表示一个应用节点内的实时累计数据(XXX/秒),最终展示时会按多节点合并,合并时取各节点的最新值。
除此之外,还可以使用:
- StateValue:表示一个应用程序的状态数据。如果某个应用程序有多个节点时,数据会做合并处理。
更新汇总数据-SumValue
在 Monitor 的文件夹中再创建一个名为 MonitorWorker 的类型,
并继承于 BaseMonitorWorker<RuntimeData> 用于更新汇总数据,例如:
示例代码中的 return 3; 不要无脑抄!!!
二个方法的解释:
/// <summary>
/// 刷新【汇总】数据,准备上传。
/// </summary>
/// <returns>返回一个数字,表示多少秒之后再执行当前方法。如果不需要再次执行,可以返回 -1</returns>
public abstract int RefreshSumData();
/// <summary>
/// 刷新【状态】数据,准备上传。
/// </summary>
/// <returns>返回一个数字,表示多少秒之后再执行当前方法。如果不需要再次执行,可以返回 -1</returns>
public abstract int RefreshStatusData();
这二个方法都要求返回一个数字,表示下次调用要等待多久。
如果某个方法没有【内容】,可返回 -1 表示不再调用。
注意:如果数据变化很慢,返回值可以选择较大的数字。
例如:如果统计【租户数量】或者【数据库规模】这类数据,大可以30分钟做一次,返回 1800 是可以的。
这个步骤完成后,项目目录会是这样的:
更新当天合计-TotalValue
这类指标一般会在业务代码中埋点,例如:
原理:每次执行一个业务操作,就将计数器加 1,最后就能得到一天内的操作次数。
TotalValue 提供了3种修改计数器的方法:
/// <summary>
/// 递增计数器
/// </summary>
/// <returns></returns>
public long Increment()
/// <summary>
/// 增加计数器的值
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public long Add(long value)
/// <summary>
/// 指定计数器的值
/// </summary>
/// <param name="value"></param>
public void Set(long value)
更新实时数据-RealtimeValue
这类指标一般会在业务代码中埋点,例如:
原理:Nebula会按时间窗口来计算一段时间内的调用次数,并平均到每秒。
RealtimeValue 也提供了3种修改计数器的方法:
/// <summary>
/// 递增计数器
/// </summary>
/// <returns></returns>
public long Increment()
/// <summary>
/// 增加计数器的值
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public long Add(long value)
/// <summary>
/// 指定计数器的值
/// </summary>
/// <param name="value"></param>
public void Set(long value)
指标命名约定
- xxx/s 表示实时数据, 例如: "消息吞吐量/s"
- xxx/d 表示当天合计数据, 例如: "消息处理量/d"
- xxx 表示汇总数据,例如: "租户数量"
简单来说就是用【后缀】来区分不同类别的指标。
xxx/d,虽然表示 【平均每天】的意思,但是这里就表示 【当天合计】,不必纠结!
针对数据容量的界面显示约定
- 汇总数据以 MB, GB 结尾,会自动按单位做格式化
- 当天数据以 MB/d, GB/d 结尾,会自动按单位做格式化
- 实时数据以 KB/s, MB/s 结尾,会自动按单位做格式化
注意以上单位中的 【大小写】