我们目前有几个微服务在本地运行,我们使用shell脚本来监控它们的性能,包括JVM、堆大小和正在运行的线程数。但是,我们计划使用库伯内特斯迁移到云端。我们希望监控服务级别统计数据,如云中打开的线程数、JVM、堆大小等。我们计划为此使用Prometheus、Grafana和Elasticsearch。
有人能提出一种方法来使用Prometheus、Grafana和Elasticsearch监控库伯内特斯集群中的微服务性能吗?
我们相信这可以使用Spring Boot Actuator来完成,但不清楚它如何在多个服务的kubernetes上工作。
你的问题需要一系列你不做的思考…例如,你要去哪个云提供商?为什么要创建监控(Prometheus/Alertmanager/Grafana)和日志堆栈(Elasticsearch/fluentd)?您希望与提供商的产品保持“松绑”是否有特定原因?在大多数云服务提供商上,您已经将这些工具作为服务。
无论如何,对于“监控”堆栈,您可以使用Prometheus运算符;这在一个解决方案中提供了您需要的所有工具。
https://prometheus-operator.dev/docs/prologue/introduction/
在您的应用程序方面,您必须导出要监控的指标,并将各种“抓取作业”添加到您的Prometheus。之后,您可以享受创建各种仪表板的乐趣(您会在网上找到很多文档)。
对于日志堆栈,您需要一个像fluentd这样的工具来从库伯内特斯集群中“获取”和收集日志,以及一个允许您智能查看和处理此信息的工具,如Elasticsearch。
有问题的工具不如监控工具密切相关,因此由您决定如何安装它们。当然,我会为日志记录创建一个命名空间,并考虑使用供应商提供的Helm图表。