Сборщик метрик SCDF - включает метрики Прометея
Я использую 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 можно использовать для отслеживания конкретного экземпляра приложения, сгенерировавшего метрику.
Значит ли это, что мне нужно самому добавить эти свойства в теги всех моих метрик? Я знаю, что могу сделать это, имея Боб MeterRegistryCustomizer
возвращая следующее: registry -> registry.config().commonTags(tags)
с тегами, имеющими свойства, которые SCDF обычно устанавливает для себя integration
метрики. Или SCDF добавляет ко ВСЕМ метрикам свои свойства?
Спасибо!
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.*
метрики. В настоящее время вы не сможете добавить больше метрик без изменения кода сборщика метрик. Если вы считаете, что поддержка различных метрик микрометра важнее, чем обратная совместимость с Boot 1.x, откройте новую проблему в проекте Metrics Collector. Тем не менее, я считаю, что подход, описанный ниже, лучше подходит для вашего случая!
В отличие от подхода MetricsCollector, "чистые" микрометрические метрики отправляются непосредственно в выбранный реестр метрик (например, Prometheus, InfluxDB, Atlas и т. Д.). Как показано в примере, собранные метрики можно анализировать и визуализировать с помощью таких инструментов, как Grafana. Следуйте образцам метрик SCDF, чтобы настроить коллекцию метрик через InfluxDB (или Prometheus) и Grafana. Позже вы сможете изучить любые готовые или нестандартные показатели микрометра. Недостатком этого подхода (на данный момент) является то, что вы не сможете визуализировать эти показатели в конвейере пользовательского интерфейса SCDF. Тем не менее, если вам важно иметь такую визуализацию внутри пользовательского интерфейса SCDF, откройте новую проблему в проекте SCDF (у меня есть WIP для реестра микрометров Altals).
Я надеюсь, что это проливает некоторый свет на альтернативные подходы. Нам было бы очень интересно услышать ваши отзывы.
Ура!