zoukankan      html  css  js  c++  java
  • Adhesive框架系列文章报警服务使用实践

    如果我们新建了一个Adhesive.Test.WebApp的网站应用程序,希望对其中的异常进行监控报警,那么我们可以直接通过配置服务后台配置报警模块实现。

    image

    很明显,这是一个对数据量的监控,在异常记录达到一定数据量之后进行报警:

    image

    点击增加按钮,取名为“测试应用程序的异常监控”,这里看到的是添加后的结果:

    image

    然后对数据进行修改:

    image

    这里我们监控的数据库为Aic__Exception(应用程序信息中心模块的已处理异常),可以查看元数据知道:

    image

    然后由于我们按照应用程序名分表,因此这里表名需要修改为Adhesive.Test.WebApp:

    image

    然后我们这里配置了,1分钟内数据量超过100则报警,10秒检查一次。

    这里时间跨度和检查时间间隔,我们虽然是10秒检查一次,但是检查的是1分钟的数据量是否超过100。

    最后,配置一下报警的组:

    image

    这里,我们把信息发送到名为测试的组:

    image

    来看一下测试组,这个组所有接受者接收手机消息的间隔是30秒,邮件消息也是30秒,只不过这里关闭了邮件消息。

    为了测试,我们通过程序加入若干异常,主要超过100条就可以了,然后可以收到短信,在日志中也可以看到报警模块记录了相关日志:

    image

    在这里我们查看信息中心中的报警服务的日志,搜索Aic__Exception数据库的报警日志,并且只显示达到发送条件的日志:

    image

    可以看到报警信息的确发送了。

    之前我们实现了基于数据量的报警的配置,在这里我们再尝试一下,基于数据状态值的报警配置,首先自定义一个状态实体:

        [MongodbPersistenceEntity("Test", DisplayName = "测试状态", ExpireDays = 1)]
        public class TestState : BaseInfo
        {
            [MongodbPresentationItem(DisplayName = "测试状态值", ShowInTableView = true)]
            public int StateValue { get; set; }
        }

    所以通过状态服务发送的数据都需要继承BaseInfo,这里我们配置了一个TestState的状态,里面只有一个测试状态值。

    由于状态信息无需保存很长时间,我们把过期时间设为1天。然后我们初始化一个静态变量来保存状态服务的实例:

            private static IStateService testStateService = AppInfoCenterService.StateService;
            private static int stateValue = 100;
            protected void Page_Load(object sender, EventArgs e)
            {
                testStateService.Init(new StateServiceConfiguration("Adhesive.Test.WebApp.TestState", () =>
                {
                    return new List<BaseInfo> { new TestState
                    {
                        StateValue = stateValue,
                    } };
                }));
            }

    仅仅这么做还不够,我们还需要配置Mongodb的客户端和服务端加入Adhesive.Test.WebApp.TestState,使之可以接受这个数据。在上文中我们已经介绍过如何做了,这里仅仅给出配置后的截图:

    image

    image

    然后,我们需要配置信息中心的状态服务,配置这个状态数据收集的频率等:

    我们知道信息中心是一个私有配置,因此需要先找到Adhesive.Test.WebApp:

    image

    进入之后只有一个私有配置:

    image

    然后在状态服务的配置中增加一个数据项:

    image

    修改类型完整名为Adhesive.Test.WebApp.TestState,10秒收集一次状态。

    image

    在打开页面后,可以在后台查看这个状态数据,应该10秒有一条:

    image

    image

    我们可以针对这个数据进行配置,超过100则报警。在报警模块的配置中找到针对状态的配置:

    image

    在这其中,我们建立一个测试状态的报警配置:

    image

    配置的是Test__TestState数据库中Adhesive.Test.WebApp表StateValue列数据量在1分钟内超过100则报警:

    image

    现在可以尝试在页面上通过一个按钮把状态变为改为101:

    image

    稍等一段时间就会收到报警,也可以在后台查看到报警发送的记录:

    image

    至此,我们介绍了两种报警方式的配置。

    欢迎大家阅读我的极客时间专栏《Java业务开发常见错误100例》【全面避坑+最佳实践=健壮代码】
  • 相关阅读:
    BZOJ4552 Tjoi2016&Heoi2016排序 【二分+线段树】*
    BZOJ4547 Hdu5171 小奇的集合 【矩阵快速幂优化递推】
    BZOJ1113 Poi2008 海报PLA【单调栈】【水】
    BZOJ1510 POI2006 Kra-The Disks 【模拟】
    BZOJ 2530 Poi2011 Party 【枚举】
    BZOJ4292 PA2015 Równanie 【暴力水题】
    BZOJ1801 Ahoi2009 chess 中国象棋 【DP+组合计数】*
    【干货】高精度模板【加,减,乘,快速幂】
    BZOJ1220 HNOI2002 跳蚤 【容斥原理+高精度】*
    BZOJ1412 ZJOI2009 狼和羊的故事 【网络流-最小割】
  • 原文地址:https://www.cnblogs.com/lovecindywang/p/2227931.html
Copyright © 2011-2022 走看看