[Redis]使用opserver來監控redis的狀況

[Redis]使用opserver來監控redis的狀況

前言

之前有寫過關於opserver的文章,有興趣者可參考(https://dotblogs.com.tw/kinanson/2018/03/07/103038),其實opserver可以監控很多東西,在此就要來研究一下,如何使用opserver監控redis,而且我們如何知道這些監控的數據是什麼意思呢?

為opserver開啟redis的監控功能

其實我們只要在config的資料夾裡面找到RedisSettings.example.json,並且改成RedisSettings.json之後,並加上自己公司相關參數,就能監控redis了,算是挺簡單,example如下

/* Configuration for the Redis dashboard */
{
  "Servers": [   
    {
      "name": "172.16.45.34",
      "instances": [
        {
          "name": "DEV-Redis",
          "port": 9379
          //"password": "superSecret", // Instance has a password
          //"useSSL": "true" // Connect via SSL (not built into redis itself - default is false)
        }
      ]
    },
    {
      "name": "172.17.23.89",
      "instances": [
        {
          "name": "qat-redis",
          "port": 9379
          //"password": "superSecret", // Instance has a password
          //"useSSL": "true" // Connect via SSL (not built into redis itself - default is false)
        }
      ]
    }
  ]
}

為了方便展示,筆者使用的是公司的測試環境來做展示,當我們完成設定,並開啟畫面之後,就會看到如圖示例

我們點進去可以看到更詳細的訊息,筆者就做個筆記來寫一下我認知上監控的數據

圖中有標記數字的說明如下

(1)Hits-快取命中:

所指定報告間隔期間的成功金鑰查閱數目

 

(2)Misses-快取錯失:

所指定報告間隔期間的失敗金鑰查閱數目。 快取遺漏不一定表示快取發生問題。 例如,使用另行快取程式設計模式時,應用程式會先在快取中尋找項目。 如果項目不存在 (快取遺漏),項目會從資料庫中擷取,並在下次新增至快取中。 快取遺漏是另行快取程式設計模式的正常行為。 如果快取遺漏數目高於預期,請檢查可填入且讀取自快取的應用程式邏輯。 如果因記憶體壓力而正在收回快取中的項目,則可能會有一些快取遺漏,但監視記憶體壓力的較佳度量是 Used Memory 或 Evicted Keys

 

(3)Evictions-快取淘汰:

可以設定maxmemory和選擇memory-policy的規則,規則有以下幾種選項

noeviction:默認策略,不淘汰,如果內存已滿,添加數據是報錯。
allkeys-lru:在所有鍵中,選取最近最少使用的數據拋棄。
volatile-lru:在設置了過期時間的所有鍵中,選取最近最少使用的數據拋棄。
allkeys-random:在所有鍵中,隨機拋棄。
volatile-random:在設置了過期時間的所有鍵,隨機拋棄。
volatile-ttl:在設置了過期時間的所有鍵,拋棄存活時間最短的數據。
 

(4) Tiebreaker -確定首選主機:

通常 StackExchange.Redis 都會自動解析 主/從節點。然而如果你不使用諸如redis-sentinel 或redis 集群之類的管理工具,有時你會有多個主節點(例如,在重置節點以進行維護時,它可能會作為主節點重新顯示在網絡上)。為了幫助解決這個問題,StackExchange.Redis 可以使用 tie-breaker 的概念 - 這僅在檢測到多個主節點時使用(不包括需要多個主節點的redis集群)。為了與 BookSleeve 兼容,tiebreaker 使用默認的key為 "__Booksleeve_TieBreak" (總是在數據庫0中)。這用作粗略的投票機制,以幫助確定首選主機,以便能夠按正確的路由工作。

 

(5)Fragmentaion-記憶體碎片:

記憶體碎片率稍大於1是合理的,這個值表示記憶體碎片率比較低,也說明redis沒有發生記憶體交換。但如果記憶體碎片率超過1.5,那就說明Redis消耗了實際需要物理記憶體的150%,其中50%是記憶體碎片率,若是記憶體碎片率低於1的話,說明操作系統正在進行記憶體交換。記憶體交換會引起非常明顯的響應延遲。

 

(6)AOF:

AOF 持久化記錄服務器執行的所有寫操作命令,並在服務器啟動時,通過重新執行這些命令來還原數據集。 AOF 文件中的命令全部以 Redis 協議的格式來保存,新命令會被追加到文件的末尾。

使用 AOF 持久化會讓 Redis 變得非常耐久,你可以設置不同的 fsync 策略,比如無 fsync ,每秒鐘一次 fsync ,或者每次執行寫入命令時 fsync 。 AOF 的默認策略為每秒鐘 fsync 一次,在這種配置下,Redis 仍然可以保持良好的性能,並且就算發生故障停機,也最多只會丟失一秒鐘的數據。

(7)AOF Delayed fsyncs:

當要執行sync備份時,如果之前的sync未結束,就delay的總數量

(8)Keyspace:

可以針對資料庫的鍵和值有影響的操作事件發出pub,或者延遲時間發出pub,2.8.0後推出的redis功能。

上述如有錯誤,再請糾正筆者哦。