使用此[https://github.com/prometheus/pushgateway][1],我们试图将一个指标推向普罗米修斯。似乎要求数据采用非常特定的格式。
进行示例
卷曲时效果很好echo "some_metric 3.14" | curl --data-binary @- http://pushgateway.example.org:9091/metrics/job/some_job
使用-d选项进行卷曲操作会失败,因为缺少行/文件结尾
curl -d 'some_metric 3.15\n' http://pushgateway.example.org:9091/metrics/job/some_job
我试图了解行为上的差异,因为我相信两者都在执行POST命令,因此我需要通过“ request.post”方法在node.js中复制此--data-binary选项,但我似乎只是能够复制curl -d选项不起作用。
关于-d和--data-binary之间有什么区别的提示的任何建议,以及如何在node.js中执行--data-binary的等效操作?
答案 0 :(得分:1)
在curl手册页中:
-数据关联
(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”。
如果要卷曲在发送前去除新行,请使用-data-ascii 或 -d 选项:
echo "some_metric 3.14" | curl -d @- http://pushgateway.example.org:9091/metrics/job/some_job