Skip to content

Commit d8dfde3

Browse files
committed
[fix](auditlog) add missing audit log fields
1 parent 7e06b83 commit d8dfde3

File tree

4 files changed

+30
-14
lines changed

4 files changed

+30
-14
lines changed

fe/fe-core/src/main/java/org/apache/doris/catalog/InternalSchema.java

+17
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,23 @@ public class InternalSchema {
139139
AUDIT_SCHEMA.add(new ColumnDef("scan_rows", TypeDef.create(PrimitiveType.BIGINT), ColumnNullableType.NULLABLE));
140140
AUDIT_SCHEMA
141141
.add(new ColumnDef("return_rows", TypeDef.create(PrimitiveType.BIGINT), ColumnNullableType.NULLABLE));
142+
AUDIT_SCHEMA
143+
.add(new ColumnDef("shuffle_send_rows", TypeDef.create(PrimitiveType.BIGINT),
144+
ColumnNullableType.NULLABLE));
145+
AUDIT_SCHEMA
146+
.add(new ColumnDef("shuffle_send_bytes", TypeDef.create(PrimitiveType.BIGINT),
147+
ColumnNullableType.NULLABLE));
148+
AUDIT_SCHEMA
149+
.add(new ColumnDef("scan_bytes_from_local_storage", TypeDef.create(PrimitiveType.BIGINT),
150+
ColumnNullableType.NULLABLE));
151+
AUDIT_SCHEMA
152+
.add(new ColumnDef("scan_bytes_from_remote_storage", TypeDef.create(PrimitiveType.BIGINT),
153+
ColumnNullableType.NULLABLE));
142154
AUDIT_SCHEMA.add(new ColumnDef("stmt_id", TypeDef.create(PrimitiveType.BIGINT), ColumnNullableType.NULLABLE));
143155
AUDIT_SCHEMA.add(new ColumnDef("stmt_type", TypeDef.createVarchar(48), ColumnNullableType.NULLABLE));
144156
AUDIT_SCHEMA.add(new ColumnDef("is_query", TypeDef.create(PrimitiveType.TINYINT), ColumnNullableType.NULLABLE));
157+
AUDIT_SCHEMA.add(
158+
new ColumnDef("is_nereids", TypeDef.create(PrimitiveType.TINYINT), ColumnNullableType.NULLABLE));
145159
AUDIT_SCHEMA.add(new ColumnDef("frontend_ip", TypeDef.createVarchar(128), ColumnNullableType.NULLABLE));
146160
AUDIT_SCHEMA
147161
.add(new ColumnDef("cpu_time_ms", TypeDef.create(PrimitiveType.BIGINT), ColumnNullableType.NULLABLE));
@@ -151,6 +165,9 @@ public class InternalSchema {
151165
new ColumnDef("peak_memory_bytes", TypeDef.create(PrimitiveType.BIGINT), ColumnNullableType.NULLABLE));
152166
AUDIT_SCHEMA.add(
153167
new ColumnDef("workload_group", TypeDef.create(PrimitiveType.STRING), ColumnNullableType.NULLABLE));
168+
AUDIT_SCHEMA.add(
169+
new ColumnDef("compute_group", TypeDef.create(PrimitiveType.STRING), ColumnNullableType.NULLABLE));
170+
// Keep stmt as last column. So that in fe.audit.log, it will be easier to get sql string
154171
AUDIT_SCHEMA.add(new ColumnDef("stmt", TypeDef.create(PrimitiveType.STRING), ColumnNullableType.NULLABLE));
155172
}
156173

fe/fe-core/src/main/java/org/apache/doris/plugin/AuditEvent.java

