我有一堆微服务在 kubernetes 集群中运行,每个微服务通过 HTTP 实现基本的健康检查。
例如对于端点 /health
如果该特定服务当前健康或其他一些 HTPP 4xx/5xx 代码(以及可能的附加信息),则每个服务将返回 HTTP 响应 200 如果不健康。
我看到 Kubernetes 有自己的内置 HTTP 健康检查概念 https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-a-liveness-http-request
不幸的是,这不是我想要的。我希望能够在某个数据库中触发警报(并记录运行状况检查请求的状态),以便我可以快速检查所有服务所处的状态以及对处于不健康状态的任何服务发出警报。
我想知道 Kubernetes 中是否有我应该用于此类事情的现有工具或方法?或者需要为此构建一些自定义解决方案。
正在考虑拥有一个通用的“HealthCheck”服务,每个微服务在启动时都会注册。这样,“HealthCheck”服务将监控每个服务的健康状况,并针对它发现的任何问题触发警报。
最佳答案
我会警告不要尝试构建自己的内部监控解决方案。这种方法有相当大的缺点。
如果您只需要外部服务 HTTP 健康检查,那么许多现有的监控解决方案都可以。您可以安装传统的 IT 解决方案,如 Zabbix 或 Nagios。或者使用像 这样的 SAS数据狗 和别的。
也有黑盒扩展普罗米修斯 ,这在 K8s 用户中非常受欢迎。
其中许多选项的学习曲线有些陡峭。
关于Kubernetes 微服务监控和警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62472522/