鱼C论坛

 找回密码
 立即注册
查看: 408|回复: 2

开发Prometheus的redis bigkey exporter,完善k8s下redis容器的性能监控

[复制链接]
发表于 2024-6-21 17:03:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 富友郑鹏展 于 2024-6-21 17:08 编辑

      好久没来鱼C写技术总结了,回顾这些年的职业路径,从自动化测试到python后端到golang后端直到现在的devops,确实积累了很多心得,可惜都没时间来写写这些心得(主要是懒)。自从转为devops后确实有比较多的时间了(主要是加班少: ) ),看来以后还是要多写写技术总结 :)。
     废话不多说,直接进入今天的主题。前段时间公司要求需要对k8s下的redis容器进行bigkey的监控,监控的指标需要接入到Prometheus,以grafana可视化。分析了具体需求后,网上看了一下,没看到有相关的exporter有支持redis的bigkey指标,最后决定用redis的内置工具进行定制开发,具体的实现可参考我的github: redisKeyMetrics。目前实现的功能可以支持bigkey,hotkey和memkey的监控。接入Prometheus的监控后,在grafana的展示大概如下图所示, 其中24 小时内redis bigkey 的变化率的promql可以使用,均值统计也是差不多的表达式。结合redis的其它exporter的key监控指标,算是可以比较完善的监控整个redis的性能。
sum by(key_group) (label_replace(rate(redis_key_metrics[24h]) * 100, "key_group", "$1", "key_name", "([^:]*)[:]*.*"))

redis key 指标监控

redis key 指标监控

redis key 指标监控

redis key 指标监控

评分

参与人数 1荣誉 +2 鱼币 +3 贡献 +3 收起 理由
不二如是 + 2 + 3 + 3 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-6-21 17:08:16 | 显示全部楼层
哎呀,好久没见,欢迎回到鱼C写技术总结!不过看到你这么多年的职场历程,从自动化测试到Python后端,再到Golang后端,最后踏入DevOps的世界,真的是一场精彩的冒险啊!

### 为什么要监控Redis的BigKey?
在谈具体实现之前,咱们先聊聊为什么要监控Redis的BigKey。BigKey就是那些体积异常庞大的键值对。如果不监控这些大块头,它们会占用大量内存,影响Redis的性能,导致延迟增高,甚至会影响到整个应用的稳定性。大块头们就像大象在冰箱里,进出都得挪半天!

### Prometheus和Grafana的组合拳
Prometheus是个超级棒的监控系统,而Grafana则是它的最佳拍档,两者一起使用,监控Redis的性能简直如虎添翼。要实现Redis BigKey的监控,你需要将Redis的指标采集到Prometheus中,再通过Grafana进行可视化展示。

### Redis BigKey Exporter的实现
为了实现这个需求,你需要开发一个专门的Redis BigKey Exporter。基本思路是使用Redis的内置工具(例如`redis-cli --bigkeys`)来获取BigKey的相关信息,然后将这些数据暴露给Prometheus进行抓取。

#### 核心步骤:
1. **使用Redis内置工具**:
   使用`redis-cli --bigkeys`命令可以扫描Redis实例中的键并找到BigKey。这是一个启动点,可以用它来收集所需的数据。

2. **编写Exporter**:
   使用Python或Golang编写一个小程序,它定期运行`redis-cli --bigkeys`命令,并将结果转化为Prometheus可以理解的格式。你可以参考你的GitHub项目`redisKeyMetrics`。

3. **暴露指标**:
   将收集到的BigKey数据通过HTTP接口暴露出来,使得Prometheus可以定期抓取这些数据。可以使用Prometheus的client库来帮助实现这一点。

4. **配置Prometheus抓取数据**:
   在Prometheus的配置文件中,添加你的Exporter的抓取配置。比如:
scrape_configs:
     - job_name: 'redis_bigkey_exporter'
       static_configs:
         - targets: ['<exporter-host>:<exporter-port>']

5. **Grafana展示**:
   在Grafana中,创建一个新的Dashboard,并添加相应的图表来展示从Prometheus抓取到的BigKey数据。你可以使用PromQL来编写查询语句,例如:
sum by(key_group) (label_replace(rate(redis_key_metrics) * 100, "key_group", "$1", "key_name", "(*)*.*"))

### 小结
看了你的技术总结,我觉得你的实现非常棒。通过Redis内置工具获取数据,并使用Prometheus进行监控,再用Grafana进行展示,这套组合拳确实能很好地解决Redis BigKey监控的问题。

最后,记得多写写技术总结,分享经验不仅能帮助他人,还能让自己在回顾时发现新的思路。加油!希望以后能看到你更多精彩的技术分享!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-6-21 17:50:47 | 显示全部楼层
欢迎归来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-31 02:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表