#!/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。"