请教shell脚本的一个问题:我现在要从prometheus里面得到一组数据,使用curl指令,并不能得到相关网页的内容: curl http://172.20.146.145:9090/graph?g0.range_input=1h&g0.expr=histogram_quantile(0.99%2C%20sum(rate(etcd_disk_wal_fsync_duration_seconds_bucket%5B5m%5D))%20by%20(instance%2Cjob%2Cle))&g0.tab=1 问题: [1] 125415 [2] 125416 -bash: g0.expr=histogram_quantile(0.99%2C%20sum(rate(etcd_disk_wal_fsync_duration_seconds_bucket%5B5m%5D))%20by%20(instance%2Cjob%2Cle)): command not found -bash: g0.tab=1: command not found [2]+ Exit 127 g0.expr=histogram_quantile(0.99%2C%20sum(rate(etcd_disk_wal_fsync_duration_seconds_bucket%5B5m%5D))%20by%20(instance%2Cjob%2Cle)) 得不到我要得这些数据:
这个怎么弄呢?麻烦大佬们指导一下,谢谢。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
从您的描述来看,您尝试使用curl
命令从Prometheus获取数据,但似乎没有得到预期的内容。这里有几个可能的原因和解决方法:
Prometheus的API端点:通常,直接通过浏览器或curl
访问Prometheus的图形界面(比如/graph
)并不是获取数据的标准方式。Prometheus提供了一个HTTP API,用于执行查询并获取结果。您应该使用如/api/v1/query
或/api/v1/query_range
这样的端点来获取数据。
认证与权限:如果您的Prometheus服务启用了认证(比如Basic Auth、Token等),则需要在curl
命令中添加相应的认证信息。例如,对于Basic Auth,可以这样使用:
curl -u 'username:password' http://172.20.146.145:9090/api/v1/query?query=<your_query_here>
查询参数:正确的API调用应该包含一个PromQL查询作为参数。例如,如果您想查询过去一小时内up{job="myjob"}
指标的状态,可以这样做:
curl 'http://172.20.146.145:9090/api/v1/query_range?query=up{job="myjob"}&start=$(date -d "1 hour ago" +%s)&end=$(date +%s)&step=15'
这里,start
和end
参数定义了时间范围,step
是采样间隔,而query
就是您的PromQL查询语句。
检查网络与防火墙:确保从运行curl
命令的机器到Prometheus服务器之间网络通畅,没有被防火墙规则阻止。
查看错误信息:如果请求失败,curl
通常会返回一些错误信息或者HTTP状态码,这有助于诊断问题。请仔细查看命令的输出。
综上所述,建议您直接使用Prometheus的API端点,并根据实际情况调整认证、查询参数等,以正确地获取所需的数据。