公司的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} info > ${tmpFile} 2>&1如果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 downdown: 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、狀態頁面

下面關於 Redis 的文章您也可能喜歡,不妨參考下:
Ubuntu 14.04下Redis安裝及簡單測試 http://www.linuxidc.com/Linux/2014-05/101544.htm
Redis主從復制基本配置 http://www.codesec.net/Linux/2015-03/115610.htm
Redis集群明細文檔 http://www.codesec.net/Linux/2013-09/90118.htm
Ubuntu 16.04環境中安�php7.0 Redis擴展 http://www.codesec.net/Linux/2016-09/135631.htm
CentOS 7.0 安裝Redis 3.2.1詳細過程和使用常見問題 http://www.codesec.net/Linux/2016-09/135071.htm
Ubuntu 16.04環境中安裝PHP7.0 Redis擴展 http://www.codesec.net/Linux/2016-09/135631.htm
Ubuntu 15.10下Redis集群部署文檔 http://www.codesec.net/Linux/2016-06/132340.htm
Redis實戰 中文PDF http://www.codesec.net/Linux/2016-04/129932.htm
Redis 的詳細介紹 : 請點這里
Redis 的下載地址 : 請點這里
本文地址 : http://www.codesec.net/Linux/2016-11/136783.htm
本文系統(linux)相關術語:linux系統 鳥哥的linux私房菜 linux命令大全 linux操作系統