十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

TDengine TDgpt Anode 管理实战:服务启停、时序基础模型部署与集群注册配置指南

TDengine TDgpt Anode 管理实战:服务启停、时序基础模型部署与集群注册配置指南 TDengine TDgpt Anode 管理实战服务启停、时序基础模型部署与集群注册配置指南【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengineTDgpt 是 TDengine 内置的时序数据分析平台它以Anode分析节点的形式独立部署并接入 TDengine 集群为ANOMALY、FORECAST等高级分析 SQL 提供异常检测与预测算法以及 TDtsfm、Time-MoE 等时序基础模型Time-series Foundation Model推理能力。本文围绕 Anode 管理文档 展开系统讲解 Linux 与 Windows 下 TDgpt 服务的启停、时序基础模型的手动加载、Gunicorn 配置文件taosanode.config.py的完整参数含义以及通过 TDengine CLI 完成 Anode 的创建、查询、刷新与删除的完整操作流程。读完本文你将能够在生产环境中独立完成 TDgpt Anode 的安装后初始化、模型调度和日常运维。一、Anode 与 TDgpt 在 TDengine 中的定位Anode 是承载 TDgpt 分析服务的节点进程对应taosanoded服务其核心职责有两点提供高级分析能力通过 RESTful 接口向 TDengine 的 mnode 暴露异常检测、预测等算法mnode 在收到相关 SQL 请求时转发给 Anode 执行承载时序基础模型推理TDtsfm、Time-MoE 等大模型资源占用高、启动慢因此由 Anode 统一管理其生命周期。在 TDengine 集群侧mnode 负责 Anode 的注册与元数据管理。从 mndAnode.c 的mndInitAnode可以看到mnode 启动时会注册CREATE ANODE、UPDATE ANODE、DROP ANODE三类管理消息的处理器并挂载SHOW ANODES与SHOW ANODES FULL两个检索句柄同时通过mndGetAnodeAlgoList从 Anode 拉取算法清单用于缓存。这正是集群侧 Anode 管理命令的底层实现。二、启动 TDgpt 服务Linux systemd安装 Anode 时系统会自动创建名为taosanoded的服务安装完成后服务不会自动启动需要手动执行systemctl start taosanoded systemctl stop taosanoded systemctl status taosanoded从仓库自带的 taosanoded.service 单元文件可以了解该服务的运行形态ExecStart使用虚拟环境中的gunicorn -c /usr/local/taos/taosanode/cfg/taosanode.config.py启动 Web 服务环境变量TDGPT_CONF/etc/taos/taosanode.config.py指定业务配置Restartalways配合StartLimitBurst6、StartLimitInterval60s实现异常自动拉起与限流LimitNOFILE1048576放开文件句柄限制TimeoutStopSec120s给模型卸载留出宽裕时间。若需临时在前台调试也可直接执行 start.sh它先激活虚拟环境再以 Gunicorn 加载同一份配置文件启动 Flask 应用。三、手动启停时序基础模型时序基础模型TSFM需要大量硬件资源因此不会随 Anode 自动启动必须手动加载。例如启动 TDtsfm 与 Time-MoE# 启动模型 start-model tdtsfm start-model timemoe # 停止模型 stop-model tdtsfm stop-model timemoe从源码实现看start-model.sh是一个薄封装tools/tdgpt/script/start-model.sh它会解析安装目录并自动查找配置文件优先install_dir/cfg/taosanode.config.py回退到/etc/taos/taosanode.config.py随后将任务委托给统一的服务管理器 taosanode_service.pymodel-start子命令。该管理器支持如下命令命令作用start/stop/status启停与查看 Anode 主服务model-start [name\|all]启动单个或全部模型服务model-stop [name\|all]停止单个或全部模型服务model-status查看各模型服务状态install/uninstall安装/卸载系统服务Windows 用 winswLinux 用 systemd其中模型的可选名称由DEFAULT_MODEL_ORDER定义为tdtsfm, timemoe, moirai, chronos, timesfm, moment即除文档中提到的两个必选模型外还可按需加载 Moirai、Chronos、TimesFM、MOMENT 等模型可选模型缺失不会导致启动失败。模型进程的 PID 记录在data_dir/pids/目录下模型日志统一写入服务日志文件taosanode-service.log。四、目录结构与配置信息Anode 安装后采用固定目录布局便于日志、模型与可执行文件分离管理目录或文件说明/usr/local/taos/taosanode/bin可执行文件目录/usr/local/taos/taosanode/resource资源文件目录软链接到/var/lib/taos/taosanode/resource//usr/local/taos/taosanode/lib依赖库目录/usr/local/taos/taosanode/model模型存放目录软链接到/var/lib/taos/taosanode/model/var/log/taos/taosanode/日志目录/etc/taos/taosanode.config.py配置文件其中安装时还会在/var/lib/taos/taosanode/venv下建立 Python 虚拟环境并安装依赖库模型权重文件放置在model目录动态加载的模型则位于model/dynamic子目录详见下文配置章节。五、配置文件详解从 uWSGI 到 Gunicorn自v3.4.1.0起Linux 平台的 Anode 改用Gunicorn作为 WSGI 服务器配置读取自/etc/taos/taosanode.config.py更早版本使用 uWSGI 和taosanode.ini。仓库中提供了完整可用的模板文件 taosanode.config.py核心内容如下import multiprocessing bind 0.0.0.0:6035 workers 2 worker_class sync threads max(multiprocessing.cpu_count() // 4 1, 2) max_requests 1000 max_requests_jitter 50 timeout 1200 keepalive 1200 accesslog /var/log/taos/taosanode/access.log errorlog /var/log/taos/taosanode/error.log loglevel debug proc_name tdgpt_taosanode_app preload_app True app_log /var/log/taos/taosanode/taosanode.app.log model_dir /usr/local/taos/taosanode/model/ log_level DEBUG draw_result False tdtsfm_1 http://127.0.0.1:6061/tdtsfm timemoe_fc http://127.0.0.1:6062/ds_predict配置文件同时承担两类职责前半部分是Gunicorn 服务器参数后半部分是Anode 业务参数。参数含义如下参数默认值说明bind0.0.0.0:6035监听地址与端口6035 为 Anode 默认端口必须与集群注册地址一致workers2Gunicorn worker 进程数官方建议为2 * CPU 核数 1worker_classsyncworker 类型IO 密集型场景可考虑eventlet或geventthreadsmax(cpu_count // 4 1, 2)每进程线程数面向模型部署场景的推荐值max_requests1000进程处理请求数上限达到后自动重启以释放内存max_requests_jitter50随机抖动避免所有 worker 同时重启timeout1200请求超时秒模型推理耗时较长需放宽keepalive1200keep-alive 保持时间accesslog/errorlog/var/log/taos/taosanode/*.logGunicorn 访问/错误日志仅 Linux 有效logleveldebugGunicorn 日志级别proc_nametdgpt_taosanode_app进程名preload_appTruefork worker 前预加载应用加快启动并节省内存app_logtaosanode.app.logAnode 应用日志文件model_dir/usr/local/taos/taosanode/model/模型存储目录log_levelDEBUGAnode 应用日志级别合法值为DEBUG、INFO、CRITICAL、ERROR、WARNdraw_resultFalse是否绘制查询结果图片关于配置的加载机制可参考 conf.py 的reload()实现它通过动态导入配置模块完成解析app_log决定应用日志的目录与文件名log_level被映射为 Python logging 级别WARN→WARNING等bind被拆分为host与port供 HTTP 服务使用model_dir、draw_result则直接覆盖默认配置。5.1 模型服务注册表models 字典仓库中的配置文件模板还提供了一份更完整的models字典它定义了所有可用时序模型服务的启动脚本、端口、端点与算法名端口和端点是服务 URL 的唯一事实来源——conf.py会根据http://127.0.0.1:portendpoint自动推导每个模型的服务地址并以algo_name如tdtsfm_1、timemoe-fc作为配置键写入运行期配置模型键启动脚本默认端口端点算法名SQL 可见是否必选tdtsfmtdtsfm-server.py6061/tdtsfmtdtsfm_1是timemoetimemoe-server.py6062/ds_predicttimemoe-fc是chronoschronos-server.py6063/ds_predict—否moiraimoirai-server.py6064/ds_predict—否timesfmtimesfm-server.py6065/ds_predict—否momentmoment-server.py6066/imputation—否必选模型tdtsfm、timemoe缺失时会直接报错可选模型缺失则跳过加载。对应模型服务脚本位于 tsfmservice 目录。此外配置文件还支持dynamic_model_dir动态模型目录服务运行期间可随时增删、无需重启以及 Windows 专用的waitress_config线程数、通道超时、最大连接数等。六、通过 TDengine CLI 管理 AnodeAnode 的集群注册与生命周期管理通过 TDengine CLItaos完成以下操作均需在已连接 TDengine 集群的客户端上执行。6.1 创建 AnodeCREATE ANODE {node_url}node_url为 Anode 的 IP 地址与端口如192.168.0.1:6035该信息会被注册到 TDengine 集群。一个 Anode 只能注册到一个集群切勿将同一 Anode 重复注册到多个集群否则会导致服务归属混乱。6.2 查看 Anode 列表SHOW ANODES;输出示例taos show anodes; id | url | status | create_time | update_time | 1 | 192.168.0.1:6035 | ready | 2024-11-28 18:44:27.089 | 2024-11-28 18:44:27.089 | Query OK, 1 row(s) in set (0.037205s)该命令返回 Anode 的 ID、FQDN/URL、状态ready表示已就绪以及创建、更新时间。6.3 查看高级分析服务算法清单SHOW ANODES FULL;输出示例taos show anodes full; id | type | algo | 1 | anomaly-detection | grubbs | 1 | anomaly-detection | lof | 1 | anomaly-detection | shesd | 1 | anomaly-detection | ksigma | 1 | anomaly-detection | iqr | 1 | anomaly-detection | sample_ad_model | 1 | forecast | arima | 1 | forecast | holtwinters | 1 | forecast | tdtsfm_1 | 1 | forecast | timemoe-fc | Query OK, 10 row(s) in set (0.028750s)实际清单取决于 Anode 当前加载的模型。常用内置模型/算法如下类型名称说明异常检测grubbs统计模型异常检测lof基于密度的模型异常检测shesd季节性 ESD 模型异常检测ksigma统计模型异常检测iqr统计模型预测arima自回归滑动平均算法预测holtwinters指数平滑算法预测tdtsfm_1TDtsfm v1.0预测timemoe-fcTime-MoE上述算法与模型的源码分别位于 algo/ad 与 algo/fc 目录如grubbs.py、lof.py、ksigma.py、iqr.py、shesd.py、arima.py、holtwinters.py、timemoe.py、tdtsfm对应tdtsfm-server.py等每个算法实现均对应一个可被 SQL 直接调用的服务名。集群侧获取算法清单的过程由mndGetAnodeAlgoList完成mnode 向 Anode 发起检索请求将返回的算法列表按类型分组缓存到SAnodeObj中见 mndAnode.c 的编码逻辑。6.4 刷新算法缓存UPDATE ANODE {anode_id} UPDATE ALL ANODES当 Anode 上新增或卸载了模型、算法清单发生变化时集群内的缓存可能过期此时可执行上述命令强制刷新指定 Anode 或全部 Anode 的算法缓存。6.5 删除 AnodeDROP ANODE {anode_id}注意DROP ANODE只把 Anode 从 TDengine 集群中注销不会停止或卸载节点上的进程。如需停止 Anode请在 Anode 所在机器上执行systemctl stop taosanoded如需彻底卸载则在该机器上运行rmtaosanode命令卸载脚本不会自动清理 Python 虚拟环境需要时请手动删除。七、Windows 服务与模型管理Windows 安装包会注册名为Taosanode的 Windows 服务并提供位于C:\TDengine\taosanode\bin下的管理脚本操作命令启动 Anodestart-taosanode.bat或net start Taosanode停止 Anodestop-taosanode.bat或net stop Taosanode查看 Anode 状态status-taosanode.bat或sc query Taosanode启动单个模型start-model.bat tdtsfm停止单个模型stop-model.bat tdtsfm查看模型状态status-model.batWindows 的配置文件为C:\TDengine\taosanode\cfg\taosanode.config.py与 Linux 的区别在于Web 服务器由 Gunicorn 换为 Waitress线程模型配置见waitress_config日志目录为C:\TDengine\taosanode\log。从 taosanode_service.py 可以看到Windows 下进程管理通过tasklist/taskkill实现并支持在 WinSW 包装下运行时将标准输出重定向到服务日志。八、运维要点小结启动顺序先systemctl start taosanoded拉起 Anode 主服务再按需start-model tdtsfm等手动加载基础模型——模型不随服务自动启动属预期行为注册闭环Anode 进程就绪后在 CLI 中CREATE ANODE ip:6035注册到集群用SHOW ANODES确认statusready用SHOW ANODES FULL确认算法/模型可见模型增删后执行UPDATE ALL ANODES刷新缓存资源调优模型推理耗时较长timeout与keepalive默认 1200 秒内存紧张时可调小max_requests让 worker 定期重启释放内存多核机器可适当提高workers/threads日志排障Gunicorn 访问/错误日志、Anode 应用日志taosanode.app.log与服务管理日志taosanode-service.log均在/var/log/taos/taosanode/下结合systemctl status taosanoded可快速定位启动失败或模型加载异常。通过上述服务管理、模型调度与集群注册三板斧即可完成 TDgpt Anode 从部署到上线、再到日常扩容的全生命周期运维。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表