如何将千分尺指标实现为动态地图

时间:2020-07-15 13:42:27

标签: java amazon-cloudwatch micrometer spring-micrometer

我有一个用例,我们要捕获特定类别数据的指标。类别中的不同条目是动态的,不能进行硬编码。我们如何在千分尺中定义此类指标?我曾经使用过DistributionSummary,Gauge等,但是它仅对单个度量进行测量。

示例如下:假设是否有一个课程网站(例如Udemy,Coursera),我们在其中监视有关某人参加课程的详细信息。表格是这样的:

| Name    | Country    | Course   | Duration | Active |
| ABC     | USA        | AWS 101  | 1.5      | true   |
| XYZ     | IND        | JPN 101  | 0.5      | false  |

我想绘制一个衡量每个国家/地区活跃人数的指标,以将其显示在CloudWatch或任何其他服务上。像这样:

Map<String,AtomicInteger> numberOfActiveUsersPerCountry;
....
....
public void incrementActiveUsersPerCountry(String country) {
    if(numberOfActiveUsersPerCountry.containsKey(country) {
         //increment existing count
    } else {
         //add the new country
    }

这应该可以通过测微计访问,也可以在Cloudwatch / ELK等访问。

1 个答案:

答案 0 :(得分:1)

带有国家标签的counter正是您想要的:

meterReg.counter("users.active", Tags.of("counter", country)).increment()

计数器可让您计算其增加的速率以及时间范围内的总数。该计数器上的标签意味着它会按国家/地区创建计数器,以允许对该标签进行汇总/查询。