Terraform创建DataDog监控报错:公式或变量解析失败,请求排查
Terraform创建DataDog监控时400错误排查
问题场景
我尝试通过Terraform创建DataDog监控,执行terraform plan时收到400错误请求:
400 Bad Request: {"errors":["Invalid formula or variable(s): unable to parse 100 * (({{query_400_499_status}} / {{query_html_status}}))").by("host "]}
对应的Terraform资源代码:
resource "datadog_monitor" "percent_400_499_status_monitor" { query = "formula(\"100 * ((query_400_499_status / query_html_status))\").by(\"host\").last(\"30m\") >= 10" }
请问该datadog_monitor中的查询语句存在什么问题?
问题分析与修复
你的查询语句有两个关键问题:
- 公式多余括号导致解析失败:公式里的
((query_400_499_status / query_html_status))多嵌套了一层括号,DataDog的表达式解析器无法识别这种冗余结构,直接抛出语法错误。 - 分组维度存在多余空格:错误信息里显示
.by("host "),说明你的代码中by("host")的字符串带了多余空格,导致DataDog无法识别这个标签维度。
修正后的代码如下:
resource "datadog_monitor" "percent_400_499_status_monitor" { query = "formula(\"100 * (query_400_499_status / query_html_status)\").by(\"host\").last(\"30m\") >= 10" }
修正说明:
- 把公式里的
((...))简化为(...),去掉多余的括号层级 - 确保
by("host")中的字符串没有任何多余空格,保持"host"的准确性
这样修改后,DataDog就能正常解析查询语句,解决400错误问题。
内容的提问来源于stack exchange,提问作者dorriz
相关产品推荐
相关产品推荐

