如何使用 Prometheus 监控集群?

Posted

技术标签:

【中文标题】如何使用 Prometheus 监控集群?【英文标题】:How to monitor cluster using Promeheus? 【发布时间】:2020-04-17 13:24:36 【问题描述】:

最初我们有单节点应用程序,我们使用 Prometheus 将指标路径 url 设置为我们的单节点应用程序,如下所示:

  - job_name: 'spring-actuator'
    metrics_path: '/prometheus'
    scrape_interval: 5s

现在我们切换到云应用程序,如果我们设置负载均衡器路径 - 每次都会使用不同的节点,所以我们会看到一些混乱。有没有办法使用 prometheus 从集群聚合指标?

【问题讨论】:

Prometheus 可以为同一个服务(路径)设置多个目标。然后,您可以获取特定于实例的指标,也可以聚合它们。这还不够吗? @ernest_k 就足够了(聚合)。能给个链接吗? 这个答案是一个很好的例子:***.com/a/53313702/5761558 @ernest_k 在这种情况下会聚合吗? 据我所知(我不是普罗米修斯专家):将按实例收集指标。每行都将知道从中提取它的服务器/实例。现在,当您查询 prometheus 数据库(我为此使用 grafana)时,您可以跨实例选择指标。因此,例如,您可以说 所有/service/resource 调用的平均响应时间(假设您正在导出它)。拥有单个实例的指标可以让您根据需要隔离服务器(我使用它来了解哪个特定服务器正在关闭) 【参考方案1】:

您应该使用 prometheus 从各个后端收集指标,然后在查询中使用聚合或预聚合数据(使用 prometheus 记录规则)。 Prometheus 内置了许多服务发现机制,它们可用于自动查找和使用您的应用运行的所有端点。

如需了解配置的外观,您可以查看 https://github.com/prometheus/prometheus/blob/release-2.15/config/testdata/conf.good.yml#L199

根据您使用的云服务,您将使用不同的 _sd_config 指令。所有可用的都在文档中描述 - https://prometheus.io/docs/prometheus/latest/configuration/configuration/

【讨论】:

但是如果我们使用自动缩放呢?在这种情况下,我们不知道单个后端的数量及其地址 这正是 Prometheus 中服务发现的用途。您无需对单个后端进行硬编码,而是将 prometheus 配置为自动发现所有相关后端(例如使用 AWS/GCP/K8s api)。它将自动执行 - 新目标将自动出现,旧目标将被删除。请参阅我链接的示例,并注意如何通过(在这种情况下)告诉它动态查找设置了特定标签的虚拟机,而不是为机器提供 IP 地址等来抓取配置

以上是关于如何使用 Prometheus 监控集群?的主要内容,如果未能解决你的问题,请参考以下文章

prometheus作为监控,如何计算kubernetes中容器的cpu使用率?

使用 Thanos+Prometheus+Grafana 打造监控系统

云原生系列之使用prometheus监控redis集群实战

如何用Prometheus监控十万container的Kubernetes集群

在 prometheus 中排除 Kubernetes Metrics 监控

使用 Prometheus 监控 Kubernetes 集群中的 Spring Boot 应用程序