Skip to content

Commit 63a2197

Browse files
doleyzidoleyzi
andauthored
[INLONG-12060][Audit] Optimize audit route management (#12061)
Co-authored-by: doleyzi <[email protected]>
1 parent 0bb45cc commit 63a2197

File tree

8 files changed

+26
-2
lines changed

8 files changed

+26
-2
lines changed

inlong-audit/audit-common/src/main/java/org/apache/inlong/audit/entity/AuditRoute.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,5 @@ public class AuditRoute {
3030
private String auditId;
3131
private String inlongGroupIdsInclude;
3232
private String inlongGroupIdsExclude;
33+
private int priority;
3334
}

inlong-audit/audit-common/src/main/java/org/apache/inlong/audit/file/ConfigManager.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,10 @@ public int getValue(String key, int defaultValue) {
119119
return getValue(key, defaultValue, Integer::parseInt);
120120
}
121121

122+
public boolean getValue(String key, boolean defaultValue) {
123+
return getValue(key, defaultValue, Boolean::parseBoolean);
124+
}
125+
122126
private boolean updatePropertiesHolder(Map<String, String> result,
123127
String holderName, boolean addElseRemove) {
124128
if (StringUtils.isNotEmpty(holderName)) {

inlong-audit/audit-service/src/main/java/org/apache/inlong/audit/service/cache/AuditRouteCache.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public class AuditRouteCache {
5353
private static final String AUDIT_ID_INCLUDE = "audit_id_include";
5454
private static final String GROUP_ID_INCLUDE = "inlong_group_id_include";
5555
private static final String GROUP_ID_EXCLUDE = "inlong_group_id_exclude";
56+
private static final String PRIORITY = "priority";
5657

5758
@Getter
5859
private static final AuditRouteCache instance = new AuditRouteCache();
@@ -115,6 +116,7 @@ private void updateAuditRouteCache(String querySQL) {
115116
String auditId = StringUtils.trimToNull(resultSet.getString(AUDIT_ID_INCLUDE));
116117
String includeGroupId = StringUtils.trimToNull(resultSet.getString(GROUP_ID_INCLUDE));
117118
String excludeGroupId = StringUtils.trimToNull(resultSet.getString(GROUP_ID_EXCLUDE));
119+
int priority = resultSet.getInt(PRIORITY);
118120

119121
if (!isValidRegexOrLog(auditId)
120122
|| !isValidRegexOrLog(includeGroupId)
@@ -130,6 +132,7 @@ private void updateAuditRouteCache(String querySQL) {
130132
data.setAuditId(auditId);
131133
data.setInlongGroupIdsInclude(includeGroupId);
132134
data.setInlongGroupIdsExclude(excludeGroupId);
135+
data.setPriority(priority);
133136

134137
auditRoutes.computeIfAbsent(address, key -> new ArrayList<>()).add(data);
135138
}
@@ -139,6 +142,9 @@ private void updateAuditRouteCache(String querySQL) {
139142
}
140143

141144
if (!auditRoutes.isEmpty()) {
145+
auditRoutes.values()
146+
.forEach(routes -> routes.sort((r1, r2) -> Integer.compare(r2.getPriority(), r1.getPriority())));
147+
142148
auditRouteCache = auditRoutes;
143149
LOGGER.info("AuditRouteCache update success. Cache size={}, Query size={}", auditRouteCache.size(),
144150
auditRoutes.size());

inlong-audit/audit-service/src/main/java/org/apache/inlong/audit/service/config/SqlConstants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,5 +255,5 @@ public class SqlConstants {
255255

256256
public static final String KEY_QUERY_AUDIT_ROUTE_SQL = "audit.query.route.sql";
257257
public static final String DEFAULT_QUERY_AUDIT_ROUTE_SQL =
258-
"SELECT address, audit_id_include, inlong_group_id_include, inlong_group_id_exclude FROM audit_route_config WHERE status=1";
258+
"SELECT address, audit_id_include, inlong_group_id_include, inlong_group_id_exclude, priority FROM audit_route_config WHERE status=1";
259259
}

inlong-audit/audit-store/src/main/java/org/apache/inlong/audit/store/config/ConfigConstants.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,7 @@ public class ConfigConstants {
3535
public static final int DEFAULT_AUDIT_SERVICE_TIMEOUT_MS = 30000;
3636
public static final String KEY_AUDIT_SERVICE_ROUTE_API = "audit.service.route.api";
3737
public static final String DEFAULT_AUDIT_SERVICE_ROUTE_API = "/audit/query/getAuditRoute";
38+
39+
public static final String KEY_AUDIT_STORE_ROUTE_ENABLED = "audit.store.route.enabled";
40+
public static final boolean DEFAULT_AUDIT_STORE_ROUTE_ENABLED = false;
3841
}

inlong-audit/audit-store/src/main/java/org/apache/inlong/audit/store/route/AuditRouteManager.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,11 @@
4040
import static org.apache.inlong.audit.store.config.ConfigConstants.DEFAULT_AUDIT_SERVICE_ADDR;
4141
import static org.apache.inlong.audit.store.config.ConfigConstants.DEFAULT_AUDIT_SERVICE_ROUTE_API;
4242
import static org.apache.inlong.audit.store.config.ConfigConstants.DEFAULT_AUDIT_SERVICE_TIMEOUT_MS;
43+
import static org.apache.inlong.audit.store.config.ConfigConstants.DEFAULT_AUDIT_STORE_ROUTE_ENABLED;
4344
import static org.apache.inlong.audit.store.config.ConfigConstants.KEY_AUDIT_SERVICE_ADDR;
4445
import static org.apache.inlong.audit.store.config.ConfigConstants.KEY_AUDIT_SERVICE_ROUTE_API;
4546
import static org.apache.inlong.audit.store.config.ConfigConstants.KEY_AUDIT_SERVICE_TIMEOUT_MS;
47+
import static org.apache.inlong.audit.store.config.ConfigConstants.KEY_AUDIT_STORE_ROUTE_ENABLED;
4648
import static org.apache.inlong.audit.utils.RouteUtils.extractAddress;
4749

4850
public class AuditRouteManager {
@@ -68,6 +70,13 @@ private AuditRouteManager() {
6870
}
6971

7072
public void init(String jdbcUrl) {
73+
boolean routeEnabled =
74+
ConfigManager.getInstance().getValue(KEY_AUDIT_STORE_ROUTE_ENABLED, DEFAULT_AUDIT_STORE_ROUTE_ENABLED);
75+
if (!routeEnabled) {
76+
LOGGER.info("AuditRouteManager is disabled by configuration ({}=false)", KEY_AUDIT_STORE_ROUTE_ENABLED);
77+
return;
78+
}
79+
7180
String serviceAddr = ConfigManager.getInstance().getValue(KEY_AUDIT_SERVICE_ADDR, DEFAULT_AUDIT_SERVICE_ADDR);
7281
String routeApi =
7382
ConfigManager.getInstance().getValue(KEY_AUDIT_SERVICE_ROUTE_API, DEFAULT_AUDIT_SERVICE_ROUTE_API);

inlong-audit/audit-store/src/main/java/org/apache/inlong/audit/store/service/JdbcService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ public void insert(AuditData msgBody, Consumer<byte[]> consumer, MessageId messa
201201
AuditRouteManager.getInstance().getAuditRoutes())) {
202202
MetricsManager.getInstance().filterSuccess();
203203
PulsarUtils.acknowledge(consumer, messageId);
204-
LOG.warn("The audit data does not match the routing rules and is filtered out: {} ", msgBody);
204+
LOG.debug("The audit data does not match the routing rules and is filtered out: {} ", msgBody);
205205
return;
206206
}
207207

inlong-audit/sql/apache_inlong_audit_mysql.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ CREATE TABLE IF NOT EXISTS `audit_route_config` (
147147
`inlong_group_id_include` VARCHAR(255) COMMENT 'Included Inlong group IDs (regular expression)',
148148
`inlong_group_id_exclude` VARCHAR(255) COMMENT 'Excluded Inlong group IDs (regular expression)',
149149
`status` TINYINT NOT NULL DEFAULT 1 COMMENT 'Status, 1=active, 0=inactive',
150+
`priority` int(32) NOT NULL DEFAULT 1 COMMENT 'Priority level, default is 1',
150151
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Update timestamp',
151152
PRIMARY KEY (`id`)
152153
) ENGINE = InnoDB DEFAULT CHARSET = UTF8 COMMENT='Audit route configuration table';

0 commit comments

Comments
 (0)