文章目錄
RedisInsight:監控Redis
使用基於瀏覽器的管理界面檢查Redis數據、監控健康狀況並執行運行時服務器配置,以進行Redis部署。
探索你的Redis數據並與之交互 | 減少Redis內存使用 | 實時監控命令 | 管理你的Redis集羣 |
---|---|---|---|
使用基於Web的CLI,掃描和查看你的Redis鍵並執行CRUD操作。 | 分析和優化Redis使用的內存。 | 通過跟蹤熱鍵和頂級命令來分析應用程序使用Redis的方式。 | 可視化地執行、分析、管理和監控你的Redis集羣。 |
1.簡介
RedisInsight
提供以下功能:
- 易於使用基於瀏覽器的界面來搜索鍵、查看和編輯數據
- 唯一支持
Redis
集羣的GUI工具 - 支持基於
SSL/TLS
的連接 - 運行內存分析
2.安裝RedisInsight
2.1下載RedisInsight
下載RedisInsight Download,選擇Linux版本。
# 創建目錄存放文件
[solang@solang ~]$ mkdir /usr/local/redisinsight-1.4.0
[solang@solang ~]$ cp redisinsight-linux64-1.4.0 /usr/local/redisinsight-1.4.0/
[solang@solang ~]$ cd /usr/local/redisinsight-1.4.0/
# 賦予執行權限
[solang@solang redisinsight-1.4.0]$ chmod +x redisinsight-linux64-1.4.0
2.2配置RedisInsight
可以設置以下環境變量來配置RedisInsight
:
-
REDISINSIGHT_PORT
——默認情況下,RedisInsight
監聽端口8001。要將RedisInsight
綁定到其它端口,請設置REDISINSIGHT_PORT
環境變量。 -
REDISINSIGHT_HOST
——默認情況下,RedisInsight
綁定到IP地址0.0.0.0
。要使RedisInsight
綁定到其它主機,請設置REDISINSIGHT_HOST
環境變量。 -
REDISINSIGHT_HOME_DIR
——默認情況下,RedisInsight
將應用程序數據(例如本地數據庫、日誌文件和快照文件)存儲在機器主目錄中的~/.redisinsight
和Docker
容器的/db
目錄中。要更改此目錄,請設置REDISINSIGHT_HOME_DIR
環境變量。 -
LOG_DIR
——默認情況下,RedisInsight
將日誌文件存儲在你的主目錄(REDISINSIGHT_HOME_DIR
)中。要讓RedisInsight
將日誌文件存儲在其它目錄中,請設置LOG_DIR
環境變量。
修改REDISINSIGHT_HOST
和REDISINSIGHT_HOME_DIR
,若8001端口和其它應用端口衝突可自行修改。
[solang@solang redisinsight-1.4.0]$ export REDISINSIGHT_HOST=192.168.86.100
[solang@solang redisinsight-1.4.0]$ export REDISINSIGHT_HOME_DIR=/usr/local/redisinsight-1.4.0/.redisinsight
REDISINSIGHT_HOME_DIR
也可不修改,默認會放在~/.redisinsight
目錄。
注: 這樣配置只會在當前Shell終端生效,可在~/.bash_profile
中指定路徑。
[solang@solang ~]$ vi .bash_profile
export REDISINSIGHT_HOST=192.168.86.100
export REDISINSIGHT_HOME_DIR=/usr/local/redisinsight-1.4.0/.redisinsight
[solang@solang ~]$ source .bash_profile
2.3運行RedisInsight
# 後臺運行
[solang@solang redisinsight-1.4.0]$ nohup redisinsight-linux64-1.4.0 &
# 前臺運行
[solang@solang redisinsight-1.4.0]$ ./redisinsight-linux64-1.4.0
[solang@solang ~]$ ps -ef | grep redis
solang 14964 1 0 May09 ? 00:05:11 redis-server 127.0.0.1:6379
solang 17699 17675 2 09:46 pts/2 00:00:19 redisinsight-linux64-1.4.0
solang 17703 17699 0 09:47 pts/2 00:00:07 redisinsight-linux64-1.4.0
solang 17744 5594 0 10:01 pts/1 00:00:00 grep --color=auto redis
啓動之後,瀏覽器訪問http://192.168.86.100:8001/,勾選後點擊CONFIRM。
3.使用RedisInsight
3.1添加Redis
3.1.1添加單機Redis
1.點擊ADD REDIS DATABASE,選擇Add Database
2.輸入Redis的信息
Host:Redis的主機名,例如redis.acme.com
。如果你的Redis服務跑在本地機器,你可以輸入127.0.0.1
或localhost
。
如果Redis服務沒有設置用戶名和密碼可以不填。
3.點擊ADD REDIS DATABASE後顯示
4.鼠標點擊新添加的redis實例
其它Redis集羣、Redis哨兵和使用TLS認證方式的添加請參見官方Adding a Redis Database。
3.2自動發現Redis
參見Automatically Discovering Databases
3.3以編程方式添加Redis
參見Adding Databases Programmatically
3.4性能指標
RedisInsight
的Overview
通過圖形表示爲你提供有關Redis實例的快速概覽。它顯示實例的總內存和鍵數。接收的連接數、已連接的客戶端、網絡輸入和輸出以及各種其它信息。
3.5集羣管理
RedisInsight
的Cluster Management
爲你提供了一個GUI來輕鬆管理你的Redis集羣。集羣管理提供了三種不同的視圖,用於分析你的集羣體系結構。
1.Master Layout——此視圖僅包含有關Redis集羣中存在的Master的信息。存在的信息是——插槽範圍、主機、端口以及從redis INFO
命令收集的少量指標。
2.Master-Replica Layout——此視圖包含主及其它們的副本。該視圖包含有關主服務器和副本服務器的插槽範圍、主機、端口等的信息。
3.Physical Layout——此視圖爲你提供服務器的表示形式,即根據它們所駐留的物理服務器對所有節點進行分組。
集羣管理不僅可以爲你提供集羣的表示,而且還可以通過以下操作幫助你管理集羣。
1.Cluster Rebalance集羣重新平衡——集羣重新平衡可幫助你根據集羣節點之間的插槽百分比遷移所有插槽。
2.Manual Resharding手動重新分片——手動重新分片要求具有插槽範圍的源和目標節點。使用此功能,只需單擊幾下鼠標即可將指定的插槽範圍從源節點遷移到目標節點。
3.Add Node to Cluster將節點添加到集羣——集羣管理允許你將一個新節點作爲主節點添加到集羣中。該節點應爲空,並且應啓用集羣。
4.Manual Failover手動故障轉移——使用此功能,你可以手動故障轉移一個副本節點以成爲主節點。
5.Delete Node in Cluster刪除集羣中的節點——使用此功能可以刪除一個從屬節點。我們不支持刪除主節點,因爲直接刪除主節點可能會有問題。
6.Make a node Replica of Master創建主節點的節點副本——集羣管理包含一項功能,可以使所選節點成爲主節點的副本。如果該節點已經是副本,則無需執行任何操作。如果節點是主節點,則該節點應該爲空,即——沒有哈希槽和鍵。
7.Cluster Health Monitoring & Alerts集羣健康監控和警報——集羣管理不斷爲你的集羣運行健康檢查,並在集羣出現任何問題時返回警報。如果主服務器和從服務器在同一臺服務器上,它也會提供警報。可以使用"Fix Cluster"功能修復集羣的警報。
3.6命令行
RedisInsight
的CLI
允許你針對Redis服務器運行命令。你無需記住語法——集成的幫助將顯示所有參數並在你鍵入時驗證命令。
3.7內存分析
RedisInsight
內存分析可幫助你分析Redis實例,並有助於減少內存使用量和提高應用程序性能。可以通過兩種方式進行分析:
1.聯機模式——在此模式下,RedisInsight
從連接的Redis實例下載一個rdb
文件,並對其進行分析以創建一個臨時文件,其中包含分析所需的所有鍵和元數據。如果存在主從連接,則RedisInsight
從從服務器而不是從主服務器下載轉儲dump,以避免影響主服務器的性能。
2.脫機模式——在此模式下,RedisInsight
分析你的Redis備份文件。這些文件可以存在於你的系統中,也可以存在於s3中。RedisInsight
接受提供給它的rdb
文件列表,並分析這些文件中所需的所有信息,而不是從你的redis實例下載它。爲了分析存儲在s3中的備份文件,RedisInsight
應該對存儲文件的s3存儲桶具有ReadOnly
權限。
s3路徑需要使用路徑語法,而不是虛擬主機語法:
https://s3.<region>.amazonaws.com/<bucket name>/<object key name>
例如:https://s3.us-east-1.amazonaws.com/my-bucket/mydb.rdb.tgz
注: s3即亞馬遜的雲服務器,類似阿里雲服務器。
3.7.1在實例上運行內存分析
導航到Memory Analysis
>Overview
,然後單擊"Analyze Now"按鈕。你應該看到一個帶有兩個選項的對話框——Offline Analysis和Online Analysis。
如果你有要分析的RDB備份文件,請選擇脫機分析方法。我們可以進行在線分析。
內存分析可能需要幾分鐘,並且在很大程度上取決於數據的大小。
內存分析完成後,你可以在"Memory Analysis"下查看有關內存消耗的各種統計信息。Overview概覽頁面爲你提供了內存使用情況的高級分類。
3.7.2內存概覽
內存概述通過圖形表示爲你提供Redis實例的概覽。按數據類型的內存分解顯示了基於數據類型的鍵的總體大小和計數分佈。過期分析提供了鍵如何配置過期的概覽。可能有一些永不過期的鍵。
3.7.3鍵空間摘要
"Keyspace Summary"按內存的遞減順序從一組鍵中標識出頂級鍵模式。這可以幫助你確定哪些鍵模式正在佔用你的大部分內存,以及該模式的頂級鍵是什麼。你可以添加自己的鍵模式,以識別它們的內存使用情況以及該鍵模式的頂級鍵。
3.7.4建議
RedisInsight
提供了有關如何保存內存的建議。這些建議是根據你的Redis實例專門制定的。這些建議是根據行業標準和我們自己的經驗形成的。
3.7.5內存分析
Memory Analyzer使你可以搜索一個或多個鍵模式,並獲得有關其與其它統計信息的相關信息。你可以使用我們的高級過濾器功能應用各種過濾和聚合。
3.7.6內存分析的工作原理
這是對快照分析過程中發生的事情的簡要描述:單擊analyze-memory
按鈕時,它會連接到redis實例並獲取數據庫的時間點快照。這可以通過兩種方式實現:
1.使用SYNC命令。這是首選方法,並在可能的情況下使用。Redis有一個SYNC
命令,從服務器用來與主服務器同步。我們的代理假裝是一個從服務器,並將SYNC
命令發送到實例,該實例使用其所有數據進行響應,就像它試圖與一個從服務器同步一樣。
2.使用DUMP命令。雲提供商不支持SYNC
命令,因此該方法無效。但是它們確實支持DUMP
命令。此命令以Redis特定的格式序列化鍵的值並返回它。我們迭代掃描所有鍵,轉儲(dump)值,並將它們連接以生成RDB
。此方法有兩個注意事項,其中包括:序列化格式是不透明且非標準的,並且並非所有鍵都在同一時間被轉儲,意味着自第一個鍵轉儲以來,某些鍵的值可能已更改,因此這並不是一個精確的時間點快照。
在完成dump之後,按照上述兩種方法之一,我們將對dump進行分析,計算內存統計信息和發現鍵模式。這裏發生的事情類似於開源redis-rdb-tools所做的事情。此過程的結果是一個RSNAP文件(代表redis快照),該文件包含鍵名、內存統計信息以及有關dump的其它生成信息,但重要的是,不包含鍵本身的值。dump文件從未真正離開代理運行所在的系統。
在RSNAP
文件完全生成後,將其上傳到我們的服務器,在服務器上進行進一步分析以生成建議。目前,我們有超過20個建議,可爲你提供有關如何優化Redis數據庫的簡單建議。
因此,這是RedisInsight
幕後工作的簡要概述。我們一直在不斷改進流程,並且在整個流程的確切機制方面來回反覆討論了很多次。不言而喻,該過程一直在演變,甚至在不久的將來看起來可能會大不相同。我們將嘗試保持此頁面進行所有重大更改的更新,因此請返回此處或關注我們的博客以保持更新。
3.8分析器
RedisInsight
的Profiler
運行Redis MONITOR
命令,該命令分析發送到redis實例上的每個命令。它解析MONITOR
命令的輸出並生成彙總視圖。在概要分析期間,將監控發送到redis實例的所有命令。
Profiler提供有關已處理命令的數量、命令/秒和已連接客戶端數量的信息。它還提供有關頂級前綴、頂級鍵和頂級命令的信息。
Start profiling——開始分析。
Stop Profiling——停止分析器,即監控命令。
停止分析處理後
注意: 運行Monitor命令對生產服務器的性能是危險的,因此,如果用戶未在這兩者之間停止分析器,則分析器運行的最長時間爲5分鐘。這是爲了避免服務器過載。
3.9慢日誌
RedisInsight
的Slowlog
是你的Redis實例的慢操作列表。這些可用於診斷性能問題。列表中的每個條目都顯示命令、持續時間和時間戳。超過slowlog-log-slower-than
微秒的所有事務被記錄,直到slowlog-max-len
的最大值爲止,之後將丟棄較舊的條目。
Clear Slowlog——清除慢日誌從你的Redis服務器清除所有慢日誌條目。
3.10配置
RedisInsight
的Configuration
允許使用易於使用的配置編輯器來更新你的Redis實例的配置。所示的每個鍵都對應於Redis配置文件中的一個條目。無需重新啓動服務器即可應用大多數配置設置。此外,它還提供了一個選項,將你的當前設置重寫Rewrite
到redis.conf
文件中,以便即使服務器重新啓動,也可以保留這些設置。
配置也分爲以下類別——高級配置、安全性、Lua腳本等,以使配置編輯更容易。
3.11在Redis中查看Java序列化對象
RedisInsight
檢測Java序列化對象,並將其與完全限定的類名一起轉換爲格式良好的JSON對象。
存儲什麼並不重要。無論是hibernate對象、用戶會話還是普通的Java對象,RedisInsight
反向工程都會將其友好地展示給你。
只是爲了好玩,我們嘗試了沒有格式化的對象的外觀。全是垃圾。😃
一圖勝千言,RedisInsight
進行Redis的增刪改查非常的方便。
3.12RedisInsight故障排除
當RedisInsight
的行爲與預期不符時,請使用以下步驟查看問題所在。
有關其它配置選項,例如更改默認端口,請轉到:2.2配置RedisInsight
3.12.1日誌
要獲取有關RedisInsight
中錯誤的詳細信息,你可以在以下位置查看擴展名爲.log
的日誌文件:
- Docker:在容器內的
/db/
目錄中。 - Mac:在
/Users/<your-username>/.redisinsight
目錄中. - Windows:在
C:\Users\<your-username>\.redisinsight
目錄中. - Linux:在
/home/<your-username>/.redisinsight
目錄中.
注意——你可以在不受官方支持的操作系統上安裝
RedisInsight
,但其行爲可能與預期不符。
我們很高興在[email protected]收到你的反饋。
當然,由於我們指定了REDISINSIGHT_HOME_DIR=/usr/local/redisinsight-1.4.0/.redisinsight
,所以日誌在/usr/local/redisinsight-1.4.0/.redisinsight
目錄下查看。
本文參考:
RedisInsight
RedisInsight Documentation
Configuring RedisInsight