sra*_*rth 4 curl node.js prometheus
使用这个 [ https://github.com/prometheus/pushgateway][1]我们试图将一个指标推送到 prometheus。它似乎需要非常特定格式的数据。
在做他们的示例卷曲时它工作正常
echo "some_metric 3.14" | curl --data-binary @- http://pushgateway.example.org:9091/metrics/job/some_job
Run Code Online (Sandbox Code Playgroud)
然而,使用 -d 选项执行 curl 失败,因为缺少行/文件结尾
curl -d 'some_metric 3.15\n' http://pushgateway.example.org:9091/metrics/job/some_job
Run Code Online (Sandbox Code Playgroud)
我试图了解行为的差异,因为我相信两者都在执行 POST 命令,我需要通过“request.post”方法在 node.js 中复制这个 --data-binary 选项,但我似乎只能复制curl -d 选项不起作用。
关于 -d 和 --data-binary 之间的区别以及在 node.js 中执行与 --data-binary 等效的提示的任何建议?
从 curl 手册页:
--data-ascii
(HTTP) 这只是 -d、--data 的别名。
--数据二进制
(HTTP) 这完全按照指定的方式发布数据,没有任何额外的处理。
如果数据以字母@ 开头,则其余部分应该是文件名。数据以与 -d、--data 类似的方式发布 >,除了换行符和回车符 > > 保留并且永远不会进行转换。
像 -d, --data 发送到服务器的默认内容类型是 application/x-www-form-> > urlencoded。如果您希望服务器将数据视为任意二进制数据 > 然后将内容类型设置为八位字节流:-H "Content-Type: application/octet-stream"。
如果多次使用此选项,则第一个选项之后的选项将按照 -d、--data 中的描述添加数据。
使用@-将使 curl 从stdin读取文件名。
因此,基本上在您的第一个变体中,您发送了一个名为“some_metric 3.14”的二进制文件。在第二个中,您发送一个 ascii 字符串“some_metric 3.15\n”。
如果您希望 curl 在发送前去除新行,请使用--data-ascii或-d选项:
echo "some_metric 3.14" | curl -d @- http://pushgateway.example.org:9091/metrics/job/some_job
| 归档时间: |
|
| 查看次数: |
12375 次 |
| 最近记录: |