小编Ami*_*mir的帖子

普罗米修斯:如何评价来自不同机器的相同计数器的总和?

我有一个普罗米修斯计数器,为此,我想它的速度上的时间范围(真正的目标是要总结速度,有时使用histogram_quantile上的直方图指标)。
但是,我有多台机器运行这种作业,每台机器都设置了自己的实例标签。这会导致在不同机器上对该计数器的不同inc操作以创建计数器的不同实体,因为标签值的组合是唯一的。
问题是rate()在每个这样的计数器实体上单独工作。
结果是具有独特组合的计数器实体不会被考虑在内率()
例如,如果我有:

mycounter{aaa="1",instance="1.2.3.4:6666",job="job1"} value: 1
mycounter{aaa="2",instance="1.2.3.4:6666",job="job1"} value: 1
mycounter{aaa="2",instance="1.2.3.4:7777",job="job1"} value: 1
mycounter{aaa="1",instance="5.5.5.5:6666",job="job1"} value: 1
Run Code Online (Sandbox Code Playgroud)

所有计数器实体都是唯一的,因此它们的值都是 1。
如果计数器标签总是唯一的(来自不同的机器),则rate(mycounter[5m])在这种情况下将获得值 0,并且sum(rate(mycounter[5m]) ]))会得到 0,这不是我需要的!
我想忽略实例标签,以便它引用这些 mycounter inc操作,因为它们是在同一个计数器实体上进行的。
换句话说,我希望只有 2 个实体(它们可以有一个共同的实例值或没有实例标签):

mycounter{aaa="1", job="job1"} value: 2
mycounter{aaa="2", job="job1"} value: 2
Run Code Online (Sandbox Code Playgroud)

在这种情况下,新机器中的inc操作(具有现有aaa值)将增加一些实体计数器而不是添加值为 1 的新实体,并且rate()将获得每个实体的实际费率,因此我们可以对它们进行sum()。我怎么做?

我做了几次尝试来解决它,但都失败了:

  • 做一个速率()的的总和() …

sum rate prometheus

7
推荐指数
1
解决办法
6632
查看次数

将Avro生成的对象序列化为json时发生JsonMappingException

我使用avro-tools使用以下命令从avsc文件生成Java类:

java.exe -jar avro-tools-1.7.7.jar compile -string schema myfile.avsc 
Run Code Online (Sandbox Code Playgroud)

然后,我尝试通过ObjectMapper将此类对象序列化为json,但始终收到一个JsonMappingException,说“不是枚举”或“不是联合”。在测试中,我使用生成器或构造器创建了生成的对象。对于不同类的对象,我得到了这样的例外...

样例代码:

ObjectMapper serializer = new ObjectMapper(); // com.fasterxml.jackson.databind
serializer.register(new JtsModule()); // com.bedatadriven.jackson.datatype.jts
...
return serializer.writeValueAsBytes(avroConvertedObject); // => JsonMappingException
Run Code Online (Sandbox Code Playgroud)

我还使用以下方法尝试了许多配置:serializer.configure(...),但仍然失败。 版本: Java 1.8,jackson-datatype-jts 2.3,jackson-core 2.6.5,jackson-databind 2.6.5,jackson-annotations 2.6.5

有什么建议么?谢谢!

java serialization json avro

5
推荐指数
2
解决办法
2278
查看次数

标签 统计

avro ×1

java ×1

json ×1

prometheus ×1

rate ×1

serialization ×1

sum ×1