通过 HTTP 发布时没有自定义指标
No custom metrics when posting by HTTP
这方面的文档似乎非常有限。我正在寻找通过 HTTP post 自定义指标(实际上来自物联网微控制器)。
根据 this page the appropriate endpoint 是 POST https://api.datadoghq.com/api/v1/series?api_key=xyz
,尽管这似乎更适合 post 处理大量时间序列数据而不是针对单个测量。无论如何,我已经 post 以各种方式(包括该页面上给出的示例 JSON)和接收回 HTTP 202
s,这让我相信数据正在下沉某处。
但是,我帐户的 Metrics Explorer 部分没有显示任何内容。
任何人都可以提供一些方向吗?
根据所提供的信息,我看不出问题出在哪里。您能否分享用于提交的完整代码(没有 API 键)。
如果另一个例子可以帮助,这是我在 Python 中使用的例子:
import json
import requests
import time
def submit_timeseries_point(config, metricname, hostname, value, tags, type = "gauge"):
timestamp = time.time()
payload = { "series": [{
"metric": metricname,
"points": [[timestamp, value]],
"type": type,
"host": hostname,
"tags": tags
}]}
headers = {'content-type': 'application/json'}
url = '{}api/v1/series?api_key={}'.format(config["api_host"], config["api_key"])
r = requests.post(url, data=json.dumps(payload), headers=headers)
jsonResponse = r.json()
然后我通常会检查指标是否出现在指标摘要页面中。
在撰写本文时,文档有误。
当前提供的 cURL 示例是:
## Dynamic Points
# Post time-series data that can be graphed on Datadog’s dashboards.
# Template variables
export NOW="$(date +%s)"
# Curl command
curl -X POST "https://api.datadoghq.com/api/v1/series" \
-H "Content-Type: text/json" \
-H "DD-API-KEY: ${DD_API_KEY}" \
-d @- << EOF
{
"series": [
{
"metric": "system.load.1",
"points": [
[
"${NOW}",
"1234.5"
]
]
}
]
}
EOF
API return202 正常,但未创建自定义指标。
points
键需要是tuple(number, number)的数组,例子中是tuple(string, string)。
将其更改为:
"points": [
[
${NOW},
1234.5
]
为我解决了这个问题。
我已经就文档不正确联系了他们的支持,事实上 API 端点应该 return 400 用于无效的示例负载。
这方面的文档似乎非常有限。我正在寻找通过 HTTP post 自定义指标(实际上来自物联网微控制器)。
根据 this page the appropriate endpoint 是 POST https://api.datadoghq.com/api/v1/series?api_key=xyz
,尽管这似乎更适合 post 处理大量时间序列数据而不是针对单个测量。无论如何,我已经 post 以各种方式(包括该页面上给出的示例 JSON)和接收回 HTTP 202
s,这让我相信数据正在下沉某处。
但是,我帐户的 Metrics Explorer 部分没有显示任何内容。
任何人都可以提供一些方向吗?
根据所提供的信息,我看不出问题出在哪里。您能否分享用于提交的完整代码(没有 API 键)。
如果另一个例子可以帮助,这是我在 Python 中使用的例子:
import json
import requests
import time
def submit_timeseries_point(config, metricname, hostname, value, tags, type = "gauge"):
timestamp = time.time()
payload = { "series": [{
"metric": metricname,
"points": [[timestamp, value]],
"type": type,
"host": hostname,
"tags": tags
}]}
headers = {'content-type': 'application/json'}
url = '{}api/v1/series?api_key={}'.format(config["api_host"], config["api_key"])
r = requests.post(url, data=json.dumps(payload), headers=headers)
jsonResponse = r.json()
然后我通常会检查指标是否出现在指标摘要页面中。
在撰写本文时,文档有误。
当前提供的 cURL 示例是:
## Dynamic Points
# Post time-series data that can be graphed on Datadog’s dashboards.
# Template variables
export NOW="$(date +%s)"
# Curl command
curl -X POST "https://api.datadoghq.com/api/v1/series" \
-H "Content-Type: text/json" \
-H "DD-API-KEY: ${DD_API_KEY}" \
-d @- << EOF
{
"series": [
{
"metric": "system.load.1",
"points": [
[
"${NOW}",
"1234.5"
]
]
}
]
}
EOF
API return202 正常,但未创建自定义指标。
points
键需要是tuple(number, number)的数组,例子中是tuple(string, string)。
将其更改为:
"points": [
[
${NOW},
1234.5
]
为我解决了这个问题。
我已经就文档不正确联系了他们的支持,事实上 API 端点应该 return 400 用于无效的示例负载。