如何在docker-compose中正确配置VictoriaMetrics的-search.maxUniqueTimeseries参数
VictoriaMetrics时间序列阈值参数配置方案
问题背景
服务运行过程中触发报错:
the number of matching unique timeseries exceeds 300000; either narrow down the search or increase -search.maxUniqueTimeseries
官方要求需将-search.maxUniqueTimeseries参数调整为高于实例实际唯一时间序列数的数值,可通过以下命令统计实际时序数:wget -O- -q 'http://your_victoriametrics_instance:8428/api/v1/series/count' | jq '.data[0]'
配置异常根因
已确认当前使用的镜像不支持通过docker-compose.yml的command字段传递启动参数。
可用配置方案
方案1:通过环境变量传递参数(优先推荐)
VictoriaMetrics所有启动参数都支持转换为VM_前缀的环境变量传递,转换规则为保留参数原名,将开头的-替换为VM_:
- 目标参数
-search.maxUniqueTimeseries=1000000对应的环境变量为VM_search_maxUniqueTimeseries=1000000
docker-compose配置示例:
version: '3.8' services: victoriametrics: image: <你当前使用的VM镜像全称> ports: - "8428:8428" environment: # 按需调整数值为高于实际时序数的大小 - VM_search_maxUniqueTimeseries=1000000 volumes: - ./vm-data:/storage restart: always
修改完成后执行docker-compose up -d重启服务即可。
方案2:自定义镜像固化参数
如果镜像不支持环境变量传参,可基于原镜像制作自定义镜像,直接把参数写入启动入口:
- 新建Dockerfile文件:
FROM <你当前使用的VM镜像全称> # 替换为镜像内实际的VM二进制文件路径,官方镜像默认路径为/victoria-metrics-prod ENTRYPOINT ["/victoria-metrics-prod", "-search.maxUniqueTimeseries=1000000"]
- 修改docker-compose配置使用自定义构建的镜像:
version: '3.8' services: victoriametrics: build: . ports: - "8428:8428" volumes: - ./vm-data:/storage restart: always
- 执行
docker-compose up -d --build重新构建并启动服务。
生效校验
服务启动完成后执行以下命令确认参数已生效:curl http://<你的VM实例地址>:8428/api/v1/status/flags | grep search.maxUniqueTimeseries
返回结果的数值和你配置的一致即为配置生效。
内容的提问来源于stack exchange,提问作者Hassan
相关产品推荐
相关产品推荐

