實時監控redis -- redislive與redis踩坑配置

語落心生發表於2018-12-20

先簡要介紹一下 redislive

RedisLive是由python編寫的並且開源的圖形化監控工具,非常輕量級,核心服務部分只包含一個web服務和一個基於redis自帶的info命令以及monitor命令的監控服務,介面上只有一個基於BootStrap的web介面,非常簡潔明瞭。除此之外,它還支援多例項監控,切換方便,而且配置起來也非常容易。監控資訊支援redis儲存和持久化儲存(sqlite)兩種方式。

話不多說。Getting Started for guide

在我們安裝redislive以及編譯安裝redis之後,遇到如下情況,面對這些情況進行逐一排查

  • 編譯完成,移動到新的的redis目錄,啟動資料夾和配置資料夾分別位於/bin/etc

    redislive

  • 當我們連線redis之後,為了避免無法提供對外訪問的方式,開啟redis.conf的protected-mode選項,並且關閉bind所監聽的列表,具體操作見此

  • 在修改完redis.conf之後,我們發現啟動redis-server的報錯如下

    實時監控redis -- redislive與redis踩坑配置

逐一排查

  • 第一條報錯是指需要設定單個使用者開啟的最大檔案數,根據建議設定為10032 ulimit -n 10032

實時監控redis -- redislive與redis踩坑配置

  • 修改後的最大檔案數

    實時監控redis -- redislive與redis踩坑配置

  • 第二條報錯埠占用,kill到對應的pid就行了

    實時監控redis -- redislive與redis踩坑配置

  • 第三條報錯為 To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local

實時監控redis -- redislive與redis踩坑配置

他的意思是讓我們把kernel核心在2.6.38核心增加了Transparent Huge Pages (THP)特性寫入/etc/rc.local。這樣可以降低redisfork子程式的速度

實時監控redis -- redislive與redis踩坑配置

當我們全部解決完redis-server啟動的報錯之後

啟動本地redislive的監控指令碼

實時監控redis -- redislive與redis踩坑配置

猜測是不是redis-server沒有啟動,開啟shell檢視啟動過程

實時監控redis -- redislive與redis踩坑配置

檢視redis.conf配置檔案,官方給出的配置是當設定了bind監聽的ip列表,採取ip白名單機制,其他ip一律無法訪問

實時監控redis -- redislive與redis踩坑配置

  • 註釋掉之後正常啟動redis

實時監控redis -- redislive與redis踩坑配置

在回到redislive啟動監控指令碼觀察,還是無法連線redis

實時監控redis -- redislive與redis踩坑配置

  • 分析存在以下兩個原因

    • redislive獲取不到 redis的使用者程式的記憶體設定used_meomory
    • 可能是python2.7本身的版本獲取 不到更高版本的redis軟體包,導致不支援連線redis
  • 面向原因1 ,啟動redis-cli使用 info meomry

實時監控redis -- redislive與redis踩坑配置

  • 面向原因2,檢視pip下載入的軟體包版本

實時監控redis -- redislive與redis踩坑配置

  • 排除原因1,檢視線上redis伺服器版本為3.2.6,本地pip安裝的redis3.0.7
    • 嘗試pip install redis==3.2.6

實時監控redis -- redislive與redis踩坑配置

Solution 建議排查完redis的記憶體調優設定之後,注意一下本地redislive所使用的pip版本,因為 redislive編寫的python指令碼官方是用python2.7.5寫的,請配置時一定要注意

祝各位朋友快樂的編碼!

相關文章