Files
iotlcm/config/worker-svr/config.yaml
T
MiFaZhan d84f93ce0a feat: 内置 TDengine 时序库,自动建库建表
此前编排不含时序库,首页流量/用量图表、单卡流量历史等依赖时序数据的功能
不可用。现补上:

- 新增 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 无时序库报错。
2026-10-30 10:02:32 +08:00

141 lines
3.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ============================================================
# 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