【发布时间】: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