/healthz 命名的由来

背景

在 Kubernetes 的生态中,习惯使用 /healthz 作为健康检查的接口。例如,下面为 kubernetes 官方文档中配置存活探针和启动探针的配置文件,将探活的接口命名为 /healthz。与在平时实践的探活接口命名有些不同,一般我们将探活接口命名为 /health/whoami 等。

ports:
- name: liveness-port
  containerPort: 8080
  hostPort: 8080

livenessProbe:
  httpGet:
    path: /healthz
    port: liveness-port
  failureThreshold: 1
  periodSeconds: 10

startupProbe:
  httpGet:
    path: /healthz
    port: liveness-port
  failureThreshold: 30
  periodSeconds: 10

解答

/healthz 的命名来自谷歌内部的实践,这样命名的原因是为了避免与应用程序已有的状态接口产生冲突。

It historically comes from Google’s internal practices. They're called "z-pages".

The reason it ends with z is to reduce collisions with actual application endpoints with the same name (like /status). See this talk for more: https://vimeo.com/173610242

Similar endpoints (at least inside Google) are /varz, /statusz, /rpcz. Services developed at Google automatically get these endpoints to export their health and metrics and there are tools that collect the exposed metrics/statuses from all the deployed services.

Open source tools like Prometheus implement this pattern (since original authors of Prometheus are also ex-Googlers) by coming to a well-known endpoint to collect metrics from your application. Similarly OpenCensus allows you to expose z-pages from your app (ideally on a different port) to diagnose problems.

相关资料

  • https://stackoverflow.com/questions/43380939/where-does-the-convention-of-using-healthz-for-application-health-checks-come-f
  • https://vimeo.com/173610242

你可能感兴趣的:(/healthz 命名的由来)