在企业服务总线的通道管理及全局配置管理中可设置自定义告警方式,本节介绍自定义告警接口开发实现。
经典开发案例:自定义短信告警
示例demo:cust-alarm.zip
1、创建java项目并添加依赖
pom.xml |
---|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.primeton.esb.server</groupId>
<artifactId>cust-alarm</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>cust-alarm</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- {server安装目录}/server/plugins/com.primeton.esb.server.alarm-9.0.0.jar,可自行导入maven库或通过classpath进行依赖-->
<dependency>
<groupId>com.primeton.esb.server</groupId>
<artifactId>com.primeton.esb.server.alarm</artifactId>
<version>9.0.0</version>
</dependency>
</dependencies>
</project>
2、代码开发
告警接口实现 |
---|
package com.primeton.esb.server.cust.alarm;
import java.util.Map;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import com.primeton.esb.server.alarm.handler.CustAlarmHandler;
@Component //通过spring管理
@Async //必须加异步执行方式,否则会造成交易阻塞
public class DefaultAlarmHandler implements CustAlarmHandler {
/**
* type-alarmInfo关系如下:
* "global.cpu.alarm":引擎占用CPU告警
type:类型-CPU
configValue:配置阈值(如:配置为70%,此处获取值70)
realValue:当前CPU使用占比(如:当前使用率为75%,此处获取值75)
serverId:ESB Server ID
serverIp:ESB Server IP
serverPort:ESB Server 管理端口
"global.memory.alarm":引擎占用内存告警
type:类型-Memory
configValue:配置阈值(如:配置为70%,此处获取值70)
realValue:当前内存使用占比(如:当前使用率为75%,此处获取值75)
memoryUsage:当前内存使用值,单位M
serverId:ESB Server ID
serverIp:ESB Server IP
serverPort:ESB Server 管理端口
"global.thread.alarm":全局线程池活动线程占比告警
configValue:配置阈值(如:配置为70%,此处获取值70)
realValue:当前全局线程池活动线程占比(如:配置为75%,此处获取值75)
serverId:ESB Server ID
serverIp:ESB Server IP
serverPort:ESB Server 管理端口
"global.queue.alarm":全局线程池队列占比告警
configValue:配置阈值(如:配置为70%,此处获取值70)
realValue:当前全局线程池队列占比(如:配置为75%,此处获取值75)
serverId:ESB Server ID
serverIp:ESB Server IP
serverPort:ESB Server 管理端口
"passageway.thread.alarm":通道线程占比告警
configValue:配置阈值(如:配置为70%,此处获取值70)
realValue:当前通道线程池活动线程占比(如:配置为75%,此处获取值75)
channelId:线程池id
passagewayId:通道ID
passagewayName:通道名称
serverId:ESB Server ID
serverIp:ESB Server IP
serverPort:ESB Server 管理端口
"passageway.queue.alarm";
configValue:配置阈值(如:配置为70%,此处获取值70)
realValue:当前通道线程池队列占比(如:配置为75%,此处获取值75)
channelId:线程池id
passagewayId:通道ID
passagewayName:通道名称
serverId:ESB Server ID
serverIp:ESB Server IP
serverPort:ESB Server 管理端口
"passageway.mq.size.alarm":MQ队列大小告警
mqIp:MQ IP
mqPort:MQ 端口
queue:队列名称
configValue:配置阈值
realValue:当前队列大小
passagewayId:通道ID
passagewayName:通道名称
serverId:ESB Server ID
serverIp:ESB Server IP
serverPort:ESB Server 管理端口
"passageway.mq.timeout.alarm":MQ消息消费超时告警
mqIp:MQ IP
mqPort:MQ 端口
queue:队列名称
configValue:配置阈值
realValue:队列中数据未消费时长,单位ms
mqSize:当前队列大小
passagewayId:通道ID
passagewayName:通道名称
serverId:ESB Server ID
serverIp:ESB Server IP
serverPort:ESB Server 管理端口
* @param type 告警类型:
* @param alarmInfo:告警监控指标
* @param args:自定义告警参数
*/
@Override
public void handle(String type,Map<String, String> alarmInfo,String args) {
System.out.println("自定义告警类型:"+type);
System.out.println("自定义告警参数:"+args);
if(alarmInfo != null) {
alarmInfo.forEach((key,value)->{
System.out.println("告警信息["+key+"]["+value+"]");
});
}
}
}
3、打包部署
将开发的实现打成jar包,并将jar放入{server安装目录}/server/plugins/目录下。