公司的redis业务很多,redis监控自然也是DB监控的一大模块,包括采集、展示、监控告警。本文主要介绍redis监控的主要指标和采集方法。

  一、Redis监控系统逻辑

  1、DBA通过前台页面添加redis监控,填写ip和端口,配置阈值、负责人等信息

  2、前台调用自动调度平台接口将redis监控采集Agent发送到目标机器上的固定文件夹,并添加crond,每分钟运行(采集Agent包含采集程序和ip端口信息文件)

  3、redis监控Agent采集相关指标通过http接口上报到mysql服务器(目标机器无法直接连接mysql)

  4、前台读取mysql数据进行展示

  5、解析程序每分钟通过读取配置信息和Agent上报的数据进行解析并发送告警(Rtx/Wechat/Sms)给指定负责人

  二、采集指标和命令

  1、redis服务进程 ip-port

约定所有redis服务都必须以ip1(内网ip)来绑定,每个机器只有一个ip1,可以有多个端口,即多个redis实例。采集程序读取ip端口信息文件来判断有多少个实例

ps aux | grep -E "redis-server.*$port"

约定所有redis客户端安装标准路径是

REDISPATH_CLI="/usr/local/redis/bin/redis-cli"

如果发现不是标准路径会有 No such file or directory 的提示,则采集程序会在每天早上10点发送Rtx弹窗给DBA(DBA也可以根据前台页面图表展示来判断该采集器有无上报数据,无上报数据则可以上机查看采集器日志)

采集器使用下面的命令来采集redis实例的所有信息,然后根据信息筛选出需要的指标上报到mysql

$REDISPATH_CLI -h ${agentIp} -p ${port} >& 

如果redis实例没有绑定在ip1或者127.0.0.1上面则会提示 Connection refused

  2、连接客户数

grep "connected_clients:" ${tmpFile} | awk -F ":" '{print $2}'

  3、阻塞连接数

grep "blocked_clients:" ${tmpFile} | awk -F ":" '{print $2}'

  4、redis占用内存,单位Byte转成MB

grep "used_memory:" ${tmpFile} | awk -F ":" '{print $2}' | awk '{printf "%.2f",$1/1024/1024}'

  5、内存峰值,单位Byte转成MB

grep "used_memory_peak:" ${tmpFile} | awk -F ":" '{print $2}' | awk '{printf "%.2f",$1/1024/1024}'

  6、主从角色

grep "role:" ${tmpFile} | awk -F ":" '{print $2}'   #  master(主),slave(从)

  7、master_link_status

grep "master_link_status:" ${tmpFile} | awk -F ":" '{print $2}'   # up down

down:Master已经不可访问了,Slave依然运行良好,并且保留有AOF与RDB文件

  8、执行命令总数和qps

grep "total_commands_processed:" ${tmpFile} | awk -F ":" '{print $2}'

计算qps需要计算两次 total_commands_processed,然后除以时间差。逻辑是第一分钟将total_commands_processed的值和当时采集该值的时间保存到last.cache中,第二分钟采集的时候获取值和时间,和上次相减得到两个差值相除即可。

  9、上报时间

reportTime=`date +'%Y-%m-%d %H:%M:00'`

时间的秒数是0,方便前台画图展示

  三、解析告警

分析上报的指标是否异常,根据reportTime判断Agent心跳情况,将状态和异常信息存入mysql,发送告警给相关负责人。数据库分表如下:

  redisMonitor库:配置表redisConf、当前状态redisCurrentStatus、异常信息表redisDisplay

  历史库按月分库,按照ip分表,保存redis采集器上报数据,Ex: redisStatus167872716

  四、前台展示

  1、异常页面

  2、状态页面

原创文章,转载请备注原文地址 http://www.cnblogs.com/lxmhhy/p/6034549.html

知识交流讨论请加qq群:180214441。谢谢合作

