开发者社区 问答 正文

shell脚本curl使用请教

请教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)) 得不到我要得这些数据: image.png

这个怎么弄呢?麻烦大佬们指导一下,谢谢。

展开
收起
游客cuwvk7gqqfura 2021-04-07 09:58:51 614 分享 版权
阿里云 AI 助理回答

从您的描述来看,您尝试使用curl命令从Prometheus获取数据,但似乎没有得到预期的内容。这里有几个可能的原因和解决方法:

  1. Prometheus的API端点:通常,直接通过浏览器或curl访问Prometheus的图形界面(比如/graph)并不是获取数据的标准方式。Prometheus提供了一个HTTP API,用于执行查询并获取结果。您应该使用如/api/v1/query/api/v1/query_range这样的端点来获取数据。

  2. 认证与权限:如果您的Prometheus服务启用了认证(比如Basic Auth、Token等),则需要在curl命令中添加相应的认证信息。例如,对于Basic Auth,可以这样使用:

    curl -u 'username:password' http://172.20.146.145:9090/api/v1/query?query=<your_query_here>
    
  3. 查询参数:正确的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'
    

    这里,startend参数定义了时间范围,step是采样间隔,而query就是您的PromQL查询语句。

  4. 检查网络与防火墙:确保从运行curl命令的机器到Prometheus服务器之间网络通畅,没有被防火墙规则阻止。

  5. 查看错误信息:如果请求失败,curl通常会返回一些错误信息或者HTTP状态码,这有助于诊断问题。请仔细查看命令的输出。

综上所述,建议您直接使用Prometheus的API端点,并根据实际情况调整认证、查询参数等,以正确地获取所需的数据。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答