+6-8
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,9 @@ public enum EventType {
8080
public String queryId = "";
8181
@AuditField(value = "IsQuery")
8282
public boolean isQuery = false;
83-
@AuditField(value = "isNereids")
83+
@AuditField(value = "IsNereids")
8484
public boolean isNereids = false;
85-
@AuditField(value = "feIp")
85+
@AuditField(value = "FeIp")
8686
public String feIp = "";
8787
@AuditField(value = "StmtType")
8888
public String stmtType = "";
@@ -96,22 +96,20 @@ public enum EventType {
9696
public long shuffleSendRows = -1;
9797
@AuditField(value = "SqlHash")
9898
public String sqlHash = "";
99-
@AuditField(value = "peakMemoryBytes")
99+
@AuditField(value = "PeakMemoryBytes")
100100
public long peakMemoryBytes = -1;
101101
@AuditField(value = "SqlDigest")
102102
public String sqlDigest = "";
103-
@AuditField(value = "cloudClusterName")
103+
@AuditField(value = "ComputeGroupName")
104104
public String cloudClusterName = "";
105-
@AuditField(value = "TraceId")
106-
public String traceId = "";
107105
@AuditField(value = "WorkloadGroup")
108106
public String workloadGroup = "";
109107
// note: newly added fields should be always before fuzzyVariables
110108
@AuditField(value = "FuzzyVariables")
111109
public String fuzzyVariables = "";
112-
@AuditField(value = "scanBytesFromLocalStorage")
110+
@AuditField(value = "ScanBytesFromLocalStorage")
113111
public long scanBytesFromLocalStorage = -1;
114-
@AuditField(value = "scanBytesFromRemoteStorage")
112+
@AuditField(value = "ScanBytesFromRemoteStorage")
115113
public long scanBytesFromRemoteStorage = -1;
116114

117115
public long pushToAuditLogQueueTime;

fe/fe-core/src/main/java/org/apache/doris/plugin/audit/AuditLoader.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@
3535
import org.apache.logging.log4j.Logger;
3636

3737
import java.io.IOException;
38-
import java.time.ZoneId;
39-
import java.time.format.DateTimeFormatter;
4038
import java.util.concurrent.BlockingQueue;
4139
import java.util.concurrent.TimeUnit;
4240

@@ -48,9 +46,6 @@ public class AuditLoader extends Plugin implements AuditPlugin {
4846

4947
public static final String AUDIT_LOG_TABLE = "audit_log";
5048

51-
private static final DateTimeFormatter DATETIME_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")
52-
.withZone(ZoneId.systemDefault());
53-
5449
private StringBuilder auditLogBuffer = new StringBuilder();
5550
private int auditLogNum = 0;
5651
private long lastLoadTimeAuditLog = 0;
@@ -143,6 +138,7 @@ private void assembleAudit(AuditEvent event) {
143138
}
144139

145140
private void fillLogBuffer(AuditEvent event, StringBuilder logBuffer) {
141+
// should be same order as InternalSchema.AUDIT_SCHEMA
146142
logBuffer.append(event.queryId).append("\t");
147143
logBuffer.append(TimeUtils.longToTimeStringWithms(event.timestamp)).append("\t");
148144
logBuffer.append(event.clientIp).append("\t");
@@ -156,6 +152,10 @@ private void fillLogBuffer(AuditEvent event, StringBuilder logBuffer) {
156152
logBuffer.append(event.scanBytes).append("\t");
157153
logBuffer.append(event.scanRows).append("\t");
158154
logBuffer.append(event.returnRows).append("\t");
155+
logBuffer.append(event.shuffleSendRows).append("\t");
156+
logBuffer.append(event.shuffleSendBytes).append("\t");
157+
logBuffer.append(event.scanBytesFromLocalStorage).append("\t");
158+
logBuffer.append(event.scanBytesFromRemoteStorage).append("\t");
159159
logBuffer.append(event.stmtId).append("\t");
160160
logBuffer.append(event.stmtType).append("\t");
161161
logBuffer.append(event.isQuery ? 1 : 0).append("\t");
@@ -165,6 +165,7 @@ private void fillLogBuffer(AuditEvent event, StringBuilder logBuffer) {
165165
logBuffer.append(event.sqlDigest).append("\t");
166166
logBuffer.append(event.peakMemoryBytes).append("\t");
167167
logBuffer.append(event.workloadGroup).append("\t");
168+
logBuffer.append(event.cloudClusterName).append("\t");
168169
// already trim the query in org.apache.doris.qe.AuditLogHelper#logAuditLog
169170
String stmt = event.stmt;
170171
if (LOG.isDebugEnabled()) {

fe/fe-core/src/main/java/org/apache/doris/plugin/audit/AuditLogBuilder.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ private void auditQueryLog(AuditEvent event) throws IllegalAccessException {
116116
if (af.value().equals("Time(ms)")) {
117117
queryTime = (long) f.get(event);
118118
}
119-
sb.append("|").append(af.value()).append("=").append(String.valueOf(f.get(event)));
119+
sb.append("|").append(af.value()).append("=").append(f.get(event));
120120
}
121121

122122
String auditLog = sb.toString();

0 commit comments

Comments
 (0)