You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

vmalert通过API加载JSON规则时'malformed character constant'报错咨询

问题原因及解决办法

报错原因

出现vmalert malformed character constant '%.2f'报错,核心是JSON格式规则中PromQL表达式的字符串转义处理不当。通过API传递JSON格式的vmalert规则时,若printf的格式化参数写法不符合JSON字符串规范,会导致vmalert解析PromQL时将%.2f识别为非法字符常量。

解决步骤

  1. 修正JSON表达式写法
    在JSON规则的expr字段中,确保PromQL表达式用双引号包裹,表达式内部的格式化字符串使用单引号,避免转义冲突。同时将格式化符改为%.3f以满足保留3位小数的需求,正确示例:

    {
      "groups": [
        {
          "name": "metric-round-group",
          "rules": [
            {
              "record": "your_metric:rounded_3d",
              "expr": "printf('%.3f', sum(your_target_metric))",
              "labels": {}
            }
          ]
        }
      ]
    }
    
  2. 排查转义错误
    避免对%进行多余转义(比如错误写成\\%.3f),也不要在表达式内嵌套双引号(比如printf("%.3f", ...)),保证JSON结构合法,表达式内部字符串边界清晰。

  3. 先验证PromQL合法性
    先在VictoriaMetrics查询界面单独测试printf('%.3f', sum(your_target_metric))表达式,确认能正常返回结果后,再将其放入JSON规则通过API提交,排除PromQL本身的写法问题。

内容的提问来源于stack exchange,提问作者Jhonathan Mizrahi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 05:52:37