Hangfire 是一款强大的.NET开源后台任务利器,无需Windows服务/任务计划程序。可以使用于ASP.NET 应用也可以使用于控制台。Hangfire 只需简单几句代码即可创建新的不同种类的任务。与Quartz.NET相比,其集成了可视化的UI管理与监视工具,不但可以查看任务的运行频率 ,还可以手动启动或删除任务。
在特来电系统中,Hangfire作为定时任务调度的引擎,主要用于实现定时充电调度,Plus会员过期提醒,各类状态信息的定时上报和各类定时处理调度(比如各类补偿任务和检查任务)等。
Hangfire UI管理界面
由于Hangfire的的任务执行依赖于轮询redis或者sqlserver数据库,如果它们发生宕机或者连接出现问题,Hangfire的工作线程往往会挂掉,出现任务无法按时执行的问题,当然可以通过Hangfire的UI界面发现问题,但是对于可用性要求高的互联网应用,通过人工观察是无法保证系统的可靠性。
所以为了及时了解Hangfire的运行状态,我们对Hangfire的系统有如下的监控需求:
系统是否正常运行,即任务能够正常创建与按时执行。
系统是否有异常,主要指需要执行的任务是否发生积压和任务调度是否有异常。
因此我们需要对Hangfire进行如下维度的监控:
Hangfire是否正常工作
Hangfire积压任务数
Hangfire是否有内部异常
一 、Hangfire工作线程是否正常
Hangfire工作原理如图