ESB文档库 ESB文档库
00 概述
01 产品安装指南
02 快速入门指南
03 ESB Studio使用指南
04 企业服务总线使用指南
05 高级配置指南
06 接口服务说明
07 升级&数据迁移指南
08 FAQ
无

在企业服务总线的通道管理及全局配置管理中可设置自定义告警方式,本节介绍自定义告警接口开发实现。

经典开发案例:自定义短信告警

示例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关系如下:
     * 业务告警类型:
     * public static final String TX_BIZ_FAILED = "tx.biz.failed";
     * public static final String TX_SERVICE_FAILED = "tx.service.failed";
     * public static final String TX_ESB_TIMEOUT = "tx.esb.timeout";
     * public static final String TX_ENDPOINT_PING_FAILED = "tx.endpoint.ping.failed";
     * "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/目录下。

← 3.6.10 业务校验开发示例 4.1.1 工作台 →