巧用定时任务监控第三方组件是否正常

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了巧用定时任务监控第三方组件是否正常相关的知识,希望对你有一定的参考价值。

背景

平常我们系统一般会涉及到一些使用第三方组件的情况,那么我们如何去监测,第一时间知道组件是否可用。或者是组件没报错,但是没法返回我们想要的数据。

问题窥探

一般做法是在调用的时候,如果是异常,就发出对应的报警,这是解决的方式,但是也会有对应的问题,就是这种方式属于被动形式的报警,就是只有当用户操作触发的时候才知道,那么我们怎么主动的去知道组件是否可用,做对应的监控检查呢。我们采用的方式是使用定时任务,去执行健康检查。及时的去获取信息。

主要代码实现

 using NLog;
using System;
using System.Collections.Generic;

namespace ResearchManager.WinService.Jobs.Monitor
{
    public abstract class BaseMonitorJob : BaseQuartzJob
    {
        protected abstract List<string> DoMonitorJob();

        protected override void DoJob()
        {
            List<string> errorMsgList = null;

            try
            {
                errorMsgList = DoMonitorJob();
            }
            catch (Exception ex)
            {
                if (errorMsgList == null)
                {
                    errorMsgList = new List<string>();
                }

                errorMsgList.Add(ex.ToString());
            }

            if (errorMsgList != null)
            {
                string logMsg = string.Format("{0}, errorMsgList={1}", GetType().Name, string.Join("\\n", errorMsgList));
                Common.Log(logMsg);

                if (errorMsgList.Count > 0)
                {
                    Common.Log(LogLevel.Error, logMsg);
                    string subject = "BigTracker 資料監控錯誤通知";
                    string content = string.Join("<br/>", errorMsgList);
                    Common.ErrorHandle(subject, content);
                }
            }
        }
    }
}
 using Autofac;
using ResearchManager.Interface.Service;
using System.Collections.Generic;

namespace ResearchManager.WinService.Jobs.Monitor
{
    /// <summary>
    /// 商品调研分析 监测
    /// </summary>
    public class MonitorProductResearchStatisticJob : BaseMonitorJob
    {
        protected override List<string> DoMonitorJob()
        {
            IMonitorService monitorService = AutofacConfig.Instance.Resolve<IMonitorService>();
            List<string> errorMsgList = new List<string>();
            monitorService.TestProductResearchStatistic(ref errorMsgList);
            return errorMsgList;
        }
    }
}

以上是关于巧用定时任务监控第三方组件是否正常的主要内容,如果未能解决你的问题,请参考以下文章

巧用Windows 7计划任务设置定时提醒

检查CentOS7定时任务是否启用并执行过

担心接口出问题,自动化测试-定时任务为业务保驾护航

巧用 Prometheus 监控 Kubernetes 集群所有组件的证书

监控磁盘使用率解决方案

巧用task