Zabbix監(jiān)控redis

1. Redis監(jiān)控(shell腳本)

  • 監(jiān)控原理示意圖:
    監(jiān)控原理

    Zabbix-server通過agent監(jiān)控中配置文件調(diào)用shell腳本。Redis中提供redis-cli 命令使用info可以獲得redis大部分信息奕删。在使用shell命令獲取到需要的信息。
    監(jiān)控操作步驟:1. 編輯腳本 2.上傳腳本到指定位置 3.修改zabbix-agent配置文件4.zabbix-server的web界面導(dǎo)入模版(編輯模板)5. 主機(jī)關(guān)聯(lián) 曙砂。
  • 配置zabbix-agent配置文件
    Zabbix-agent監(jiān)控配置文件/etc/zabbix/zabbix_agentd.conf(標(biāo)準(zhǔn)安裝位置,如果手動編譯安裝可能在其他位置):
    增加如下內(nèi)容:
UserParameter=Redis.Info[*],/home/zkml/redismonitor.sh $1 $2 通過腳本監(jiān)控信息 
UserParameter=Redis.Status,(/home/zkml/redis-3.2.9/src/redis-cli -h 192.168.199.95 -p 6379 -a 密碼 ping)2>/dev/null |grep -c PONG 
通過命令檢查redis狀態(tài),使用錯(cuò)誤重定向(2>/dev/null)是防止報(bào)錯(cuò)導(dǎo)致監(jiān)控項(xiàng)失效無法告警

增加時(shí)候需要特別注意: redismonitor.sh 放置的位置zabbix需要有權(quán)限執(zhí)行. chmod +x redismonitor.sh 另外放置的文件夾也要有權(quán)限磕谅,否則是無監(jiān)控信息的如果redis需要密碼驗(yàn)證還需要設(shè)置 -a 密碼
Zabbix-server端驗(yàn)證使用zabbix-get:
/usr/local/zabbix-3.0.3/bin/zabbix_get -s 192.168.199.95 -p10041 –k Redis.Status(ip是客戶端的,端口zabbix-agent)

2. 增加監(jiān)控項(xiàng)

  • info查看監(jiān)控信息:
    例如# Server 服務(wù)器信息
    redis_version:3.2.9
  • 腳本中增加如下內(nèi)容
    version) result=`$REDISCLI -h $HOST -p $PORT info | grep -w "redis_version" | awk -F':' '{print $2}'`
    再次,在zabbix管理web界面增加監(jiān)控項(xiàng),也可以增加告警信息,修改增加圖形等內(nèi)容:
    添加監(jiān)控項(xiàng)

    下面有具體的info信息和監(jiān)控腳本以及監(jiān)控模版編輯
  • info查看到信息
    redis-cli -h IP -p 端口 -a 密碼 info
# Server 服務(wù)器信息
redis_version:3.2.9
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:9c93f7fea0328bce
redis_mode:standalone
os:Linux 2.6.32-431.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
process_id:30924
run_id:6e22d7abd8087f557c21dec43499c0c38a8a2749
tcp_port:6379
uptime_in_seconds:88
uptime_in_days:0
hz:10
lru_clock:925063
executable:/usr/local/redis/bin/./redis-server
config_file:

# Clients 客戶端連接信息
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory 內(nèi)存使用信息
used_memory:881336
used_memory_human:860.68K
used_memory_rss:2351104
used_memory_rss_human:2.24M
used_memory_peak:881336
used_memory_peak_human:860.68K
total_system_memory:4017008640
total_system_memory_human:3.74G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:2.67
mem_allocator:libc

# Persistence 持續(xù)
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1527651631
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok

# Stats 狀態(tài)信息
total_connections_received:1
total_commands_processed:0
instantaneous_ops_per_sec:0
total_net_input_bytes:14
total_net_output_bytes:0
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:2
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
migrate_cached_sockets:0

# Replication 集群信息
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU #CPU使用信息
used_cpu_sys:0.08
used_cpu_user:0.01
used_cpu_sys_children:0.00
used_cpu_user_children:0.00

# Cluster 是否使用集群
cluster_enabled:0

# Keyspace

根據(jù)以上信息使用shell命令可以獲取自己想要檢測的信息煞聪。

3. 腳本編寫

主要命令:redis-cli -h IP -p 端口 -a 密碼 info |grep xxx |awk xxx
下面的腳本是沒有密碼的如果redis有驗(yàn)證需要添加

