如何通过Grafana API创建PagerDuty联系点?报错排查
问题描述
尝试通过Grafana API创建PagerDuty联系点,参考官方文档将YAML配置转为JSON发起请求,收到错误:
{"message":"invalid object specification: type should not be an empty string","traceID":"00000000000000000000000000000000"}
使用的API请求代码(已替换虚拟密钥):
curl -X POST --insecure -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" -d '{ "contactPoints": [ { "orgId": 1, "name": "test1", "receivers": [ { "uid": "test1", "type": "pagerduty", "settings": { "integrationKey": "XXXXXXXXXXXXXXXX", "severity": "critical", "class": "ping failure", "component": "Grafana", "group": "app-stack", "summary": "{{ `{{ template \"default.message\" . }}` }}" } } ] } ] }, "overwrite": false }' http://XXXXXXXXXXXXXXXX.us-east-2.elb.amazonaws.com/api/v1/provisioning/contact-points
问题原因
请求的JSON格式存在语法错误:contactPoints数组的闭合大括号后多写了一个}和逗号,导致整个JSON结构被破坏。Grafana无法正确解析请求体,进而误判type字段为空。
修复方案
修正JSON结构,将contactPoints和overwrite放在同一个顶层对象内,正确的curl命令如下:
curl -X POST --insecure -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" -d '{ "contactPoints": [ { "orgId": 1, "name": "test1", "receivers": [ { "uid": "test1", "type": "pagerduty", "settings": { "integrationKey": "XXXXXXXXXXXXXXXX", "severity": "critical", "class": "ping failure", "component": "Grafana", "group": "app-stack", "summary": "{{ `{{ template \"default.message\" . }}` }}" } } ] } ], "overwrite": false }' http://XXXXXXXXXXXXXXXX.us-east-2.elb.amazonaws.com/api/v1/provisioning/contact-points
额外验证点
- 确认
Authorization的Bearer令牌拥有Grafana的编辑权限 - 确认PagerDuty的集成密钥有效且对应正确的服务
- 检查Grafana版本是否支持该API端点(v9+版本支持
/api/v1/provisioning/contact-points)
内容的提问来源于stack exchange,提问作者Jor-El
相关产品推荐
相关产品推荐

