2026-09-06 16:46:21 +08:00
|
|
|
#!/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}"
|
2026-09-11 15:42:24 +08:00
|
|
|
# 现场要求原始日志保留 180 天;仍可通过 RETENTION 环境变量覆盖。
|
|
|
|
|
RETENTION="${RETENTION:-180d}"
|
2026-09-06 16:46:21 +08:00
|
|
|
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。"
|