查询接口简述
prometheus并没有提供一个交互式的CLI工具。
当前已知的查询数据的方式有如下几种:
- WEB UI。直接浏览器访问prometheus的服务地址就可以打开的一个WEB界面。
- HTTP API。提供了一系列的POST/GET方法进行数据查询。
- promtool。安装包里的一个工具,可以进行查询,非交互式的。
- 其他类client工具。比如grafana这种。
日常测试使用的话,WEB UI是最方便直观的,能满足99%的查询需求了。但对于一些冷门的查询需求,比如就要查询指定时间范围的数据,或者metadata此类,则HTTP API无疑是功能齐全的。
WEB UI
浏览器访问prometheus的服务地址,打开界面如下,就可以直接进行查询了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
promtool
基本不用,简单介绍下。
## 可以查看使用说明
./promtool --help
## 主要分为check配置文件、query查询、debug、test几个功能。
## 可以通过以下方式查询更多帮助
./promtool query --help
./promtool query instant --help
## 查询举例
./promtool query instant http://99.48.210.225:9090 mysql_binlog_files
./promtool query instant http://99.48.210.225:9090 mysql_binlog_files[1m]
HTTP API
接口这部分对于非开发来说,会有比较多的模糊概念需要理清楚。
常见的HTTP请求方法:
GET:一般用于请求资源。带参数的格式为URL?para1=value1¶2=value2。?来区分URL和参数列表,多个参数用&进行串联。
POST:一般用于提交数据进行处理。可以将提交的数据按照指定格式提交服务器。
PUT: 一般用于传输文件。
DELETE: 一般用于删除站点资源。
prometheus提供的接口中只涉及GET、POST方法。
几个发起HTTP请求的方式:
浏览器:通用,但是查询结果没有格式化展示,对GET操作比较比较友好。
postman: 图形界面,使用简单。
curl: linux命令,功能强大,但命令行界面看起来不美观。
开发client: 各种网络包,比如python的request等。
postman举例
下图是GET方法,选择GET方法,输入URL,输入参数名和参数值,Send请求即可。
下图是POST方法,对于没有文件头要求、认证这部分的站点,请求配置都很简单。
curl举例:
可以使用curl --help查看具体命令说明。
GET请求样例:
curl -X GET http://99.48.210.225:9090/api/v1/query?query=wjf_test_increase
POST请求样例:
## 数据以键值对形式发送
curl -X POST -d "query=wjf_test_increase" http://99.48.210.225:9090/api/v1/query
## 以二进制格式发送文件里的数据
curl -X POST --data-binary @/tmp/wjf_test_data http://99.48.210.225:9091/metrics/job/mysql_monitor_table/
## echo重定向发送数据
echo "query=wjf_test_increase" | curl --data-binary @- http://99.48.210.225:9090/api/v1/query
参数说明:
-X : 指定使用的HTTP方法,默认为GET,所以GET请求也可以不指定-X参数。
-d, --data DATA 以ascii编码格式传输数据
–data-ascii DATA 以ascii编码格式传输数据
–data-binary DATA 以二进制格式传输数据
–data-urlencode DATA 使用URL编码对数据进行处理后传输数据
DATA部分若以@开头,则可以**@filename直接处理文件内容。@-**表示从stdin读取数据。
prometheus提供的接口:
上面的内容介绍了HTTP API接口的使用方法,之后介绍具体接口时,只需要直接套用就行了。
官方大大的资料: https://prometheus.io/docs/prometheus/latest/querying/api/
下面也简要罗列几个:
接口说明 | 接口方法 | URL | 参数 | 备注 |
---|---|---|---|---|
查询瞬时向量 | GET/POST | /api/v1/query | query= <string> : PromQL 表达式。 time=<unix_timestamp> : 可选,指定时间戳。 timeout=<duration> :可选,超时时间 | 区间向量也可以通过这个接口查询 |
查询区间向量 | GET/POST | /api/v1/query_range | query= : PromQL 表达式。 start=<unix_timestamp> : 起始时间戳。 end=<unix_timestamp> : 结束时间戳。 step=<duration float> : 查询时间步长。 timeout=<duration> :可选,超时时间 | 可以指定start/end时间进行区间查询 |
删除向量 | POST/PUT | /api/v1/admin/tsdb/delete_series | 参数具体见官方文档。 | 标记删除 |
清理磁盘 | POST/PUT | /api/v1/admin/tsdb/clean_tombstones | 参数具体见官方文档。 | 真正磁盘删除 |