最近工作上有个需求,需要把prometheus 采集到的数据上报到kafka消息队列,看了下官方实现,prometheus 支持remote_write / remote_read 的方式扩展,可以在此基础上做文章。
成都创新互联公司专注于企业营销型网站、网站重做改版、印台网站定制设计、自适应品牌网站建设、H5网站设计、商城建设、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为印台等各大城市提供网站开发制作服务。github 上面有个现成的插件,看了一下,主要存在以下一些问题:
1、从环境变量读取配置(不够灵活,后续不好优化,不能做到配置热加载)
2、把client 对象创建的逻辑放到了http handler里面(每次prometheus 调用/write 接口,都要new一个对象...)
3、使用golang kafka 插件sarama 的同步生产者方式写数据(数据量大的情况下,性能可能跟不上)
于是自己动手写一个插件,练练手。
代码比较简单,就是以插件的方式部署适配器,接收prometheus 产生的数据并通过异步kafka 生产者模式,将数据输送给kafka。
大致逻辑是这样:
1、从配置文件中获取kafka相关配置
2、本地监听9201 端口提供http 服务供prometheus 写入数据
3、从/write API 获取到prometheus监控数据后,将数据写入到channel
4、起一个kafka 异步生产者,从channel里面读取监控数据,并写入到kafka
代码具体代码:
https://gitee.com/pmghong/prometheus-kafka-adapter
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。