项目经验:项目预警定时器配置要点总结

本文详细介绍了如何使用Spring框架配置定时器,并通过自定义类实现项目超标和数据延迟的预警功能。通过配置applicationContext文件,实现了定时任务的调度,并在定时触发时调用特定方法进行数据检查和警告。
在web.xml下


<!-- context-param是配置Spring的applicationContext文件,如果不配默认位置是WEB-INF下的applicationContext.xml文件 -->

     <context-param >

            <param-name >contextConfigLocation </param-name >

            <param-value >

                 classpath*:configs /applicationContext-app.xml

            </param-value >

     </context-param >

     <listener >

           <listener-class >org.springframework.web.context.ContextLoaderListener </listener-class >

     </listener >

 

 

在applicationContext-app.xml 下





<!-- 启动定时器 -->


     
<bean class= "org.springframework.scheduling.quartz.SchedulerFactoryBean" >

           
<property name ="triggers">

                
<list >

                
<ref local ="projectEsWarningTrigger"/>   

                
<ref local ="dataDelayWarningTrigger"/>

                
</list >

           
</property >

     
</bean >

     


     
<!-- 定义我们要运行的类,可以使用注入,定制一些参数    项目超标预警-->

     
<bean id ="projectEsWarning" class= "com.richway.rtmonitor.util.ProjectESWarning" >

           
<property name ="param" value="Spring定时器配置项目超标预警" ></property >

           
<property name ="yjlsxxService" ref="yjlsxxService"/>

     
</bean >

     


     
<!-- 定义我们要运行的类,可以使用注入,定制一些参数    数据延迟预警-->

     
<bean id ="dataDelayWarning" class= "com.richway.rtmonitor.util.DataDelayWarning" >

           
<property name ="param" value="Spring定时器配置数据延迟预警" ></property >

           
<property name ="yjlsxxService" ref="yjlsxxService"/>

     
</bean >

     


     


     
<!-- 引用、配置要运行的方法   项目超标预警-->

     
<bean id ="projectEsWarningDetail" class= "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >

     
  <!-- 目标对象 -->

     
  <!-- 指定任务类 -->

           
  <property name ="targetObject">

                
     <ref bean ="projectEsWarning"/>

           
  </property >

     
  <!-- 是否同时发生 -->

           
  <property name ="concurrent" value="false"></ property>

     
  <!-- 目标方法 -->

           
  <property name ="targetMethod" value="run"></ property>

     
</bean >

     


     
<!-- 引用、配置要运行的方法   数据延迟预警-->

     
<bean id ="dataDelayWarningDetail" class= "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >

     
  <!-- 目标对象 -->

     
  <!-- 指定任务类 -->

           
  <property name ="targetObject">

                
    <ref bean ="dataDelayWarning"/>

           
  </property >

     
  <!-- 是否同时发生 -->

           
  <property name ="concurrent" value="false"></ property>

     
  <!-- 目标方法 -->

           
  <property name ="targetMethod" value="run"></ property>

     
</bean >

     


     
<!-- 引用、定制时间间隔  项目超标预警 每隔5秒一次 -->

     
<bean id ="projectEsWarningTrigger" class= "org.springframework.scheduling.quartz.CronTriggerBean" >

           
  <property name ="jobDetail">

                
    <ref bean ="projectEsWarningDetail"/>

           
  </property >

           
  <property name ="cronExpression">

                
   <value >0/5 * * * * ? </value >

           
  </property >

     
</bean >

     


     
<!-- 引用、定制时间间隔  数据延迟预警 中午12点 以及 晚上12点 执行各执行一次  下面被注释掉的那一行就是凌晨0点 中午12点 各执行一次  另外一行 下午三点 每隔5分钟 执行一次 只是为了测试用-->

     
<bean id ="dataDelayWarningTrigger" class= "org.springframework.scheduling.quartz.CronTriggerBean" >

           
  <property name ="jobDetail">

                
   <ref bean ="dataDelayWarningDetail"/>

           
  </property >

           
  <property name ="cronExpression">

                
    <!-- <value>0 0 0,12 * * ?</value> -->

                
    <value >0 5,10,15,20,25,30,35,40,45,50,55 15 * * ?</value>

           
  </property >
     

</bean >


 

 
在DataDelayWarning.java 下 
 
package com.richway.rtmonitor.util;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Results;

import com.richway.rtmonitor.service.ZxDYjlsxxService;

