ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

VictoriaMetrics vmanomaly Server 组件完全指南:REST API、Web UI、并发控制与自动调优

2026/9/13 15:32:30 拓冰建站 浏览量
VictoriaMetrics vmanomaly Server 组件完全指南:REST API、Web UI、并发控制与自动调优 VictoriaMetrics vmanomaly Server 组件完全指南REST API、Web UI、并发控制与自动调优【免费下载链接】VictoriaMetricsVictoriaMetrics: fast, cost-effective monitoring solution and time series database项目地址: https://gitcode.com/GitHub_Trending/vi/VictoriaMetricsVictoriaMetrics Anomaly Detectionvmanomaly是 VictoriaMetrics 生态中负责时序数据异常检测的服务其server组件是该服务对外暴露能力的核心门户它承载 REST API如/metrics指标端点、Web UI/vmui/以及面向 UI、MCP 和自动化工作流的时序分析与自动调优 API。本文以官方组件文档 docs/anomaly-detection/components/server.md 为主体结合仓库内的完整配置示例与相关组件文档系统讲解server段的全部配置参数、访问方式、自监控集成以及 v1.30.0 起引入的时序特征分析与共享异步自动调优 API帮助你从零搭建并调优vmanomaly的对外服务层。Server 组件在 vmanomaly 中的角色vmanomaly由多个可配置组件构成负责拉取数据的 Reader、执行检测的 Model、调度执行时机的 Scheduler、写出结果的 Writer以及可选的 Monitoring、Settings 与 Server 段。其中 Server 组件配置段说明负责提供 REST API 端点例如/metrics托管异常检测的 Web UI/vmui/当在配置中设置了 Server 段时它还同时充当指标发布端点供 VictoriaMetrics Agent 或其他 Prometheus 兼容抓取器采集 self-monitoring metrics——这种情况下无需再单独配置monitoring.pull从 v1.30.0 起额外暴露面向 UI、MCP 与自动化工作流的时序分析timeseries characteristics与共享异步自动调优autotuneAPI。从 components 总览 的示例配置看server是可选段但一旦启用port、path_prefix、max_concurrent_tasks等参数就直接决定 UI 与 API 的可用性和承载能力。Server 段全部参数详解所有参数均配置在 vmanomaly 配置文件的server:段下各参数及其默认值如下参数默认值说明addr0.0.0.0查询服务监听绑定的 IP 地址port8490查询服务监听端口path_prefix无可选所有 HTTP 路由的统一 URL 前缀例如设为my-app或/my-app后路由将变为vmanomaly-host:port/my-app/...ui_default_state无可选/vmui/打开时预置的 UI 状态片段。必须做 URL 编码且以#/?开头如#/?paramvaluemax_concurrent_tasks2后端并行处理的异常检测任务数上限正整数。超过上限的多余任务会被取消uvicorn_config{log_level: warning}Uvicorn 服务器配置字典用于控制底层 ASGI 服务器的日志级别等行为use_reader_connection_settingsfalse自 v1.29.2 起可用设为true时UI 在连接数据源时会复用 Reader 配置中的连接设置如凭据、TLS 等从而无需在 UI 与数据源前再架设vmauth即可访问受保护数据源addr 与 port监听地址与端口addr决定服务绑定的网卡port决定对外端口。默认监听0.0.0.0:8490这意味着容器内外如 compose 编排示例 中ports: 8490:8490均可通过 8490 端口访问 UI 与 API。需要说明的是monitoring.pull段的默认端口是8080与server段的8490相互独立——如果同时启用两者它们各自监听不同端口这点在排查“指标到底暴露在哪个端口”时很容易混淆。path_prefix统一路由前缀path_prefix为所有 HTTP 路由增加统一前缀适合将vmanomaly部署在反向代理子路径下例如/vmanomaly。设path_prefix: /vmanomaly后UI 地址变为vmanomaly-host:8490/vmanomaly/vmui//metrics变为vmanomaly-host:8490/vmanomaly/metrics。前缀可带也可不带前导斜杠my-app与/my-app等价便于与代理配置保持一致。max_concurrent_tasks并发任务上限该参数限制后端同时处理的异常检测任务例如对查询结果执行检测的数量防止多个用户同时操作 UI 时压垮服务。默认值为2超过上限的多余任务会被取消。在 UI 文档的资源优化建议 中官方给出的典型调优示例为server: # Port for the UI server (default: 8490) port: 8490 # Limit on concurrent tasks to manage UI load (default: 2) max_concurrent_tasks: 2同时该文档也指出max_concurrent_tasks限制任务数量而settings.n_workers控制单个任务内部的并行度二者配合使用才能合理分配资源——例如快速实验场景可提高n_workers多人共享 UI 场景则应调低max_concurrent_tasks以保护后端。uvicorn_configUvicorn 服务器配置vmanomaly基于 Python 的 Uvicorn ASGI 服务器对外提供 HTTP 服务uvicorn_config是一个透传给 Uvicorn 的配置字典默认值为{log_level: warning}。常用做法是通过它调整访问日志与错误日志的详细程度例如uvicorn_config: log_level: warning需要更详细的请求日志时可改为info或debug注意会显著增加日志量。ui_default_state预置 UI 默认状态自 v1.28.5 起可以通过 URL 编码的ui_default_state预配置/vmui/打开时的默认状态模型设置、时间范围、查询等让用户打开即直达指定视图适合内部团队分享视图或快速实验。该值必须 URL 编码且以#/?开头例如ui_default_state: #/?anomaly_threshold1.0anomaly_consecutivetruefit_window3d访问http://vmanomaly-host:port/vmui/后UI 会自动带上anomaly_threshold1.0、连续异常模式开启、fit_window3d等预置状态详见 UI 文档 Default State 一节。如何从当前 UI 状态构造出这样的 URL在 UI 的 URL Sharing 功能中复制状态 URL 即可例如 UI.md 中给出的完整示例 URL 就包含anomaly_threshold、fit_window、g0.range_input、model_config等大量编码后的参数。需要注意默认状态是静态的修改后需要重启服务或启用--watch热加载才会生效。use_reader_connection_settings复用 Reader 连接设置自 v1.29.2 起可用。默认情况下UI 前端直接连接数据源时无法访问需要认证BasicAuth、Bearer Token或 TLS 校验的数据源常规解法是在 UI 与数据源之间架设vmauth。开启该参数后UI 在向后端发起数据请求时会复用 Reader 段 中的datasource_url、user/password或bearer_token、verify_tls等连接设置从而省去vmauth这一中间层。完整示例配置以下是 server.md 提供的完整配置示例涵盖了上述全部参数以及与 Reader 段的联动server: addr: 0.0.0.0 port: 8490 path_prefix: /vmanomaly # optional path prefix for all HTTP routes # see https://docs.victoriametrics.com/anomaly-detection/ui/#default-state section for details on constructing the value from UI state ui_default_state: #/?anomaly_threshold1.0anomaly_consecutivetruefit_window3d # optional default UI state opened on /vmui/ max_concurrent_tasks: 4 # maximum number of concurrent anomaly detection tasks processed by backend uvicorn_config: # optional Uvicorn server configuration log_level: warning use_reader_connection_settings: true # if set to true, UI will use connection settings from reader configuration below when connecting to data sources, allowing it to connect with the same credentials, TLS settings, etc. without requiring having vmauth in front of both UI and data sources. # other vmanomaly configuration sections, like reader, scheduler, models, etc. reader: datasource_url: %{DS_URL} user: %{DS_USER} password: %{DS_PASSWORD} # or # bearer_token: %{DS_BEARER_TOKEN} verify_tls: false示例中%{DS_URL}、%{DS_USER}这类占位符是 vmanomaly 自 v1.25.0 起支持的环境变量引用语法配置文件中可直接用%{ENV_NAME}引用环境变量便于把 API Key、数据库凭据等敏感信息移出配置文件。如果引用的环境变量未设置或拼写有误占位符不会被替换可能引发配置校验失败或端点探测错误部署前务必确认相关环境变量已就绪。此外仓库 components 总览 中的示例还展示了简化写法use_reader_connection_settings: True布尔值大小写不敏感且将server段与其他段settings、schedulers、models、reader、writer、monitoring编排在同一个配置文件中。热加载对 Server 配置的影响启用--watch后vmanomaly 支持配置热加载详见 components 总览的 Hot reload 一节server段中的参数变更如path_prefix、ui_default_state、max_concurrent_tasks可以在不重启进程的情况下自动生效。其机制要点自 v1.29.5 起文件系统事件触发的热加载已弃用改为按-configCheckInterval默认30s进行内容轮询规避 Kubernetes ConfigMap symlink 轮换等场景下事件投递不可靠的问题检测到内容变化后服务会重建全局配置并重新初始化各组件vmanomaly_config_reloads_total指标以statussuccess/statusfailure记录结果若重载失败上一次有效配置继续生效服务保持稳定运行直至配置问题修复后成功重载启动时可加--dryRun参数对配置文件做解析与 schema 校验不启动服务、无需 license上线前建议先跑一遍。在分片sharded部署场景中每次全局配置变更都会重新计算当前分片的任务分配而分片拓扑分片数、成员索引、副本因子、分配策略由进程启动时的环境变量决定变更需要编排层面的 rollout 或进程重启。访问 ServerUI 与 REST API 端点以上述配置启动vmanomaly后Web UI访问http://localhost:8490/vmanomaly/vmui/若未设置path_prefix则为http://localhost:8490/vmui/。UI 用于交互式配置模型、查看检测结果、导出生产级 YAML 配置在模型配置面板的 YAML Tab 或 Show Config → Download 获取详见 UI 文档 YAML Configuration 一节REST API例如/metrics端点位于http://localhost:8490/vmanomaly/metrics未设前缀则为http://localhost:8490/metrics。该端点暴露 vmanomaly 自身运行指标vmanomaly_*前缀供 VictoriaMetrics Agent 等 Prometheus 兼容抓取器采集OpenAPI 文档运行中的实例在/docs端点提供当前版本的 OpenAPI schema可据此探查各 API 的请求/响应结构。在 docker 集成示例 中vmanomaly 服务以ports: 8490:8490暴露端口配置卷挂载./vmanomaly_config.yml:/config.yaml命令为/config.yaml --licenseFile/license可作为本地复现与验证 UI/API 访问方式的参考。Server 作为自监控指标端点设置server段后vmanomaly自身即成为指标发布端点Prometheus 兼容的抓取器直接抓取/metrics即可获得 self-monitoring metrics无需再配置monitoring.pull。这对需要统一从服务端口抓取指标的场景特别方便。若选择走monitoring段的 push/pull 模型则需注意端口区分monitoring.pull默认端口为8080与server段的8490是两套独立的监听端点。push 模式下指标默认仅在fit/infer/fit_infer等阶段完成后推送可通过push_frequency默认15m增加周期性推送避免低频调度下指标陈旧。时序分析与自动调优 APIv1.30.0自 v1.30.0 起server 组件额外暴露一组有界bounded端点供 UI、MCPModel Context Protocol与自动化工作流使用方法与路径作用GET /api/v1/timeseries/characteristics对给定查询采样并汇总趋势、日历季节性、变点changepoints、数据缺口、间歇性或尖峰行为等特征。可用limit默认100限制采样的序列数并传入生产环境的step与时区POST /api/v1/autotune/tasks启动共享模型的异步调优任务。请求体包含查询、候选模型类tuned_class_name、期望异常占比anomaly_percentage、数据源设置及优化参数GET /api/v1/autotune/tasks/{task_id}返回任务进度任务完成时返回具体的建议modelConfigDELETE /api/v1/autotune/tasks/{task_id}协作式取消尚未完成的任务自 v1.30.1 起季节性分析在采样点相对整 step 边界有偏移时仍会保留原始时间戳网格避免因时间戳在配置采样区间内偏移而漏检每日/每周模式。推荐的共享异步自动调优工作流该工作流让 Agent、UI 或外部自动化在不向生产配置添加auto包装器的情况下对一个有界查询结果样本调优共享配置详见 models 文档 Shared asynchronous autotune workflow 一节用GET /api/v1/timeseries/characteristics检查查询特征识别趋势、日历季节性、变点、缺口与间歇性行为用POST /api/v1/autotune/tasks启动任务提交实际查询、候选模型类、与生产一致的查询step以及有界的limit轮询GET /api/v1/autotune/tasks/{task_id}直至status为done对不必要的任务用DELETE取消校验并部署result_data.data.modelConfig——即所选模型类的具体配置。以在线模型如temporal_envelope为例models.md 给出的请求体形如{ query: sum(rate(http_requests_total[5m])) by (service), tuned_class_name: temporal_envelope, anomaly_percentage: 0.01, step: 5m, limit: 100, use_profile_hints: true, optimization_params: { exact: true, n_splits: 3, n_trials: 64, timeout: 60, optimize_complexity: true }, frozen_params: { holidays: {countries: [US], group: true} } }几点实现语义值得注意anomaly_percentage被视为告警量约束而非每个验证折fold都必须达成的目标frozen_params用于固定模型特有的、不应参与搜索的上下文参数如已配置的节假日、多变量groupby嵌套字典会递归合并对在线模型exact: true通常在“生产推理是因果式predict 后立即用新数据更新状态”时能给出最具代表性的选择自动调优有明确限制不能作用于自定义模型custom model也不能对自身递归调优tuned_class_name不得为model.auto.AutoTunedModel。实用调优建议与注意事项并发与负载多人共用 UI 时调低max_concurrent_tasks快速实验场景可配合settings.n_workers提升单任务并行度注意n_workers 0表示“使用可用 CPU 核数”且这些 worker 会与生产检测任务共享资源见 UI.md 资源优化一节。连接凭据数据源需要认证时优先开启use_reader_connection_settings: true复用 Reader 凭据省去额外的vmauth部署敏感值用%{ENV_VAR}占位符注入。配置变更ui_default_state等静态状态变更需要重启或--watch热加载热加载失败时旧配置继续生效可结合--dryRun在发布前校验配置。端口规划牢记server段UI/API默认 8490与monitoring.pull默认 8080是两套监听端点抓取自监控指标前先确认目标端口与路径前缀。API 探测运行实例的/docs端点提供 OpenAPI schema对接 UI、MCP 或自动化脚本前可先在此核对当前版本的请求/响应结构。通过合理配置server段你可以让vmanomaly同时胜任“交互式异常检测工作台”UI 自动调优 API与“自监控指标源”/metrics两个角色并安全地接入需要认证的数据源是搭建可观测性告警链路时不可或缺的一环。【免费下载链接】VictoriaMetricsVictoriaMetrics: fast, cost-effective monitoring solution and time series database项目地址: https://gitcode.com/GitHub_Trending/vi/VictoriaMetrics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考