使用 Prometheus 和 Wavefront 进行服务器监控

本节介绍如何监控 Spring Cloud Data Flow 和 Spring Cloud Skipper 服务器。每个平台的设置不同,但总体架构在所有平台上都是相同的。

Data Flow 指标架构围绕 Micrometer 库设计,为最流行的监控系统的仪表客户端提供了一个简单的外观。有关支持的监控系统列表,请参阅 Micrometer 文档

Data Flow 和 Skipper 服务器已预先配置为支持两个最流行的监控系统:PrometheusWavefront。您可以声明性地选择已部署的应用程序使用哪个监控系统。

为了帮助您开始监控流,Data Flow 提供了 Grafana 仪表板,用于 Prometheus,您可以根据需要安装和自定义这些仪表板。对于 Wavefront,您可以使用 Data Flow 集成磁贴来实现丰富而全面的指标可视化。

Prometheus 需要一个服务发现组件来自动探测已配置的指标端点。Spring Cloud Data Flow 服务器使用 Prometheus RSocket 代理,它使用 rsocket 协议作为服务发现机制。使用 RSocket 代理方法是为了让我们可以使用相同的架构监控短暂的任务以及长期运行的流应用程序。有关更多信息,请参阅有关 短期任务和批处理应用程序 的 micrometer 文档。此外,RSocket 方法允许在所有平台上使用相同的监控架构。Prometheus 配置为抓取每个代理实例。代理依次使用 RSocket 连接从每个应用程序中提取指标。然后,可以通过 Grafana 仪表板查看抓取的指标。

下图显示了 Grafana 和 Wavefront 仪表板

Grafana Servers Dashboard Wavefront Servers Dashboard

本地

本节介绍如何在本地机器上使用 Prometheus 或 InfluxDB 作为指标存储来查看服务器指标。Wavefront 是一种云产品,但您仍然可以在本地部署数据流并将其指向云托管的 Wavefront 监控系统。

Prometheus

要安装 Prometheus 和 Grafana,请按照使用 Prometheus 和 Grafana 进行监控 Docker Compose 说明进行操作。这样做会启动 Spring Cloud Data Flow、Skipper、Apache Kafka、Prometheus 以及 Grafana 的预构建仪表板。

所有容器都运行后,您就可以通过以下地址访问 Spring Cloud Data Flow 仪表板:http://localhost:9393/dashboard

您还可以通过以下地址访问 Prometheus UI:http://localhost:9090/graphhttp://localhost:9090/targets

您可以使用以下凭据访问 Grafana 仪表板:http://localhost:3000

  • 用户:admin
  • 密码:admin

您可以通过以下 URL 访问服务器仪表板:http://localhost:3000/d/scdf-servers/servers?refresh=10s

Wavefront

要安装支持 Wavefront 的 Data Flow,请按照使用 Wavefront 进行监控 Docker Compose 说明进行操作。这样做会启动 Spring Cloud Data Flow、Skipper 和 Apache Kafka。它还会自动指向 Wavefront Data Flow 集成磁贴。

Wavefront 是一种 SaaS 产品,您需要先创建一个用户帐户。使用该帐户,您可以设置 WAVEFRONT_KEYWAVEFRONT_URI 环境变量,稍后将对此进行说明。

Kubernetes

本节介绍如何在 Kubernetes 上使用 Prometheus 或 Wavefront 作为指标存储来查看流的应用程序指标。

普罗米修斯

要在 Kubernetes 上安装 Prometheus 和 Grafana,请按照基于 kubectl 的安装说明进行操作。

用于访问 Grafana UI 的地址取决于部署系统的 Kubernetes 平台。例如,如果您使用的是 GKE,则使用负载均衡器地址。如果您使用 Minikube(它不提供负载均衡器实现),则使用 Minikube 的 IP(以及分配的端口)。在以下示例中,为简单起见,我们使用 Minikube。

要在 Grafana UI 部署到 Minikube 时获取其 URL,请运行以下命令

minikube service --url grafana
http://192.168.99.100:31595

您可以使用以下凭据访问 Grafana 仪表板:http://192.168.99.100:31595

  • 用户名:admin
  • 密码:password

您可以访问服务器仪表板:http://192.168.99.100:31595/d/scdf-servers/servers?refresh=10s

Wavefront

Wavefront 是一种 SaaS 产品。您需要先创建一个用户帐户,并获取分配给您帐户的 API-KEYWAVEFRONT-URI

请按照常规数据流 Kubernetes 安装说明进行操作。

然后将以下属性添加到您的 Spring Cloud Data Flow 服务器配置中(例如,在 src/kubernetes/server/server-config.yaml 中),以启用 Wavefront 集成

management:
  metrics:
    export:
      wavefront:
        enabled: true
        api-token: <YOUR API-KEY>
        uri: <YOUR WAVEFRONT-URI>
        source: demo-scdf-source

要启用 Spring Cloud Skipper Wavefront 监控,请将相同的指标配置复制到 Skipper 服务器配置中(例如,在 src/kubernetes/skipper/skipper-config-kafka.yamlsrc/kubernetes/skipper/skipper-config-rabbit.yaml 中)

management:
  metrics:
    export:
      wavefront:
        enabled: true
        api-token: <YOUR API-KEY>
        uri: <YOUR WAVEFRONT-URI>
        source: demo-scdf-source

Cloud Foundry

本节介绍如何使用 Prometheus 作为 Cloud Foundry 上的指标存储来查看流的应用程序指标。

普罗米修斯

要将数据流服务器的清单配置为将来自流应用程序的指标数据发送到 Prometheus RSocket 网关,请按照基于清单的安装说明进行操作。

在 Prometheus、Grafana、Spring Cloud Data Flow 以及入门 - Cloud Foundry部分中定义的任何其他服务启动并运行后,您就可以收集指标了。

根据您安装 Grafana 的位置,您可以使用以下凭据访问 Grafana 仪表板

  • 用户名:admin
  • 密码:password

您可以通过以下 URL 访问服务器仪表板:http://localhost:3000/d/scdf-servers/servers?refresh=10s

Wavefront

Wavefront 是一种 SaaS 产品。您需要先创建一个用户帐户,并获取分配给您帐户的 API-KEYWAVEFRONT-URI

要配置数据流服务器以将流应用程序中的指标数据发送到 Wavefront 监控系统,请按照基于清单的 Wavefront 配置说明进行操作。