87fee6fe69
- 新增 start-lag-ms 配置,默认15分钟内全量保留 - 在15分钟至1小时之间按10级逐步降低保留率 - 延迟达到1小时后使用普通10%、非标20%的最低保留率 - 校验起始延迟必须小于最低保留率阈值 - 状态接口新增 start_lag_ms 配置展示 - 将采样策略版本升级为 v2 - 更新 Docker Compose 和 v4 升级配置说明 - 补充采样时间边界及非法配置单元测试
57 lines
2.5 KiB
Java
57 lines
2.5 KiB
Java
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;
|
|
}
|
|
}
|