Files
王绍宏 ce473b2c7d perf(syslog-consumer-rule): 非标日志改为单线程异步批量写入
- 非标写库结果不再参与 Kafka ACK
- 使用独立单线程和有界队列处理非标日志
- 非标数据按固定大小分批写入达梦
- 增加异步成功、失败和队列拒绝指标
- 补充异步解耦及批量写入测试

perf(syslog-consumer-rule): 按批次字段并集优化达梦批量写入

- 普通日志和告警日志按非空字段并集生成批写模板
- 为同批记录补齐缺失字段并绑定 NULL
- 使用 MyBatis ExecutorType.BATCH 复用 PreparedStatement
- 避免固定写入全部 373 个候选字段
- 非标日志保留固定 24 列多行批量写入
- 批量大小和非标队列容量默认调整为 500
- 补充字段并集与动态 SQL 一致性测试
2026-09-11 15:44:48 +08:00

49 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
: "${INFLUX_CONTAINER:?请设置 INFLUX_CONTAINER}"
: "${INFLUX_ORG:?请设置 INFLUX_ORG}"
INFLUX_CONFIG_PATH="${INFLUX_CONFIG_PATH:-/etc/influxdb2/influx-configs}"
V2_BUCKET="${V2_BUCKET:-yelangbucket_v2}"
# 现场要求原始日志保留 180 天;仍可通过 RETENTION 环境变量覆盖。
RETENTION="${RETENTION:-180d}"
SHARD_GROUP_DURATION="${SHARD_GROUP_DURATION:-24h}"
command -v docker >/dev/null 2>&1 || {
echo "ERROR: 当前主机没有 docker 命令" >&2
exit 1
}
echo "检查 InfluxDB V2 Bucket: ${V2_BUCKET}"
BUCKETS="$(docker exec "${INFLUX_CONTAINER}" influx bucket list \
--configs-path "${INFLUX_CONFIG_PATH}")"
if printf '%s\n' "${BUCKETS}" | awk -v expected="${V2_BUCKET}" '
NR > 1 && $2 == expected { found=1 }
END { exit(found ? 0 : 1) }
'
then
echo "Bucket 已存在,脚本不会修改:"
printf '%s\n' "${BUCKETS}" | awk -v expected="${V2_BUCKET}" \
'NR == 1 || $2 == expected'
echo "请人工确认 Retention、Shard group duration 和应用 Token 权限。"
exit 0
fi
echo "创建 Bucket: name=${V2_BUCKET}, retention=${RETENTION}, shard=${SHARD_GROUP_DURATION}"
docker exec "${INFLUX_CONTAINER}" influx bucket create \
--configs-path "${INFLUX_CONFIG_PATH}" \
--org "${INFLUX_ORG}" \
--name "${V2_BUCKET}" \
--retention "${RETENTION}" \
--shard-group-duration "${SHARD_GROUP_DURATION}"
echo "创建后核验:"
docker exec "${INFLUX_CONTAINER}" influx bucket list \
--configs-path "${INFLUX_CONFIG_PATH}" \
| awk -v expected="${V2_BUCKET}" 'NR == 1 || $2 == expected'
echo "PASS: V2 Bucket 已存在;脚本未删除或修改其他 Bucket。"