1 调研目的

主要的目的是想调研各大云平台有关Redis监控功能的实现,但是最后我发现各大云平台提供的监控功能都比较基础,比如我想看诸如访问频率较高的HotKey、占用内存较大的Bigkey等指标,它们都没有提供,一部分Redis监控的开源工具实现了这样的功能,但是实现方法实用性不大,见后文汇总。

2 调研情况

2.1 常见公有云平台监控

我所调研的阿里云、腾讯云、青云这三个平台给用户提供的监控信息均是采用Redis Info命令获取的,他们中有的再次对Redis Info的信息做了一些处理,比如阿里云对INFO Commandstats做了排序,提供了TOP Command的信息,但是他们并没有对服务端做改造或者通过其他的方式获取监控信息,因此也没有提供诸如访问频率较高的HotKey、占用内存较大的Bigkey的指标。

阿里云的监控页面:

腾讯云的监控页面:

青云的监控页面:

2.2 开源的Redis监控工具

有一些开源工具提供了类似的监控指标,汇总如下:

  • RedisLive:提供了TopAccessKeys的统计。

它的后台使用关系型数据库(默认是sqlite)保存Key的信息,然后使用SQL分析查询获取结果,

  • redis-faina:提供TopAccessKeys、TopCommand、Slowest Calls等统计。

它直接解析Redis Monitor命令的结果,然后分析得到信息,Redis Monitor命令对Redis本身性能的影响较大。而且Redis Monitor只提供命令开始执行的时间,它的输出如下:

1510737569.843450 [0 127.0.0.1:53371] "set" "k" "v"

因此对于一个请求不断的Redis,它的分析才有效,因为两条记录相减的时间才可以算作命令实际的执行时间,但是如果Redis并没有多少请求,那分析就不准确了。

使用tcpdump抓包之后解析分析,提供了TopAccessKeys和Slowest Calls的指标。

packetbeat可以指定网卡抓取网络数据包,并且提供了对Redis协议的解析,将抓取到的数据使用elasticsearch建立缓存搜索,kibana是一个可以配合elasticsearch展示的工具,我测试了一下,packetbeat抓取到的数据格式如下:

{
"@timestamp": "2017-10-19T14:42:02.046Z",
"beat": {
"hostname": "kiosk",
"name": "kiosk",
"version": "5.6.3"
},
"bytes_in": 21,
"bytes_out": 95,
"client_ip": "127.0.0.1",
"client_port": 55747,
"client_proc": "",
"client_server": "kiosk",
"ip": "127.0.0.1",
"method": "KEYS",
"port": 6379,
"proc": "",
"query": "keys *",
"redis": {
"return_value": "[kkkkk, key:__rand_int__, k, counter:__rand_int__, mylist, myset]"
},
"resource": "*",
"responsetime": 0,
"server": "kiosk",
"status": "OK",
"type": "redis"
}

可以将查询到的信息按照index组织,之后分析热点key,或者key的轨迹。

  • 定期使用脚本获取信息

使用脚本定期去所有机器上用Redis客户端执行redis-cli --bigkeys或者slowlog查询,然后汇总结果统计。

3. 总结

本次调研想解决如何获取RedisBigKey和HotKey等监控指标,为了更好的排查问题和运维,最后的方法中开源的方法实用性都不是很大,EPK组合的方式目前也待讨论,有没有必要捕获所有数据等等,最后一个脚本的方式应该是比较轻量的。

[完]