/**
* @author lej
*
* 2014-7-9上午9:58:02
*/
@ParentPackage("globestruts")
@Namespace("/rtmonitor/yjlsxx")
@Results({})
public class DataDelayWarning {
    
     private String param;

     private ZxDYjlsxxService yjlsxxService;

     public void setYjlsxxService(ZxDYjlsxxService yjlsxxService) {
          this.yjlsxxService = yjlsxxService;
     }

     public String getParam() {
          return param;
     }

     public void setParam(String param) {
          this.param = param;
     }

     public void run() throws Exception {
          // 打印信息
          SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          System.out.println("the param is:" + param + " ! Time is "
                    + format.format(new Date()));
         
          System.out.println("数据延迟预警方法开始");
          yjlsxxService.createDataDelayWarning();
     }
}

 
 

 

本课程以实战演练为主,快速帮助学习者在极短时间内,从0到1搭建Prometheus + grafana + Alertmanager 监控预警平台,同时对Linux 操作系统、MySQL、Nginx、Zookeeper、Elasticsearch 完成监控预警。本课程由浅到深循序渐进,从安装部署软件,到软件配置调优,再扩展到企业级自定义开发,帮助学习者快速掌握监控预警体系知识。本课程配套安装部署文档、安装包、配置文件、运维脚本,真正实现开箱即用。本课程特点简单、实用、知识点全面、可操作性强、上手容易等特点。本课程重点内容安装部署Prometheus+Grafana+Alertmanager安装部署Linux操作系统、MySQL、Nginx、Zookeeper、Elasticsearch 相关Prometheus Exporter Prometheus预警规则配置及自定义开发Grafana监控面板配置及自定义开发自定义Web hook处理监控预警Springboot应用自定义埋点数据监控Prometheus 监控组件Prometheus是一个开源的系统监控和告警系统,通常会搭配Grafana、Alertmanager 实现监控可视化及预警通知,prometheus支持多种exporter采集数据,还支持通过pushgateway进行数据上报,Prometheus在性能上可支撑上万台规模的集群。1)Prometheus Server: 用于采集和存储度量指标数据,存储于本地TSDB时间序列数据库,默认是pull主动拉取模式,也支持push模式。主要包括Retrieval、Storage、PromQL等模块,Retrieval可以理解为定时器采集数据,Storage模块负责存储采集到的度量指标数据,PromQL负责查询计算度量指标。2)Prometheus Exporters: 每个软件都有其配套的Exporter,Exporter的作用是将软件内部运行的监控数据,整合成Prometheus 能够处理的数据格式,然后Prometheus 采用定时pull拉取的方式,调用Exporter暴露出来的接口URL,采集metrics度量指标数据并存储到TSDB。3)Alertmanager: Prometheus server 端拉取得到度量指标后,会计算度量指标数据,是否触发相关预警规则,如果达到预警规则条件,则生成 alerts 告警信息,将告警信息推送给ALertmanager,Alertmanager 收到告警信息进一步去重、分组,然后将告警信息通知出去,常见的通知方式有:电子邮件,微信,钉钉, slack等。4)Grafana:可视化监控面板展示服务,比如展示Linux 操作系统监控面板、MySQL 监控面板、Nginx监控面板、Elasticsearch 监控面板等。5)pushgateway: 相当于度量指标收集器网关,各jobs上报监控数据至pushgatewy,由prometheus server定时统一从pushgateway拉取数据。 课程大纲第一节 Prometheus架构及组件介绍第二节 Prometheus快速安装部署第三节 Exporter快速安装部署node_exporter (Linux操作系统 )安装启动mysqld_exporter 安装启动nginx-prometheus-exporter安装启动zookeeper-exporter安装启动elasticSearch_exporter安装启动配置Prometheus采集exporter 度量指标数据第四节 Grafana快速安装部署第五节 Grafana监控配置第六节 Alertmanager安装部署第七节 预警规则配置及常见告警处理Prometheus通用预警规则配置Linux操作系统监控预警规则配置MySQL监控预警规则配置Nginx监控预警规则配置Zookeeper监控预警规则配置ElasticSearch监控预警规则配置其他软件监控预警规则配置应用监控预警规则配置第八节 快速开发自定义web hook处理预警第九节 如何快速开发Springboot应用自定义埋点监控接口调用量统计接口调用耗时统计第十节 附录-推荐学习资料汇总本课程最后附所有安装包、预警规则、grafana监控面板模板、springboot demo-admin源码、课件下载地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值