Venus 指标监控
Venus可针对3大类指标进行监控
- 运行状态
- 业务指标
- 技术指标
只需要在启动目录中添加一个名为 Nebula.Venus.MonitorConfig.xml 的配置文件即可。
或者在配置服务中添加这个文件。
运行状态-监控
配置示例:
<!--针对【运行状态】汇总数据的监控配置-->
<Summaries>
<!--【DataBusService】启动后【60】秒开始监控,每【60】秒采集一次【延迟数】指标,如果【增量】【大于等于】【300】,就发送告警-->
<Monitor AppName="Uranus.DataBusService" MetricName="延迟数" Statistic="Incremental"
DueTime="60" Period="60" Threshold="300" Compare="MoreThan"/>
</Summaries>
指标在界面中的位置:
业务指标-监控
配置示例:
<!--针对【业务指标】的监控配置-->
<Metrics>
<!--【Mercury】启动后【60】秒开始监控,每【20】秒采集一次【消息积压数量】指标,如果【增量】【大于等于】【1000】,就发送告警-->
<Monitor AppName="Nebula.Mercury" MetricName="消息积压数量" Statistic="Incremental"
DueTime="60" Period="20" Threshold="1000" Compare="MoreThan" />
</Metrics>
指标在界面中的位置:
技术指标-监控
配置示例:
<!-- 针对【技术指标】的监控配置 -->
<Heartbeats>
<!-- 【Juno】启动后【60】秒开始监控,每【60】秒采集一次【Error】指标,如果【增量】【大于等于】【10】,就发送告警 -->
<Monitor AppName="Nebula.Juno" MetricName="Error" Statistic="Incremental"
DueTime="60" Period="60" Threshold="10" Compare="MoreThan"/>
</Heartbeats>
指标在界面中的位置:
配置文件
完整配置文件的结构如下
<?xml version="1.0" encoding="utf-8"?>
<MonitorConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Summaries>
<Monitor AppName="XDemo.WebSiteApp" MetricName="延迟数" Statistic="Incremental"
DueTime="60" Period="20" Threshold="100" Compare="MoreThan" />
</Summaries>
<Metrics>
<Monitor AppName="Nebula.Mercury" MetricName="消息积压数量" Statistic="Incremental"
DueTime="60" Period="20" Threshold="10000" Compare="MoreThan" />
</Metrics>
<Heartbeats>
<Monitor AppName="XDemo.WebSiteApp" MetricName="Error" Statistic="Incremental"
DueTime="30" Period="20" Threshold="10" Compare="MoreThan" />
</Heartbeats>
</MonitorConfig>
说明:
- AppName="*" 表示规则用于所有应用程序
- 当 AppName="*" 存在时,再指定 AppName="xxx" 时,后者优先
对应的类型定义:
public sealed class MonitorConfig
{
/// <summary>
/// 针对【运行状态】汇总数据的监控配置
/// </summary>
[XmlArrayItem("Monitor")]
public List<MonitorItem> Summaries { get; set; }
/// <summary>
/// 针对【业务指标】的监控配置
/// </summary>
[XmlArrayItem("Monitor")]
public List<MonitorItem> Metrics { get; set; }
/// <summary>
/// 针对【技术指标】的监控配置
/// </summary>
[XmlArrayItem("Monitor")]
public List<MonitorItem> Heartbeats { get; set; }
}
public sealed class MonitorItem
{
/// <summary>
/// 应用程序的名称,在Venus界面上可查到。
/// </summary>
[XmlAttribute]
public string AppName { get; set; }
/// <summary>
/// 需要监控的指标名称,在Venus界面上可查到。
/// </summary>
[XmlAttribute]
public string MetricName { get; set; }
/// <summary>
/// 获取数据的计算方式, (最新值,增量)
/// </summary>
[XmlAttribute]
public StatisticMode Statistic { get; set; } = StatisticMode.Direct;
/// <summary>
/// 程序启动后延迟多久开始监控,单位:秒
/// </summary>
[XmlAttribute]
public int DueTime { get; set; } = 60;
/// <summary>
/// 采集周期,单位:秒
/// </summary>
[XmlAttribute]
public int Period { get; set; } = 60;
/// <summary>
/// 告警阀值
/// </summary>
[XmlAttribute]
public long Threshold { get; set; }
/// <summary>
/// 指标值与阀值的比较方式
/// </summary>
[XmlAttribute]
public CompareMode Compare { get; set; } = CompareMode.MoreThan;
}
public enum StatisticMode
{
/// <summary>
/// 直接取值(最新版本)
/// </summary>
Direct,
/// <summary>
/// 取增量
/// </summary>
Incremental
}
public enum CompareMode
{
/// <summary>
/// 大于等于
/// </summary>
MoreThan,
/// <summary>
/// 小于等于
/// </summary>
LessThan
}