【问题标题】:SCDF Metrics Collector - Include Prometheus metricsSCDF Metrics Collector - 包括 Prometheus 指标
【发布时间】:2018-10-25 17:07:30
【问题描述】:

我正在将 SCDF 与 Spring Boot 2.x 指标和 SCDF 指标收集器一起使用,以从我的 Spring Boot 应用程序中收集指标。对于aggregateMetricsdata,我真的不明白收集器的逻辑。

当我获取为我的流收集的指标列表时,我只有一个以 integration.channel.* 开头的指标,因此我只有 mean 值。我尝试了一切以查看其他指标,该指标与/actuator/prometheus 端点公开的指标类似。

我想我误解了指标的聚合方式。我注意到 SCDF 会自动向指标添加一些属性,我想将这些属性应用于我公开的所有指标,以便全部收集。

{
  "_embedded": {
    "streamMetricsList": [
      {
        "name": "poc-stream",
        "applications": [
          {
            "name": "poc-message-sink",
            "instances": [
              {
                "guid": "poc-stream-poc-message-sink-v7-75b8f4dcff-29fst",
                "key": "poc-stream.poc-message-sink.poc-stream-poc-message-sink-v7-75b8f4dcff-29fst",
                "properties": {
                  "spring.cloud.dataflow.stream.app.label": "poc-message-sink",
                  "spring.application.name": "poc-message-sink",
                  "spring.cloud.dataflow.stream.name": "poc-stream",
                  "spring.cloud.dataflow.stream.app.type": "sink",
                  "spring.cloud.application.guid": "poc-stream-poc-message-sink-v7-75b8f4dcff-29fst",
                  "spring.cloud.application.group": "poc-stream",
                  "spring.cloud.dataflow.stream.metrics.version": "2.0"
                },
                "metrics": [
                  {
                    "name": "integration.channel.input.send.mean",
                    "value": 0,
                    "timestamp": "2018-10-25T16:34:39.889Z"
                  }
                ]
              }
            ],
            "aggregateMetrics": [
              {
                "name": "integration.channel.input.send.mean",
                "value": 0,
                "timestamp": "2018-10-25T16:34:52.894Z"
              }
            ]
          },
...

我有一些 Micrometer 计数器,我想通过 Metrics 收集器获取值。我知道它们暴露得很好,因为我已经正确设置了所有属性,我什至进入了启动的 Docker 容器以检查端点。

我已经看过了

部署应用程序时,Data Flow 设置 spring.cloud.stream.metrics.properties 属性,如图 下面的例子:

spring.cloud.stream.metrics.properties=spring.application.name,spring.application.index,spring.cloud.application.*,spring.cloud.dataflow.*

这些键的值被用作标签来执行聚合。 在 2.x 应用程序的情况下,这些键值直接映射到 Micrometer 库中的标签。该物业 spring.cloud.application.guid 可以用来回溯到 生成指标的特定应用程序实例。

这是否意味着我需要自己专门将这些属性添加到我所有指标的标签中?我知道我可以通过让 Bean MeterRegistryCustomizer返回以下内容来做到这一点:registry -> registry.config().commonTags(tags) 带有标签,这些标签是 SCDF 通常为 integrationmetrics 设置的属性。还是 SCDF 将属性添加到所有指标?

谢谢!

【问题讨论】:

    标签: spring-boot-actuator spring-cloud-dataflow spring-micrometer


    【解决方案1】:

    虽然您对MetricsCollector 的观察“通常”是正确的,但我相信有一种替代方法(也许更清洁)可以通过使用 SCDF 千分尺指标收集方法来实现您一直在尝试的目标。我将尝试在下面解释这两种方法。

    由于MetricsCollector 在时间上早于 Micrometer 框架,它们都实现了完全不同的指标处理流程。 Metrics Collector 2.x 的主要目标是确保与 SpringBoot 1.x 指标的向后兼容性。 MetricsCollector 2.x 允许混合来自SpringBoot 1.x(预微米)和Spring Boot 2.x(例如微米)应用程序启动器的指标。这个决定的结果是 Collector 2.x 仅支持 Boot 1.x 和 2.x 中可用的度量标准的公分母。通过仅预过滤 integration.channel.* metrics 来强制执行此要求。目前,如果不修改指标收集器代码,您将无法添加更多指标。如果您认为支持不同的 Micrometer 指标比向后兼容 Boot 1.x 更重要,那么请在 Metrics Collector 项目中打开一个新问题。 我仍然相信下面解释的方法更适合您的情况!

    与 MetricsCollector 方法不同,“纯”Micrometer 指标直接发送到选定的 Metrics 注册表(例如 Prometheus、InfluxDB、Atlas 等)。作为illustrated in the sample,可以使用Grafana 等工具对收集到的指标进行分析和可视化。 按照SCDF Metrics 示例通过 InfluxDB(或 Prometheus)和 Grafana 设置您的指标收集。稍后将允许您探索任何开箱即用的或自定义的千分尺指标。这种方法的缺点(目前)是您将无法在 SCDF UI 的管道中可视化这些指标。不过,如果您发现在 SCDF UI 中进行此类可视化很重要,请在 SCDF project 中打开一个新问题(我有 Altals Micrometer Registry 的 WIP)。

    我希望这对替代方法有所启发。我们很想听听您的反馈。

    干杯!

    【讨论】:

    • 感谢您的详细回答。在进入 Spring 文档几天后,我们决定使用 SCDF metrics with Prometheus and Grafana 一章中描述的方法。我们使用每个 Spring Boot 应用程序的 actuator/prometheus 端点公开我们的指标。我们在 K8s 集群中使用spring-cloud-dataflow-prometheus-service-discovery。发现服务将要报废的目标列表发布到与我们使用 Prometheus Helm chart 部署的 Prometheus pod 共享的 AWS EBS 中。
    • 对于dataviz,我们配置了一个Grafana pod来从部署在K8s中的prometheus-server服务获取数据。根据您的解释,我知道我可以从SCDF Helm chart 中删除MetricsCollector。感谢您在每个 SO 或 GH 网站上的快速回复!
    猜你喜欢
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 2022-12-27
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 2021-10-07
    相关资源
    最近更新 更多