利用ganglia監(jiān)控redis的最新解決方法
前言
Ganglia主要用來監(jiān)控系統(tǒng)性能的軟件,通過曲線很容易見到每個(gè)節(jié)點(diǎn)的工作狀態(tài),對(duì)合理調(diào)整,分配系統(tǒng)資源,提高系統(tǒng)整體性能起到重要作用,支持瀏覽器方式訪問,但不能監(jiān)控節(jié)點(diǎn)硬件技術(shù)指標(biāo)。Ganglia是分布式的監(jiān)控系統(tǒng)。
Redis現(xiàn)在在業(yè)務(wù)中應(yīng)用已經(jīng)很廣泛了,但是如何監(jiān)控redis,實(shí)時(shí)的觀察redis的性能,在搜索引擎搜索“ganglia監(jiān)控redis”,發(fā)現(xiàn)都是13年的老文章,都是說要到https://github.com/ganglia/gmond_python_modules這個(gè)第三方插件庫(kù)下載redis監(jiān)控模塊
解決方法
但是我發(fā)現(xiàn)gmond_python_modules
這個(gè)repo下面已經(jīng)沒有redis模塊了,于是查看git log
,發(fā)現(xiàn)redis模塊已經(jīng)集成到ganglia源碼包里了
于是下載了源碼包,搜索之后發(fā)現(xiàn)redis模塊位于gmond/python_modules/db/redis.py
,配置文件在gmond/python_modules/conf.d/redis.pyconf.disabled
。
修改配置文件里的host和port兩個(gè)參數(shù)為要監(jiān)控redis的ip和端口,然后將兩個(gè)文件復(fù)制到對(duì)應(yīng)的目錄下。(通常redis.pyconf
復(fù)制到ganglia安裝目錄/etc/conf.d/
下,redis.py復(fù)制到ganglia安裝目錄/lib64/ganglia/python_modules
)
重啟gmond,可以看到有redis的圖出來了,但是數(shù)據(jù)卻都是空的。
于是停掉gmond,使用gmond -f -d 1
啟用調(diào)試模式,發(fā)現(xiàn)redis.py報(bào)錯(cuò)
[PYTHON] Can't call the metric handler function for [connected_clients] in the python module [redis]. Traceback (most recent call last): File “/opt/gmond/lib64/ganglia/python_modules/redis.py”, line 21, in metric_handler n, v = line.split(“:”) ValueError: need more than 1 value to unpack
查看上下文代碼
for line in info.splitlines()[1:]: if "" == line: continue n, v = line.split(":")
大概意思是把redis info
命令輸出的每一個(gè)非空行用:分割,但是我安裝的redis版本是2.8+,info命令會(huì)輸出類似#Server這樣的注釋,這樣就導(dǎo)致按:分割失敗,所以python報(bào)錯(cuò),gmond取不到值。
所以解決方案也很簡(jiǎn)單,把上面那段代碼修改成如下即可,也就是跳過空行和以#開頭的行
for line in info.splitlines()[1:]: if "" == line or line[0] == '#': continue n, v = line.split(":")
再重啟gmond,過一會(huì)就可以在ganglia看到數(shù)據(jù)了
==========================================
看了下ganglia在github上的代碼,發(fā)現(xiàn)最新代碼已經(jīng)把這個(gè)bug修復(fù)了,只不過還沒有release
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
Redis之RedisTemplate配置方式(序列和反序列化)
這篇文章主要介紹了Redis之RedisTemplate配置方式(序列和反序列化),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03Redis與MySQL數(shù)據(jù)一致性問題的策略模式及解決方案
開發(fā)中,一般會(huì)使用Redis緩存一些常用的熱點(diǎn)數(shù)據(jù)用來減少數(shù)據(jù)庫(kù)IO,提高系統(tǒng)的吞吐量,本文將給大家介紹了Redis與MySQL數(shù)據(jù)一致性問題的策略模式及解決方案,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07redis 實(shí)現(xiàn)登陸次數(shù)限制的思路詳解
這篇文章主要介紹了redis 實(shí)現(xiàn)登陸次數(shù)限制的思路詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08設(shè)置Redis最大占用內(nèi)存的實(shí)現(xiàn)
本文主要介紹了設(shè)置Redis最大占用內(nèi)存的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05Redis+PHP實(shí)現(xiàn)用戶消息推送每天最多通知2次的功能
在開發(fā)應(yīng)用程序中,經(jīng)常需要向用戶推送消息通知,但是為了避免過多的打擾用戶,我們希望限制每天最多通知2次,本篇博文將介紹如何使用PHP和Redis實(shí)現(xiàn)這一功能,文中有詳細(xì)的代碼示例,需要的朋友可以參考下2023-10-10