我正在将 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
计数器,我想用 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 可用于追溯生成指标的特定应用程序实例。
这是否意味着我需要自己专门将这些属性添加到我所有指标的标签中?我知道我可以通过让 BeanMeterRegistryCustomizer
返回以下内容来做到这一点:registry -> registry.config().commonTags(tags)
使用标签作为 SCDF 通常为integration
指标设置的属性。还是 SCDF 将属性添加到所有指标?
谢谢 !