SCDF指标收集器-包括Prometheus指标

时间:2018-10-25 17:07:31

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

我正在将SCDF与Spring Boot 2.x指标和SCDF指标收集器结合使用,以从我的Spring Boot应用程序中收集指标。我真的不了解关于aggregateMetrics数据的收集器逻辑。

当我获取为流收集的指标列表时,我只有一个以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容器来检查端点。

我已经读过

  

在部署应用程序时,数据流会设置   spring.cloud.stream.metrics.properties属性,如   以下示例:

     

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

     

这些键的值用作执行聚合的标签。   对于2.x应用程序,这些键值直接映射到   千分尺库中的标签。物业   spring.cloud.application.guid可用于追溯到   生成指标的特定应用程序实例。

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

谢谢!

1 个答案:

答案 0 :(得分:2)

虽然您对MetricsCollector的观察“通常”是正确的,但我相信可以通过SCDF千分尺度量标准收集方法来实现您一直在尝试的方法(或者更干净)。我将尝试在下面解释这两种方法。

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

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

我希望这可以为替代方法提供一些启示。我们非常有兴趣听到您的反馈。

干杯!