监控聚合器系列之: open-falcon新聚合器polymetric

    技术2025-12-14  7

    ![image.png](/img/bVbI3Gm)

    # 聚合在监控中的作用

    - 简单来说:需要将分散的大量监控数据按照一定的维度(idc/service)及一定的算法(avg/sum/max/min/quantile分位)得到一个结果值 - 比如: 想知道服务a下面的100台机器的平均 - 又比如: 想知道查询接口b的99分位延迟值

    # open-falcon原版聚合器 ## aggregator 介绍:  * aggregator聚合器就是从falcon_portal.cluster表中取出用户在页面上配置的表达式,然后解析后,通过api拿到对应机器组的所有机器,通过api查询graph数据算出一个值重新打回transfer作为一个新的点。 * 具体介绍可以看我的文章: [open-falcon 聚合器aggregator代码解析](https://segmentfault.com/a/1190000023092317) ## aggregator 问题:

    ### endpoint多的聚合断点问题 ![image.png](/img/bVbI3AH)

    造成断点的原因有两个: * 原来的接口在机器量超过1k时就效率就会很慢 2w+endpoint需要8s,看了代码是用orm进行了多次查询而且附带了很多别的信息,这里我只需要group_id对应endpoint_list所以我写了一个新的接口用一条raw_sql进行查询 [HostnamesByID](https://github.com/open-falcon/falcon-plus/blob/master/modules/aggregator/sdk/sdk.go#L28)    * 数据查询 依赖graph/lastpoint这个api 查询最近一个点的数据,如果endpoint多的时候batch_query会超时,返回结果成功率也比较低 ### 聚合器单点问题 这个是由于其代码架构导致的,如果单点聚合器挂了会导致数据断

    Processed: 0.010, SQL: 9