feat: add watch subcommand (TMQ + polling fallback)

This commit is contained in:
张宗平
2026-06-11 16:12:38 +08:00
parent cdfd77bdcb
commit 7e6915ade6
4 changed files with 198 additions and 0 deletions
+24
View File
@@ -79,6 +79,22 @@ def cmd_e2e(args):
return run_e2e(args)
def cmd_watch(args):
"""watch 子命令:TMQ 准实时监控。"""
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s")
from ts_anomaly_td.tmq_watch import WatchRunner
conn = TDConnection(args.url)
try:
db = args.db or "ts_anomaly"
conn.execute_no_result(f"USE {db}")
runner = WatchRunner(conn, args.stable, window_sec=args.window_sec)
runner.run()
finally:
conn.close()
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
prog="ts-anomaly-td",
@@ -116,6 +132,13 @@ def build_parser() -> argparse.ArgumentParser:
p_e2e.add_argument("--log-dir", default="logs", help="JSON 日志目录 (default: logs)")
p_e2e.add_argument("--url", default="ws://root:taosdata@localhost:6041", help="TDengine WebSocket URL")
# watch (Iter-2)
p_watch = sub.add_parser("watch", help="TMQ 准实时异常监控")
p_watch.add_argument("--stable", required=True, help="supertable 名称")
p_watch.add_argument("--db", default="ts_anomaly", help="数据库名")
p_watch.add_argument("--window-sec", type=int, default=30, help="检测间隔秒数 (default: 30)")
p_watch.add_argument("--url", default="ws://root:taosdata@localhost:6041", help="TDengine WebSocket URL")
return parser
@@ -128,6 +151,7 @@ def main():
"detect-batch": cmd_detect_batch,
"forecast-anomaly": cmd_forecast_anomaly,
"e2e": cmd_e2e,
"watch": cmd_watch,
}
fn = dispatch.get(args.command)