Files
ai-security-xdr/haobang-security-dm/syslog-consumer-rule/src/main/java/com/common/service/BacklogSamplingMetrics.java
T

57 lines
2.5 KiB
Java
Raw Normal View History

package com.common.service;
import org.springframework.stereotype.Component;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.LongAdder;
/** 积压采样热路径指标;表审计失败时仍可从接口和日志发现。 */
@Component
public class BacklogSamplingMetrics {
private final LongAdder degradedMessages = new LongAdder();
private final LongAdder alarmRowsSaved = new LongAdder();
private final LongAdder normalRowsSaved = new LongAdder();
private final LongAdder normalRowsDropped = new LongAdder();
private final LongAdder nonNormalRowsSaved = new LongAdder();
private final LongAdder nonNormalRowsDropped = new LongAdder();
private final LongAdder rawSaved = new LongAdder();
private final LongAdder rawDropped = new LongAdder();
private final LongAdder auditWriteFailures = new LongAdder();
private final LongAdder auditFallbackMessages = new LongAdder();
public void record(List<BacklogRetentionDelta> deltas) {
for (BacklogRetentionDelta delta : deltas) {
degradedMessages.add(delta.getMessageTotal());
alarmRowsSaved.add(delta.getAlarmRowsSaved());
normalRowsSaved.add(delta.getNormalRowsSaved());
normalRowsDropped.add(delta.getNormalRowsDropped());
nonNormalRowsSaved.add(delta.getNonNormalRowsSaved());
nonNormalRowsDropped.add(delta.getNonNormalRowsDropped());
rawSaved.add(delta.getRawSaved());
rawDropped.add(delta.getRawDropped());
}
}
public void auditFailure(long affectedMessages) {
auditWriteFailures.increment();
auditFallbackMessages.add(Math.max(0L, affectedMessages));
}
public Map<String, Object> snapshot() {
Map<String, Object> values = new LinkedHashMap<>();
values.put("degraded_messages_total", degradedMessages.sum());
values.put("alarm_rows_saved_total", alarmRowsSaved.sum());
values.put("normal_rows_saved_total", normalRowsSaved.sum());
values.put("normal_rows_dropped_total", normalRowsDropped.sum());
values.put("non_normal_rows_saved_total", nonNormalRowsSaved.sum());
values.put("non_normal_rows_dropped_total", nonNormalRowsDropped.sum());
values.put("raw_saved_total", rawSaved.sum());
values.put("raw_dropped_total", rawDropped.sum());
values.put("audit_write_failures_total", auditWriteFailures.sum());
values.put("audit_fallback_messages_total", auditFallbackMessages.sum());
return values;
}
}