Redis监控调研的更多相关文章

  1. [转]细说Redis监控和告警

    原文  https://zhuoroger.github.io/2016/08/20/redis-monitor-and-alarm/? 对于任何应用服务和组件,都需要一套完善可靠谱监控方案. 尤其r ...

  2. DB监控-redis监控

    公司的redis业务很多,redis监控自然也是DB监控的一大模块,包括采集.展示.监控告警.本文主要介绍redis监控的主要指标和采集方法. 一.Redis监控系统逻辑 1.DBA通过前台页面添加r ...

  3. Redis 监控

    redis 监控有 redis-live 和 redis-stat Redis-Live是一个用来监控redis实例,分析查询语句并且有web界面的监控工具,使用python编写. redis-sta ...

  4. Redis监控技巧(转)

    来自:http://blog.nosqlfan.com/html/4166.html Redis 监控最直接的方法当然就是使用系统提供的 info 命令来做了,你只需要执行下面一条命令,就能获得 Re ...

  5. redis监控状态

    Redis介绍 Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表.哈希.集合和有序集合5种.支持在服务器端计算集合 ...

  6. Redis监控方案

    Redis 监控最直接的方法当然就是使用系统提供的 info 命令来做了,你只需要执行下面一条命令,就能获得 Redis 系统的状态报告. redis-cli info 内存使用 如果 Redis 使 ...

  7. Redis监控

    首先判断客户端和服务器连接是否正常 # 客户端和服务器连接正常,返回PONG redis> PING PONG # 客户端和服务器连接不正常(网络不正常或服务器未能正常运行),返回连接异常 re ...

  8. 做个简单的Redis监控(源码分享)

    Redis监控 Redis 是目前应用广泛的NoSQL,我做的项目中大部分都是与Redis打交道,发现身边的朋友也更多人在用,相对于memcached 来说,它的优势也确实是可圈可点.在随着业务,数据 ...

  9. 13. Redis监控运维云平台CacheCloud

    13. Redis监控运维云平台CacheCloud13.1 CacheCloud是什么13.1.1 现有问题13.1.2 CacheCloud基本功能13.2 快速部署13.2.1 CacheClo ...

随机推荐

  1. Sentry 监控 - Security Policy 安全策略报告

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  2. 『GoLang』接口

    接口是什么 Go 语言不是一种 "传统" 的面向对象编程语言:它里面没有类和继承的概念. 但是 Go 语言里有非常灵活的 接口 概念,通过它可以实现很多面向对象的特性.接口提供了一 ...

  3. 基于AM335X,如何搭建优良的Linux开发环境(下)

    接着上一篇文章的Linux开发环境搭建,文章中详细讲解了 VMware14.1.1虚拟机安装.基于虚拟机安装Ubuntu14.04.3操作系统.安装Ubuntu14.04.3操作系统.安装虚拟机工具. ...

  4. P5470-[NOI2019]序列【模拟费用流】

    正题 题目链接:https://www.luogu.com.cn/problem/P5470 题目大意 两个长度为\(n\)的序列\(a,b\),求出它们两个长度为\(K\)的子序列,且这两个子序列至 ...

  5. Android 开发进程 0.35 升级编译版本Android12

    Android12升级 工作需要升级到编译版本31 在这里记录一下遇到的问题. 错误:Manifest merger failedManifest merger failed 这个问题通常搜到的答案是 ...

  6. java SE(未完结)

    数据类型与运算符 数据类型 基础数据类型 数值型 正整型 byte short int long 结尾加(l/L) 浮点型 float 结尾加(f/F) double 字符型 char 只能存储一个字 ...

  7. 理解ASP.NET Core - 配置(Configuration)

    注:本文隶属于<理解ASP.NET Core>系列文章,请查看置顶博客或点击此处查看全文目录 配置提供程序 在.NET中,配置是通过多种配置提供程序来提供的,包括以下几种: 文件配置提供程 ...

  8. NOIP模拟74

    前言 我就想说一句,T3 给了一个什么牛马大样例!!!!!!!!,气\(^{TM}\)死我!!!!!!! 我的 \(\mathcal{O}(n)\) 算法始终过不掉大样例我 TM ,要不然我就直接上矩 ...

  9. 微信小程序应用安全分析及设计

    针对微信关于小程序安全设计的分析 针对微信小程序开发配置及部分配置机制分析微信小程序安全设计: AppSecret 管理员生成AppSecret,在与微信后台交互过程中部分接口使用,如 auth.co ...

  10. 5-基本的sql查询以及函数的使用

    基本SQL查询语句以及函数的使用 格式元素 描述 YYYY 四位的年份 MONTH 月份的英文全称 MON 月份的英文简写 MM 月份的数字表示 DD 日起的1-31数字表示 D 星期几的数字表示1- ...