最近在看 Prometheus 的源代码,发现它自带了优雅的关闭方式,这和我以前博文讲到的热更新十分相似。
如何优雅关闭
-
使用 kill 命令
因为 Prometheus 是一个 Unix 二进制程序,我们可以向 Prometheus 进程发送 SIGTERM
关闭信号。
-
使用
pgrep-f prometheus
找到运行的 Prometheus 进程号 -
使用
kill-TERM1234
来关闭
PS: 这里 1234
指进程号。
-
使用 HTTP 接口
Prometheus 提供了 HTTP 关闭接口,但在使用之前,需要通过 --web.enable-lifecycle
参数开启 lifecycle
功能,然后你就可以使用 HTTP 请求来关闭程序了,例如:
curl -X POST http://localhost:9090/-/quit
此时 HTTP 接口会返回:
Requesting termination... Goodbye!
优雅关闭做了什么
当我们使用以上两种方法来关闭 Prometheus 的时候,在它的 log 中可以看到如下信息:
level=warn ts=2018-06-26T03:37:35.209100753Z ca