DB监控-redis监控的更多相关文章

  1. Zabbix监控redis status

    概述 zabbix采用Trapper方式监控redis status 原理 redis-cli info命令得到redis服务器的统计信息,脚本对信息分两部分处理: (1)# Keyspace部分为Z ...

  2. DB监控-mysql监控

    Mysql监控属于DB监控的模块之一,包括采集.展示.监控告警.本文主要介绍Mysql监控的主要指标和采集方法. Mysql监控和Redis监控的逻辑类似,可参考文章<Redis监控>. ...

  3. redis监控状态

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

  4. 监控 Redis 服务方案

    RedisLive easy_install pip wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate python g ...

  5. Zabbix 监控redis

    Zabbix 监控redis 1.监控脚本,github上的 [root@localhost ~]# cat /etc/zabbix/script/redis-status.sh #!/bin/bas ...

  6. 监控redis性能

    注存数据,取数据的功能,即 set,get,非常适合用作缓存服务器,降低后端数据库压力.有时,想确认下数据是否是从 redis 里读的,以及 redis 是怎么取得数据,这时就可以使用 monitor ...

  7. Prometheus监控 Redis & Redis Cluster 说明

    说明 在前面的Prometheus + Grafana 部署说明之「安装」文章里,大致介绍说明了Prometheus和Grafana的一些安装使用,现在开始如何始部署Prometheus+Grafan ...

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

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

  9. Redis 监控

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

随机推荐

  1. SQL存储过程分页(通用的拼接SQL语句思路实现)

    多表通用的SQL存储过程分页 案例一: USE [Community] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Scrip ...

  2. 高效的SQLSERVER分页查询的几种示例分析

    Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询 ...

  3. iOS阶段学习第34天笔记(UI小组件 UISegment-UISlider-UIStepper-UIProgressView-UITextView介绍)

    iOS学习(UI)知识点整理 一.UI小组件 1.UISegmentedControl 分段选择器  实例代码 - (void)viewDidLoad { [super viewDidLoad]; / ...

  4. DES加密中文乱码问题的解决

    服务器向客户端返回时: response.setContentType("text/json; charset=utf-8"); 客户端解码时: return new String ...

  5. cursor.MySQLCursorDict Class

    5.9.6.4 cursor.MySQLCursorDict Class The MySQLCursorDict class inherits from MySQLCursor. This class ...

  6. 从零开始学 Java - Windows 下安装 Tomcat

    谁都想分一杯羹 没有一个人是真正的无私到伟大的,我们试着说着做自己,与人为善,世界和平!殊不知,他们的真实目的当你知道后,你会被恶心到直摇头并下意识地迅速跑开,下辈子都不想见到他.不过,他没错,你也没 ...

  7. 【读书笔记】2016.11.19 北航 《GDG 谷歌开发者大会》整理

    2016.11.19 周六,我们在 北航参加了<GDG 谷歌开发者大会>,在web专场,聆听了谷歌公司的与会专家的技术分享. 中午免费的午餐,下午精美的下午茶,还有精湛的技术,都是我们队谷 ...

  8. entityframework学习笔记--002-database first

    1.实体框架紧紧地和Visual Studio集成在一起,为了在你的应用程序中使用实体框架,我们增加一个ADO.NET实体数据框架到你的项目.方法如下: 右键你的项目,然后选择 ➤New Item(新 ...

  9. 今天写项目时,突然发现canvas的一些公式不记得了,所以整理了一番,分享给大家。

    Canvas 标签<canvas></canvas> 默认宽300,高150,不用用Css设置宽高 获取方法var ctx = cas.getcontext("2d& ...

  10. 断言与异常(Assertion Vs Exception)

    在日常编程实践中,断言与异常的界限不是很明显,这也使得它们常常没有被正确的使用.我也在不断的与这个模糊的怪兽搏斗,仅写此文和大家分享一下我的个人看法.我想我们还可以从很多角度来区别断言和异常的使用场景 ...