d84f93ce0a
此前编排不含时序库,首页流量/用量图表、单卡流量历史等依赖时序数据的功能 不可用。现补上: - 新增 tdengine 服务(镜像 iotlcm/iotlcm:tdengine-3.3.6.13) 端口 6041(taosAdapter/WebSocket,应用用这个)+ 6030,数据卷 ./data/tdengine - 新增 tdengine-init 一次性服务:等 tdengine 健康后建库建表,并校验超级表存在, 缺表则以非零码退出 - 建库建表 SQL 取自生产环境 SHOW CREATE STABLE(仅结构无数据): iotlcm_daily DURATION 7d KEEP 1095d ms -> t_sim_card_usage_daily iotlcm_monthly DURATION 30d KEEP 1095d ms -> t_sim_card_usage_monthly - 三个服务的 tsdb.tdengine 配置指向 tdengine:6041(admin-svr / app-server / worker-svr) 踩坑记录:taos -f 是按行执行语句的,多行 CREATE STABLE 会报 Incomplete SQL statement,因此 SQL 必须单行;且 taos 出错时退出码仍为 0, 故 run.sh 额外做超级表校验。 已验证:初始化 4 条语句全部 Create OK、0 error;按 worker 的 INSERT 形式 (USING ... TAGS)写入成功、按 admin 的查询形式(SELECT ts,usage_mb,package_code,iccid) 可读回;整栈 15 个服务全 Up,admin-svr/openapi/sms/docs 均 200,worker 无时序库报错。
141 lines
3.5 KiB
YAML
141 lines
3.5 KiB
YAML
# ============================================================
|
||
# iotlcm-worker-svr 配置
|
||
#
|
||
# 本文件随部署仓分发,已带可运行默认值,无需复制或改名。
|
||
# 正式上线前请修改口令等敏感项;修改时需与 docker-compose.yml、
|
||
# schema/init.sql 及 config/ 下其他文件保持一致(详见 README)。
|
||
# ============================================================
|
||
|
||
system:
|
||
name: "IotLCM"
|
||
version: "1.0"
|
||
description: "IotLCM Worker"
|
||
gfmode: "prod"
|
||
upload:
|
||
local:
|
||
path: "resource/upload"
|
||
|
||
logger:
|
||
path: "/app/logs"
|
||
file: "{Y-m-d-H}.log"
|
||
prefix: ""
|
||
level: "all"
|
||
timeFormat: "2006-01-02T15:04:05"
|
||
ctxKeys: []
|
||
header: true
|
||
stdout: true
|
||
rotateSize: 0
|
||
rotateExpire: 0
|
||
rotateBackupLimit: 0
|
||
rotateBackupExpire: 0
|
||
rotateBackupCompress: 0
|
||
rotateCheckInterval: "1h"
|
||
stdoutColorDisabled: false
|
||
writerColorEnable: false
|
||
|
||
# ---------- 数据库 ----------
|
||
database:
|
||
logger:
|
||
path: "/app/logs/sql"
|
||
level: "all"
|
||
stdout: true
|
||
default:
|
||
# 必改:连接串
|
||
link: "mysql:u_iotlcm:Iotlcm2026Default@tcp(mysql:3306)/db_iotlcm?charset=utf8mb4&parseTime=True&loc=Asia%2FShanghai"
|
||
debug: false
|
||
charset: "utf8mb4"
|
||
dryRun: false
|
||
maxIdle: 30
|
||
maxOpen: 100
|
||
maxLifetime: 120
|
||
memorydb:
|
||
link: "sqlite::@file(:memory:)"
|
||
debug: false
|
||
maxIdle: 1
|
||
maxOpen: 1
|
||
maxLifetime: 30
|
||
|
||
cache:
|
||
adapter: "redis"
|
||
fileDir: "resource/cache"
|
||
|
||
# ---------- Redis ----------
|
||
redis:
|
||
default:
|
||
mode: "single"
|
||
sentinelMasterName: ""
|
||
address: "redis:6379"
|
||
db: 0
|
||
pass: "Iotlcm2026Default"
|
||
minIdle: 5
|
||
maxIdle: 30
|
||
maxActive: 5000
|
||
idleTimeout: "60s"
|
||
ClientName: "WorkerCache"
|
||
|
||
# ---------- RabbitMQ ----------
|
||
rabbitmq:
|
||
enabled: true
|
||
dsn: "amqp://iotlcm:Iotlcm2026Default@rabbitmq:5672/"
|
||
balanceRecharge:
|
||
retryDelay: "1m"
|
||
batchExecute:
|
||
executionTimeout: "0s"
|
||
finalizationTimeout: "60s"
|
||
retryDelay: "30s"
|
||
maxRetries: 3
|
||
|
||
# ---------- 批次执行 ----------
|
||
batch:
|
||
allocate:
|
||
processingRetryAfter: "30m"
|
||
|
||
inbound:
|
||
upstreamBatchSize: 1
|
||
upstreamConcurrency: 300
|
||
# 运营商接口限流。必须按上游实际配额设置,
|
||
# 调太大会被运营商限流甚至封禁。
|
||
upstreamRateLimit:
|
||
enabled: true
|
||
mode: "redis"
|
||
redisGroup: "default"
|
||
keyPrefix: "iotlcm:worker:inbound:upstream_basic_info"
|
||
redisFailureFallback: "error"
|
||
default:
|
||
enabled: false
|
||
carriers:
|
||
mobile:
|
||
enabled: false
|
||
telecom:
|
||
enabled: true
|
||
qps: 20
|
||
burst: 1
|
||
requestCost: 1
|
||
channels: {}
|
||
stockQueryBatchSize: 1000
|
||
writeBatchSize: 1000
|
||
|
||
# ---------- TDengine(流量历史) ----------
|
||
# 不启用时序库时 dsn 留空,全量同步中的流量历史部分不可用。
|
||
tsdb:
|
||
database: "TdEngine"
|
||
tdengine:
|
||
type: "taosWS"
|
||
# TDengine 3.x WebSocket 地址(容器内服务名 tdengine,端口 6041)
|
||
# 口令为 TDengine 默认 root/taosdata;改过口令需同步改这里
|
||
dsn: "root:taosdata@ws(tdengine:6041)/"
|
||
# dbName 只是连接池键名与兜底值,不决定实际访问哪个库
|
||
dbName: "iotlcm_daily"
|
||
dailyDbName: "iotlcm_daily"
|
||
monthlyDbName: "iotlcm_monthly"
|
||
maxOpenConns: 100
|
||
maxIdleConns: 10
|
||
|
||
# ---------- 上游服务地址 ----------
|
||
upstream:
|
||
proxy:
|
||
address: "upstream-proxy:8510"
|
||
# 异步提交协议版本,保持默认
|
||
apnAsyncProtocolVersion: 1
|
||
timeout: 10s
|