Сборщик метрик SCDF - включает метрики Прометея - PullRequest
0 голосов
/ 25 октября 2018

Я использую SCDF с метриками Spring Boot 2.x и сборщиком метрик SCDF для сбора метрик из моего приложения Spring Boot.Я действительно не понимаю логику коллектора в отношении данных aggregateMetrics.

Когда я выбираю список метрик, собранных для моего потока, у меня есть только тот, который начинается с integration.channel.*, и поэтому у меня естьтолько значение означает .Я перепробовал все, чтобы другие метрики выглядели как те, которые выставляются конечной точкой /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 счетчиков, которые я хочуполучить значения с помощью коллектора метрик.Я знаю, что они хорошо видны, потому что я правильно настроил все свойства и даже зашел в запущенный контейнер 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 эти значения ключей отображаются непосредственно на теги в библиотеке микрометра.Свойство spring.cloud.application.guid можно использовать для отслеживания конкретного экземпляра приложения, сгенерировавшего метрику.

Означает ли это, что мне нужно специально добавить эти свойства в тегивсе мои показатели?Я знаю, что могу сделать это с помощью Bean MeterRegistryCustomizer, возвращающего следующее: registry -> registry.config().commonTags(tags) с тегами, имеющими свойства, которые SCDF обычно устанавливает для метрик integration.Или SCDF добавляет ко ВСЕМ метрикам свои свойства?

Спасибо!

1 Ответ

0 голосов
/ 29 октября 2018

, хотя ваши наблюдения о MetricsCollector в целом верны, я считаю, что есть альтернативный (и, возможно, более чистый) способ достичь того, что вы пытались, используя метод сбора метрик микрометра SCDF.Ниже я попытаюсь объяснить оба подхода.

Поскольку MetricsCollector предшествует во времени структуре Микрометра, они оба реализуют совершенно разные потоки обработки метрик.Основной целью 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.* .В настоящее время вы не сможете добавить больше метрик без изменения кода сборщика метрик.Если вы считаете, что поддержка различных метрик микрометра важнее, чем обратная совместимость с Boot 1.x, откройте новую проблему в проекте Metrics Collector.Тем не менее, я полагаю, что описанный ниже подход лучше подходит для вашего случая!

В отличие от подхода MetricsCollector, «чистые» микрометрические метрики отправляются непосредственно в выбранный реестр метрик (например, Prometheus, InfluxDB, Atlas и т. Д.).на).Как показано на примере в примере , собранные показатели можно анализировать и визуализировать с помощью таких инструментов, как Grafana .Следуйте образцам SCDF Metrics , чтобы настроить коллекцию метрик с помощью InfluxDB (или Prometheus) и Grafana.Позже вы сможете исследовать любые готовые или нестандартные показатели микрометра.Недостатком этого подхода (на данный момент) является то, что вы не сможете визуализировать эти показатели в конвейере пользовательского интерфейса SCDF.Тем не менее, если вам важно иметь такую ​​визуализацию внутри пользовательского интерфейса SCDF, откройте новый выпуск в проекте SCDF (у меня есть WIP для реестра микрометров Altals).

Я надеюсь, что этопроливает свет на альтернативные подходы.Нам было бы очень интересно услышать ваши отзывы.

Ура!

...