Prometheus 运维工具 Promtool (二)Query 功能

网友投稿 1050 2022-10-02

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Prometheus 运维工具 Promtool (二)Query 功能

Promtool 在查询方面一个有 4 个子命令,分别用来进行实时查询、范围查询、序列查询和 label 查询,接下来我们依次看一下。实时查询Promtool 的 query instant 子命令允许根据当前时间戳通过命令行直接查询 Prometheus 服务器的相关指标,命令用法如下:promtool query instant [ 按照子命令的使用说明必须提供一个 Prometheus 服务器 URL 作为参数,以及要执行的查询语句,比如像下边这样。[root@Erdong-test ~]# ./promtool query instant 'http://127.0.0.1:9090' 'up == 1'up{instance="172.16.6.97:9100", job="mysql_Host"} => 1 @[1658760087.156]up{instance="172.16.6.98:9100", job="mysql_Host"} => 1 @[1658760087.156]up{instance="172.16.6.98:9104", job="mysql_DB", nodename="Erdong-DB"} => 1 @[1658760087.156]up{instance="172.16.6.76:7002", job="kong"} => 1 @[1658760087.156]这个语句查询了该 Prometheus 实例中 up == 1 这个语句的结果,Prometheus 返回了对应的结果数据。范围查询Promtool 的 query range 子命令允许在指定的时间范围内显示对应的查询结果。因此,在查询语句中需要提供 Prometheus服务器 URL,并且在查询语句中我们必须提供开始和结束的时间戳,这个时间戳需要是 unix 格式 。命令格式如下 :promtool  query range [ 接下来使用 Linux 的 date 命令来定义开始和结束时间戳,生成五分钟前的 unix 格式时间戳和现在的另一个时间戳。我们还可以使用 --step 参数指定查询的步长,或者叫查询的时间间隔,用来表示间隔多久输出一个数据点,在下边的查询语句中,它是一分钟。最后得到一个类似下面的查询语句:[root@Erdong-test ~]# ./promtool query range --start=$(date -d '5minutes ago' +'%s') --end=$(date -d 'now' +'%s') --step=1m 'http://127.0.0.1:9090' 'up == 1'up{instance="172.16.6.97:9100", job="mysql_Host"} =>1 @[1658760631]1 @[1658760691]1 @[1658760751]1 @[1658760811]1 @[1658760871]1 @[1658760931]up{instance="172.16.6.98:9100", job="mysql_Host"} =>1 @[1658760631]1 @[1658760691]1 @[1658760751]1 @[1658760811]1 @[1658760871]1 @[1658760931]up{instance="172.16.8.76:7002", job="kong"} =>1 @[1658760631]1 @[1658760691]1 @[1658760751]1 @[1658760811]1 @[1658760871]1 @[1658760931]up{instance="172.16.6.98:9104", job="mysql_DB", nodename="Erdong-DB"} =>1 @[1658760631]1 @[1658760691]1 @[1658760751]1 @[1658760811]1 @[1658760871]1 @[1658760931]这就是我们得到的查询结果。显示所有 up == 1 的指标,并且按照每分钟一个点的频率来显示最近 5 分钟的数据。序列查询

Promtool 的 query series 子命令可以搜索与一组指标名称和标签匹配的所有时间序列。以下是使用方法:promtool query series --match=MATCH [按照子命令的使用说明必须提供一个 Prometheus 服务器 URL 作为参数,以及要查询的 label 或者 metric,比如像下边这样。[root@Erdong-test ~]# ./promtool query series 'http://127.0.0.1:9090' --match='up' --match='go_info{job="prometheus"}'{__name__="go_info", instance="172.16.6.97:9100", job="mysql_Host", version="go1.16.7"}{__name__="go_info", instance="172.16.6.98:9100", job="mysql_Host", version="go1.16.7"}{__name__="go_info", instance="172.16.6.99:9100", job="mysql_Host", version="go1.17.3"}{__name__="up", instance="172.16.6.97:9100", job="mysql_Host"}{__name__="up", instance="172.16.6.98:9100", job="mysql_Host"}{__name__="up", instance="172.16.6.99:9100", job="mysql_Host"}{__name__="up", instance="172.16.6.97:9104", job="mysql_DB", nodename="Erdong-DB"}{__name__="up", instance="172.16.8.76:7002", job="kong"}Prometheus 实例会按照参数返回数据结果。label 查询Promtool 的 query labels 子命令可以用来查询 label 对应的值,可以跨所有可用的指标搜索特定的 label ,并返回对应的所有的值,命令使用方法如下:promtool query labels [ 接着我们看一下如何执行这个命令。[root@Erdong-test ~]# ./promtool query labels 'http://127.0.0.1:9090' 'instance'172.16.6.97:9100172.16.6.97:9104172.16.6.98:9100172.16.6.99:9100172.16.8.76:7002命令执行后返回了 instance 这个 label 的所有值。总结当前 Promtool 工具的 2.37.0 版本只支持 4 个查询功能。后续版本支持查询更多内容的时候我们再看。

---   End   ---

作者:耳东,运维攻城狮以及技术爱好者。

上一篇:k8s自动化运维二
下一篇:【分享】灵魂拷问:运维的本质是什么?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~