#! /bin/bash
#Name: redismontior.sh
#From: zhangyl@izkml.com 2018.5.29
#Action: Zabbix monitoring redis plug-in
#根據(jù)自己的安裝情況填寫命令位置主機(jī)ip和端口
REDISCLI="/home/zkml/redis-3.2.9/src/redis-cli" 
HOST="192.168.199.95"
PORT=6379
根據(jù)參數(shù)信息獲取監(jiān)控信息
if [[ $# == 1 ]];then
    case $1 in
        version)
            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "redis_version" | awk -F':' '{print $2}'`
            echo $result
        ;;
        uptime)
            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "uptime_in_seconds" | awk -F':' '{print $2}'`
            echo $result
        ;;
        connected_clients)
            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "connected_clients" | awk -F':' '{print $2}'`
            echo $result
        ;;
        blocked_clients)
            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "blocked_clients" | awk -F':' '{print $2}'`
            echo $result
        ;;
        used_memory)
            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "used_memory" | awk -F':' '{print $2}'`
            echo $result
        ;;
        used_memory_rss)
            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "used_memory_rss" | awk -F':' '{print $2}'`
            echo $result
        ;;
        used_memory_peak)
            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "used_memory_peak" | awk -F':' '{print $2}'`
            echo $result
        ;;
        used_memory_lua)
            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "used_memory_lua" | awk -F':' '{print $2}'`
            echo $result
        ;;
        used_cpu_sys)
            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "used_cpu_sys" | awk -F':' '{print $2}'`
            echo $result
        ;;
        used_cpu_user)
            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "used_cpu_user" | awk -F':' '{print $2}'`
            echo $result
        ;;
        used_cpu_sys_children)
            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "used_cpu_sys_children" | awk -F':' '{print $2}'`
            echo $result
        ;;
        used_cpu_user_children)
            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "used_cpu_user_children" | awk -F':' '{print $2}'`
            echo $result
        ;;
        rdb_last_bgsave_status)
            result=`$REDISCLI -h $HOST -p $PORT info  | grep -w "rdb_last_bgsave_status" | awk -F':' '{print $2}' | grep -c ok`
            echo $result
        ;;
        aof_last_bgrewrite_status)
            result=`$REDISCLI -h $HOST -p $PORT info  | grep -w "aof_last_bgrewrite_status" | awk -F':' '{print $2}' | grep -c ok`
            echo $result
        ;;
        aof_last_write_status)
            result=`$REDISCLI -h $HOST -p $PORT info  | grep -w "aof_last_write_status" | awk -F':' '{print $2}' | grep -c ok`
            echo $result
        ;;
        *)
            echo -e "\033[33mUsage: $0 {connected_clients|blocked_clients|used_memory|used_memory_rss|used_memory_peak|used_memory_lua|used_cpu_sys|used_cpu_user|used_cpu_sys_children|used_cpu_user_children|rdb_last_bgsave_status|aof_last_bgrewrite_status|aof_last_write_status}\033[0m" 
        ;;
    Esac
此處表示當(dāng)有兩個(gè)參數(shù)時(shí)使用,主要用來查詢數(shù)據(jù)庫的keys信息等
elif [[ $# == 2 ]];then
    case $2 in
        keys)
            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "$1" | grep -w "keys" | awk -F'=|,' '{print $2}'`
            echo $result
        ;;
        expires)
            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "$1" | grep -w "keys" | awk -F'=|,' '{print $4}'`
            echo $result
        ;;
        avg_ttl)
            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "$1" | grep -w "avg_ttl" | awk -F'=|,' '{print $6}'`
            echo $result
        ;;
        *)
            echo -e "\033[33mUsage: $0 {db0 keys|db0 expires|db0 avg_ttl}\033[0m" 
        ;;
    esac
fi

4. 監(jiān)控模版

在web界面導(dǎo)入模版:redis模版

導(dǎo)入模版

模版

此模版一共提供了19個(gè)監(jiān)控項(xiàng),其中有三個(gè)關(guān)于DbKey的檢查可能無效.

Redis監(jiān)控(Python腳本)

在zabbix官方給出一個(gè)python監(jiān)控腳本斗躏,需要在監(jiān)控端使用Python腳本。
監(jiān)控的原理圖:

原理圖

Zabbix-server通過agent的配置文件不斷讀取文件,此文件有Python腳本每隔一段時(shí)間運(yùn)行生成.文件內(nèi)容是監(jiān)控項(xiàng)的值.此處類似于percona監(jiān)控mysql的方式類似.percona使用的php的腳本.這里使用的是Python腳本.
python監(jiān)控redis

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末昔脯,一起剝皮案震驚了整個(gè)濱河市啄糙,隨后出現(xiàn)的幾起案子笛臣,更是在濱河造成了極大的恐慌,老刑警劉巖隧饼,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沈堡,死亡現(xiàn)場離奇詭異,居然都是意外死亡燕雁,警方通過查閱死者的電腦和手機(jī)诞丽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拐格,“玉大人僧免,你說我怎么就攤上這事〗模” “怎么了猬膨?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長呛伴。 經(jīng)常有香客問我勃痴,道長,這世上最難降的妖魔是什么热康? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任沛申,我火速辦了婚禮,結(jié)果婚禮上姐军,老公的妹妹穿的比我還像新娘铁材。我一直安慰自己,他們只是感情好奕锌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布著觉。 她就那樣靜靜地躺著,像睡著了一般惊暴。 火紅的嫁衣襯著肌膚如雪饼丘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天辽话,我揣著相機(jī)與錄音肄鸽,去河邊找鬼。 笑死油啤,一個(gè)胖子當(dāng)著我的面吹牛典徘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播益咬,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼逮诲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起汛骂,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤罕模,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后帘瞭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體淑掌,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年蝶念,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抛腕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡媒殉,死狀恐怖担敌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情廷蓉,我是刑警寧澤全封,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站桃犬,受9級特大地震影響刹悴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜攒暇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一土匀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧形用,春花似錦就轧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至镇饺,卻和暖如春携丁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背兰怠。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留李茫,地道東北人揭保。 一個(gè)月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像魄宏,于是被迫代替她去往敵國和親秸侣。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容