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>

指标在界面中的位置:
xx



业务指标-监控

配置示例:

<!--针对【业务指标】的监控配置-->
<Metrics>
    <!--【Mercury】启动后【60】秒开始监控,每【20】秒采集一次【消息积压数量】指标,如果【增量】【大于等于】【1000】,就发送告警-->
    <Monitor AppName="Nebula.Mercury" MetricName="消息积压数量" Statistic="Incremental" 
                DueTime="60" Period="20" Threshold="1000" Compare="MoreThan" />
</Metrics>

指标在界面中的位置:
xx



技术指标-监控

配置示例:

<!-- 针对【技术指标】的监控配置 -->
<Heartbeats>
<!-- 【Juno】启动后【60】秒开始监控,每【60】秒采集一次【Error】指标,如果【增量】【大于等于】【10】,就发送告警 -->
<Monitor AppName="Nebula.Juno" MetricName="Error" Statistic="Incremental" 
         DueTime="60" Period="60" Threshold="10" Compare="MoreThan"/>
</Heartbeats>

指标在界面中的位置:
xx

配置文件

完整配置文件的结构如下

<?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
}