probe二次开发(二)

本文介绍如何在Spring中配置内存监控任务,包括修改配置文件和实现内存使用情况收集及告警逻辑。通过定时任务定期收集应用的内存使用情况,并在达到预设阈值时发送告警。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、修改spring-stats.xml文件
加上

<bean name="memoryMonitorCollector"
class="MemoryMonitorCollectorBean">
<property name="containerWrapper" ref="containerWrapper" />
<property name="statsCollection" ref="statsCollection" />
<property name="maxSeries" value="240" />
</bean>

<bean id="memoryMonitorJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="memoryMonitorCollector" />
<property name="targetMethod" value="collect" />
<property name="concurrent" value="false" />
</bean>

<bean id="memoryMonitorTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="memoryMonitorJobDetail" />
<property name="cronExpression">
<value>0 * * * * ?</value>
</property>
</bean>

和在scheduler里加上

<ref local="memoryMonitorTrigger" />

2、添加类


import java.net.InetAddress;
import java.net.UnknownHostException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jstripe.tomcat.probe.beans.ContainerWrapperBean;
import org.jstripe.tomcat.probe.beans.stats.collectors.BaseStatsCollectorBean;
import org.jstripe.tomcat.probe.model.SystemInformation;

public class MemoryMonitorCollectorBean extends BaseStatsCollectorBean{
private ContainerWrapperBean containerWrapper;
private String viewName;
private Log logger = LogFactory.getLog(getClass());
public ContainerWrapperBean getContainerWrapper() {
return containerWrapper;
}

public void setContainerWrapper(ContainerWrapperBean containerWrapper) {
this.containerWrapper = containerWrapper;
}

public String getViewName() {
return viewName;
}

public void setViewName(String viewName) {
this.viewName = viewName;
}
public void collect() throws Exception{
SystemInformation systemInformation = new SystemInformation();
systemInformation.setAppBase(getContainerWrapper().getTomcatContainer().getAppBase().getAbsolutePath());
systemInformation.setConfigBase(getContainerWrapper().getTomcatContainer().getConfigBase());
long rate = (systemInformation.getTotalMemory()-systemInformation.getFreeMemory())* 100 / systemInformation.getMaxMemory();
if(rate > 80){
sendSMS(rate);
}
logger.error("The memery userd is "+rate+"%!");
}
public void sendSMS(long memUsed) throws UnknownHostException {
InetAddress inet = InetAddress.getLocalHost();
String sql = "";
//执行短信告警语句
DaoUtils dao = new DaoUtils();
dao.executeUpdate(sql);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值