业务指标监控开发

本文将介绍下图中的业务指标如何显示在Venus页面中
xx



定义指标类 RuntimeData

首先,请在项目中新增一个名为 Monitor 的文件夹。
然后创建一个名为 RuntimeData 的类型,并定义一些指标项,例如:

xx

在这个类型中,使用了三种数据类型:

  • SumValue:表示一个全局的汇总数据。 全局有二层含义:
    1. 与应用无关(通常是查询汇总进程外的数据)
    2. 与部署多少个节点无关(取最近接收到的某个节点发来的数据)。
  • TotalValue:表示一个应用程序的【当天合计】数据, 如果应用部署了多个节点,它们的数据会合并在一起。
  • RealtimeValue:表示一个应用节点内的实时累计数据(XXX/秒),最终展示时会按多节点合并,合并时取各节点的最新值。

除此之外,还可以使用:

  • StateValue:表示一个应用程序的状态数据。如果某个应用程序有多个节点时,数据会做合并处理。



更新汇总数据-SumValue

在 Monitor 的文件夹中再创建一个名为 MonitorWorker 的类型,
并继承于 BaseMonitorWorker<RuntimeData> 用于更新汇总数据,例如:

xx

示例代码中的 return 3; 不要无脑抄!!!


二个方法的解释:
/// <summary>
/// 刷新【汇总】数据,准备上传。
/// </summary>
/// <returns>返回一个数字,表示多少秒之后再执行当前方法。如果不需要再次执行,可以返回 -1</returns>
public abstract int RefreshSumData();

/// <summary>
/// 刷新【状态】数据,准备上传。
/// </summary>
/// <returns>返回一个数字,表示多少秒之后再执行当前方法。如果不需要再次执行,可以返回 -1</returns>
public abstract int RefreshStatusData();

这二个方法都要求返回一个数字,表示下次调用要等待多久。
如果某个方法没有【内容】,可返回 -1 表示不再调用。

注意:如果数据变化很慢,返回值可以选择较大的数字。
例如:如果统计【租户数量】或者【数据库规模】这类数据,大可以30分钟做一次,返回 1800 是可以的。



这个步骤完成后,项目目录会是这样的:

xx



更新当天合计-TotalValue

这类指标一般会在业务代码中埋点,例如:

xx

原理:每次执行一个业务操作,就将计数器加 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

这类指标一般会在业务代码中埋点,例如:

xx

原理: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 结尾,会自动按单位做格式化

注意以上单位中的 【大小写】