victoriametrics/vmselectVictoriaMetrics Cluster 是一个分布式时间序列数据库集群解决方案,由三个核心服务组件构成,各组件可独立水平扩展,共同提供高效的时间序列数据写入、存储和查询能力。该集群专为处理大规模时间序列数据设计,适用于需要高可用性、可扩展性和高性能的监控、日志分析等场景。
VictoriaMetrics Cluster 的功能由以下三个独立组件协同实现:
vmstorage 节点进行存储。vmstorage 节点并行获取数据,合并并处理查询结果后返回给客户端。vminsert 的写入请求和 vmselect 的查询请求。VictoriaMetrics Cluster 适用于以下场景:
bashdocker run -d \ --name vmstorage \ -p 8482:8482 \ # HTTP API端口(用于健康检查等) -p 8400:8400 \ # 接收vminsert写入请求的内部端口 -p 8401:8401 \ # 接收vmselect查询请求的内部端口 -v /path/to/vmdata-cluster:/storage \ # 挂载数据目录(宿主机路径需替换为实际路径) victoriametrics/vmstorage:latest \ -storageDataPath=/storage \ # 容器内数据存储路径(需与挂载路径对应) -vminsertAddr=:8400 \ # 监听vminsert请求的地址 -vmselectAddr=:8401 \ # 监听vmselect请求的地址 -retentionPeriod=30d # 数据保留期(可选,默认值可能不同,单位支持d/h/m/s)
bashdocker run -d \ --name vminsert \ -p 8480:8480 \ # 数据接收端口(支持Prometheus、InfluxDB等协议) victoriametrics/vminsert:latest \ -storageNode=vmstorage:8400 # vmstorage节点地址(格式:<主机名或IP>:<vminsertAddr端口>,多节点可重复指定)
bashdocker run -d \ --name vmselect \ -p 8481:8481 \ # 查询端口(支持PromQL等查询语言) victoriametrics/vmselect:latest \ -storageNode=vmstorage:8401 # vmstorage节点地址(格式:<主机名或IP>:<vmselectAddr端口>,多节点可重复指定)
创建 docker-compose.yml 文件统一管理组件:
yamlversion: '3' services: vmstorage: image: victoriametrics/vmstorage:latest container_name: vmstorage ports: - "8482:8482" - "8400:8400" - "8401:8401" volumes: - /path/to/vmdata-cluster:/storage # 替换为宿主机实际数据目录 command: - -storageDataPath=/storage - -vminsertAddr=:8400 - -vmselectAddr=:8401 - -retentionPeriod=30d restart: always vminsert: image: victoriametrics/vminsert:latest container_name: vminsert ports: - "8480:8480" command: - -storageNode=vmstorage:8400 # 多vmstorage节点可添加多个-storageNode参数 depends_on: - vmstorage restart: always vmselect: image: victoriametrics/vmselect:latest container_name: vmselect ports: - "8481:8481" command: - -storageNode=vmstorage:8401 # 注意端口对应vmstorage的vmselectAddr depends_on: - vmstorage restart: always
启动集群:docker-compose up -d
| 参数 | 描述 | 示例值 |
|---|---|---|
-storageDataPath | 数据存储目录路径(容器内路径,需与宿主机挂载目录对应) | /storage |
-retentionPeriod | 数据保留期,支持单位:d(天)、h(小时)、m(分钟)、s(秒) | 30d |
-vminsertAddr | 监听 vminsert 写入请求的地址(格式::端口) | :8400 |
-vmselectAddr | 监听 vmselect 查询请求的地址(格式::端口) | :8401 |
-httpListenAddr | HTTP API 监听地址(用于健康检查、指标暴露),默认 :8482 | :8482 |
| 参数 | 描述 | 示例值 |
|---|---|---|
-storageNode | vmstorage 节点地址,格式为 <主机名或IP>:<vminsertAddr端口>,多节点可重复指定 | vmstorage:8400 或 192.168.1.100:8400 |
-httpListenAddr | 数据接收端口,默认 :8480 | :8480 |
| 参数 | 描述 | 示例值 |
|---|---|---|
-storageNode | vmstorage 节点地址,格式为 <主机名或IP>:<vmselectAddr端口>,多节点可重复指定 | vmstorage:8401 或 192.168.1.100:8401 |
-httpListenAddr | 查询端口,默认 :8481 | :8481 |
使用中遇到问题可通过以下渠道获取支持:
各组件源代码托管于 GitHub:
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务