石墨-仅从活动服务实例中收集指标

时间:2019-01-02 10:58:08

标签: grafana graphite micrometer

让我们说我的春季微服务处理数据。每当发生成功的处理事件时,对于指标,我都会更新千分尺计数器。这已注册到Graphite Registry。

registry = new GraphiteMeterRegistry(new GraphiteConfiguration(), Clock.SYSTEM, HierarchicalNameMapper.DEFAULT);
Counter counter = Counter.builder("process").tag("status","success").register(registry);

到目前为止,听起来不错。但是,如果我必须创建和部署服务的多个实例怎么办?

如何从所有实例中获取所有成功事件的汇总计数?

为了进一步说明我的情况,我在每个增量上记录了counter.count()值。这是我看到的->

<Instance 1> <time> <package-name> Count :122
<Instance 2> <time> <package-name> Count :53

所以当我在graphana上运行石墨查询时-

process.status.success.count

我倾向于从这两个实例中获得随机计数。

我需要的是一个查询-

process.service-instance.status.success.count 

这样我就可以最后运行summary()函数。

更新 现在,我可以通过获取服务实例ID从所有实例中获取数据。但这带来了一个新问题-由于我一次又一次地重新启动服务,并且每次服务ID都会更改,因此如何从“仅活动”服务中获取数据?

从进程开始。*。status.success.count表示所有服务的总计数-无效或有效

1 个答案:

答案 0 :(得分:0)

切勿使用实例ID进行聚合。实例重新启动后,实例ID将更改。 (将instance-id仅用于记录/调试/保存记录。)

使用service-id进行聚合。

对于千分尺,您可以在常用标签中添加服务名称。

registry.config().commonTags("service", "xyz-service");

公共标记是在注册表级别定义的,并且与该注册表关联的每个度量标准都将添加公共标记。

而且,对于已死还是活着的情况:该指标在实例还活着时被推送。因此,如果您想知道某个步骤运行了多少次,则需要考虑该计数。

要从活动实例中获取数据,请使用时间过滤器。这将返回该持续时间内处于活动状态的实例推送的数据(为什么?因为已死实例不推送指标)。