写点什么

Prometheus HTTP API 查询(七)管理员接口

作者:耳东@Erdong
  • 2021 年 11 月 13 日
  • 本文字数:1513 字

    阅读完需:约 5 分钟

本文已经收录在 Prometheus 合集 你真的会 Prometheus 查询吗?--PromQL 合集 中。


Prometheus 现在有 一些接口是专门给管理员使用的,这些接口默认是不开启的,需要在启动的时候使用 --web.enable-admin-api 来打开,打开以后可以打快照、删除数据。

快照

快照接口可以针对当前的数据创建一个快照,这个创建好的快照会存储在 TSDB 的数据目录下的 snapshots/<datetime>-<rand> ,并且将创建好的目录通过 HTTP 的 response 返回。它可以选择性地跳过只出现在头块中、还没有压缩到磁盘的快照数据。


POST /api/v1/admin/tsdb/snapshotPUT /api/v1/admin/tsdb/snapshot
复制代码


这个接口有一个 URL 参数 skip_head=<bool> ,这个参数是可选的,通过这个参数可以跳过头块中的数据。


$ curl -X POST http://localhost:9090/api/v1/admin/tsdb/snapshot{  "status": "success",  "data": {    "name": "20171210T211224Z-2be650b6d019eb54"  }}
复制代码


通过这个响应我们可以知道快照会存放在 <data-dir>/snapshots/20171210T211224Z-2be650b6d019eb54


这个接口在 v2.1 版本以后才可以使用,在 v2.9 版本以后才支持 PUT 模式。

删除 Series

这个接口会删除时间范围内一系列选择的数据。执行操作以后,实际数据仍然存在于磁盘上,并没有被删除,在以后的压缩中会被清理。如果想要立即清理那么可以通过 Clean Tombstones 来立即删除。


如果接口执行成功,返回的 HTTP 代码是 204 。


POST /api/v1/admin/tsdb/delete_seriesPUT /api/v1/admin/tsdb/delete_series
复制代码


这个接口有三个 URL 参数可以使用。


  • match[]=<series_selector> :选择要删除的 Series 的重复标签匹配器参数。及要删除的指标,这个参数是个必要参数,最少提交一个才可以。

  • start=<rfc3339 | unix_timestamp> : 开始时间戳。缺省是最小的时间值。

  • end=<rfc3339 | unix_timestamp> :结束时间戳。缺省是最大的时间值。


不同时提到开始和结束时间将清除数据库中匹配序列的所有数据。


$ curl -X POST \  -g 'http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]=up&match[]=process_start_time_seconds{job="prometheus"}'
复制代码


这个接口在 v2.1 版本以后才可以使用,在 v2.9 版本以后才支持 PUT 模式。

清理 Tombstones

CleanTombstones 会将要删除的数据从磁盘上删除,并清除现有的 Tombstones 。这可以在删除序列后使用,以释放空间。


POST /api/v1/admin/tsdb/clean_tombstonesPUT /api/v1/admin/tsdb/clean_tombstones
复制代码


这个接口没有参数,也没有 HTTP 的 body 。


$ curl -X POST http://localhost:9090/api/v1/admin/tsdb/clean_tombstones
复制代码


这个接口在 v2.1 版本以后才可以使用,在 v2.9 版本以后才支持 PUT 模式。

健康检查

Prometheus 提供了一个接口,这个接口会在 Prometheus 处于健康状态的时候返回 200 。


GET /-/healthy
复制代码

服务准备检查

Prometheus 提供了一个接口,这个接口会在 Prometheus 处于可以提供服务的时候返回 200 。


GET /-/ready
复制代码

重新加载配置

Prometheus 提供了一个接口,这个接口会在重新加载 Prometheus 的配置文件,这个时候在 Prometheus 数据文件特别大的时候特别有用,TSDB 太大以后重新启动 Prometheus Server 会耗费大量的时间,而重新加载配置会特别快 。


想要使用这个接口需要在启动 Prometheus 的时候使用 --web.enable-lifecycle 参数来打开这个功能。


或者,可以通过向 Prometheus 进程发送 SIGHUP 信号来触发重新加载配置。


PUT  /-/reloadPOST /-/reload
复制代码

退出

这个接口会触发 Prometheus 进行优雅关闭它自己。这个接口默认禁用的,可以通过--web.enable-lifecycle 参数来打开这个功能。


或者,可以通过向 Prometheus 进程发送 SIGTERM 信号来触发优雅的关闭。


PUT  /-/quitPOST /-/quit
复制代码


发布于: 1 小时前阅读数: 4
用户头像

耳东@Erdong

关注

还未添加个人签名 2020.05.24 加入

主要研究分享运维技术,专注于监控、CICD、操作系统、云原生领域,公众号【耳东学堂】,知识星球同名,坚持原创,希望能和大家在运维路上结伴而行 邮箱:erdong@mail.erdong.site

评论

发布
暂无评论
Prometheus HTTP API 查询(七)管理员接口