Prometheus kafka 消息队列适配器

        最近工做上有个需求,须要把prometheus 采集到的数据上报到kafka消息队列,看了下官方实现,prometheus 支持remote_write / remote_read 的方式扩展,能够在此基础上作文章。git


        github 上面有个现成的插件,看了一下,主要存在如下一些问题:        github

        一、从环境变量读取配置(不够灵活,后续很差优化,不能作到配置热加载)        golang

        二、把client 对象建立的逻辑放到了http handler里面(每次prometheus 调用/write 接口,都要new一个对象...)        异步

        三、使用golang kafka 插件sarama 的同步生产者方式写数据(数据量大的状况下,性能可能跟不上)ide


        因而本身动手写一个插件,练练手。性能


        代码比较简单,就是以插件的方式部署适配器,接收prometheus 产生的数据并经过异步kafka 生产者模式,将数据输送给kafka。优化


        大体逻辑是这样:        插件

        一、从配置文件中获取kafka相关配置        对象

        二、本地监听9201 端口提供http 服务供prometheus 写入数据        接口

        三、从/write API 获取到prometheus监控数据后,将数据写入到channel        

        四、起一个kafka 异步生产者,从channel里面读取监控数据,并写入到kafka


QQ截图20190817101836.jpg


        代码具体代码:

        https://gitee.com/pmghong/prometheus-kafka-adapter

相关文章
相关标签/搜索