我使用SCDF和SpringBoot2.x度量和SCDF指标收集器从我的Spring应用程序中收集度量。我真的不支持收集器有关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收集器获取值。我知道它们是公开的,因为我已经设置了所有的属性,我甚至进入码头集装箱启动检查端点。
我读过
在部署应用程序时,数据流设置spring.cloud.stream.metrics.properties属性,如以下示例所示: spring.cloud.stream.metrics.properties=spring.application.name,spring.application.index,spring.cloud.dataflow.Cloud.application.*,spring.cloud.dataflow.Cloud.datflow.* 这些键的值用作执行聚合的标记。在2.x应用程序中,这些键值直接映射到微米库中的标记上。属性spring.cloud.application.guid可用于跟踪生成度量的特定应用程序实例。
这是否意味着我需要自己具体地将这些属性添加到我所有指标的标记中?我知道,我可以通过让一个Bean MeterRegistryCustomizer返回以下内容来做到这一点:带有标记的registry -> registry.config().commonTags(tags)通常为integration度量标准设置自己的属性。或者SCDF将属性添加到所有度量中?
谢谢!
发布于 2018-10-29 10:32:56
虽然您对MetricsCollector的观察“一般”是正确的,但我相信还有一种替代的(也许更干净)的方法,可以通过使用SCDF微米度量收集方法来实现您一直在尝试的目标。我将在下面解释这两种方法。
随着时间的推移,MetricsCollector先于千分尺框架,它们都实现了完全不同的度量处理流程。metrics收集器2.x的主要目标是确保与SpringBoot 1.x度量的向后兼容性。MetricsCollector 2.x允许来自SpringBoot 1.x (pre千分尺)和Spring Boot 2.x (例如千分尺)应用程序启动器的混合度量。这个决定的结果是,收集器2.x只支持Boot 1.x和2.x中可用的度量的公共分母。这个要求只通过预先过滤度量标准来实现.目前,如果不修改度量收集器代码,就无法添加更多的度量。如果您认为支持不同的微米度量比与Boot1.x具有向后兼容性更重要,那么请在metrics收集器项目中打开一个新问题。不过,我相信下面解释的方法更适合你的情况!
与MetricsCollector方法不同的是,“纯”微米度量标准直接发送到选定的metrics注册中心(如Prometheus、InfluxDB、Atlas等)。作为在示例中说明,可以使用格拉法纳等工具对收集的指标进行分析和可视化。遵循SCDF度量示例,通过InfluxDB (或Prometheus)和Grafana设置度量集合。稍后将允许您探索任何开箱即用或自定义千分尺度量标准。这种方法的缺点(目前)是,您将无法在SCDF的管道中可视化这些指标。不过,如果您发现在SCDF中有这样的可视化很重要,请在SCDF项目中打开一个新的问题(我有Altals千分尺注册表的WIP )。
我希望这能为其他办法提供一些启示。我们会很有兴趣听到你的反馈。
干杯!
https://stackoverflow.com/questions/52994654
复制相似问题