工作中Redis有哪些好用的運維工具
來源:程式設計師wayn
工作中使用 Redis 時,如果大家公司沒有專業運維,可能開發人員就會面臨這些運維的工作,包括 Redis 的執行狀態監控,資料遷移,主從叢集、切片叢集的部署和運維等等。本文我就從這三個方面,給大家介紹一些工具,幫助大家更好的運維管理 Redis。
本文目錄如下,
最基本的監控命令:INFO 命令
我們先來學習下監控 Redis 實時執行狀態的工具,這些工具都用到了 Redis 提供的一個監控命令:INFO。
Redis 本身提供的 INFO 命令會返回豐富的例項執行監控資訊,這個命令是 Redis 監控工具的基礎。
INFO 命令在使用時,可以帶一個引數 section,這個引數的取值有好幾種,相應的,INFO 命令也會返回不同型別的監控資訊。我把 INFO 命令的返回資訊分成 5 大類,其中,有的類別當中又包含了不同的監控內容,如下表所示:
在監控 Redis 執行狀態時,INFO 命令返回的結果非常有用。如果你想了解 INFO 命令的所有引數返回結果的詳細含義,可以檢視 Redis 官網的介紹。這裡,我給你提幾個運維時需要重點關注的引數以及它們的重要返回結果。
首先,無論你是執行單例項或是叢集,我建議你重點關注一下 stat、commandstat、cpu 和 memory 這四個引數的返回結果,這裡麵包含了命令的執行情況(比如命令的執行次數和執行時間、命令使用的 CPU 資源),記憶體資源的使用情況(比如記憶體已使用量、記憶體碎片率),CPU 資源使用情況等,這可以幫助我們判斷例項的執行狀態和資源消耗情況。
另外,當你啟用 RDB 或 AOF 功能時,你就需要重點關注下 persistence 引數的返回結果,你可以透過它檢視到 RDB 或者 AOF 的執行情況。
如果你在使用主從叢集,就要重點關注下 replication 引數的返回結果,這裡麵包含了主從同步的實時狀態。
不過,INFO 命令只是提供了文字形式的監控結果,並沒有視覺化,所以,在實際應用中,我們還可以使用一些第三方開源工具,將 INFO 命令的返回結果視覺化。接下來,我要講的 Prometheus,就可以透過外掛將 Redis 的統計結果視覺化。
面向 Prometheus 的 Redis-exporter 監控
Prometheus 是一套開源的系統監控報警框架。它的核心功能是從被監控系統中拉取監控資料,結合 Grafana 工具,進行視覺化展示。而且,監控資料可以儲存到時序資料庫中,以便運維人員進行歷史查詢。同時,Prometheus 會檢測系統的監控指標是否超過了預設的閾值,一旦超過閾值,Prometheus 就會觸發報警。
Prometheus 官網地址:
對於系統的日常運維管理來說,這些功能是非常重要的。而 Prometheus 已經實現了使用這些功能的工具框架。我們只要能從被監控系統中獲取到監控資料,就可以用 Prometheus 來實現運維監控。
Prometheus 正好提供了外掛功能來實現對一個系統的監控,我們把外掛稱為 exporter,每一個 exporter 實際是一個採集監控資料的元件。exporter 採集的資料格式符合 Prometheus 的要求,Prometheus 獲取這些資料後,就可以進行展示和儲存了。
Redis-exporter 就是用來監控 Redis 的,它將 INFO 命令監控到的執行狀態和各種統計資訊提供給 Prometheus,從而進行視覺化展示和報警設定。目前,Redis-exporter 可以支援 Redis 2.0 至 6.0 版本,適用範圍比較廣。
Redis-exporter 地址:
除了獲取 Redis 例項的執行狀態,Redis-exporter 還可以監控鍵值對的大小和集合型別資料的元素個數,這個可以在執行 Redis-exporter 時,使用 check-keys 的命令列選項來實現。
此外,我們可以開發一個 Lua 指令碼,定製化採集所需監控的資料。然後,我們使用 scripts 命令列選項,讓 Redis-exporter 執行這個特定的指令碼,從而可以滿足業務層的多樣化監控需求。
除了監控 Redis 的執行狀態,還有一個常見的運維任務就是資料遷移。接下來,我們再來學習下資料遷移的工具。
資料遷移工具 Redis-shake
有時候,我們需要在不同的例項間遷移資料。目前,比較常用的一個資料遷移工具是 Redis-shake,這是阿里雲 Redis 和 MongoDB 團隊開發的一個用於 Redis 資料同步的工具。
Redis-shake 地址:
Redis-shake 的基本執行原理,是先啟動 Redis-shake 程式,這個程式模擬了一個 Redis 例項。然後,Redis-shake 程式和資料遷出的源例項進行資料的全量同步。
這個過程和 Redis 主從例項的全量同步是類似的。
源例項相當於主庫,Redis-shake 相當於從庫,源例項先把 RDB 檔案傳輸給 Redis-shake,Redis-shake 會把 RDB 檔案傳送給目的例項。接著,源例項會再把增量命令傳送給 Redis-shake,Redis-shake 負責把這些增量命令再同步給目的例項。
下面這張圖展示了 Redis-shake 進行資料遷移的過程:
Redis-shake 的一大優勢,就是支援多種型別的遷移。
首先,它既支援單個例項間的資料遷移,也支援叢集到叢集間的資料遷移。
其次,有的 Redis 切片叢集(例如 Codis)會使用 proxy 接收請求操作,Redis-shake 也同樣支援和 proxy 進行資料遷移。
另外,因為 Redis-shake 是阿里雲團隊開發的,所以,除了支援開源的 Redis 版本以外,Redis-shake 還支援雲下的 Redis 例項和雲上的 Redis 例項進行遷移,可以幫助我們實現 Redis 服務上雲的目標。
在資料遷移後,我們通常需要對比源例項和目的例項中的資料是否一致。如果有不一致的資料,我們需要把它們找出來,從目的例項中剔除,或者是再次遷移這些不一致的資料。
這裡,我就要再給你介紹一個資料一致性比對的工具了,就是阿里雲團隊開發的 Redis-full-check。
Redis-full-check 的工作原理很簡單,就是對源例項和目的例項中的資料進行全量比對,從而完成資料校驗。不過,為了降低資料校驗的比對開銷,Redis-full-check 採用了多輪比較的方法。
在第一輪校驗時,Redis-full-check 會找出在源例項上的所有 key,然後從源例項和目的例項中把相應的值也都查詢出來,進行比對。第一次比對後,redis-full-check 會把目的例項中和源例項不一致的資料,記錄到 sqlite 資料庫中。
從第二輪校驗開始,Redis-full-check 只比較上一輪結束後記錄在資料庫中的不一致的資料。
為了避免對例項的正常請求處理造成影響,Redis-full-check 在每一輪比對結束後,會暫停一段時間。隨著 Redis-shake 增量同步的進行,源例項和目的例項中的不一致資料也會逐步減少,所以,我們校驗比對的輪數不用很多。
我們可以自己設定比對的輪數。具體的方法是,在執行 redis-full-check 命令時,把引數 comparetimes 的值設定為我們想要比對的輪數。
等到所有輪數都比對完成後,資料庫中記錄的資料就是源例項和目的例項最終的差異結果了。
這裡有個地方需要注意下,Redis-full-check 提供了三種比對模式,我們可以透過 comparemode 引數進行設定。
comparemode 引數有三種取值,含義如下:
KeyOutline,只對比 key 值是否相等; ValueOutline,只對比 value 值的長度是否相等; FullValue,對比 key 值、value 長度、value 值是否相等。
我們在應用 Redis-full-check 時,可以根據業務對資料一致性程度的要求,選擇相應的比對模式。如果一致性要求高,就把 comparemode 引數設定為 FullValue。
好了,最後,我再向你介紹一個用於 Redis 叢集運維管理的工具 CacheCloud。
叢集管理工具 CacheCloud
CacheCloud 是搜狐開發的一個面向 Redis 運維管理的雲平臺,它實現了主從叢集、哨兵叢集和 Redis Cluster 的自動部署和管理,使用者可以直接在平臺的管理介面上進行操作。
CacheCloud 地址:
針對常見的叢集運維需求,CacheCloud 提供了 5 個運維操作。
下線例項:關閉例項以及例項相關的監控任務。 上線例項:重新啟動已下線的例項,並進行監控。 新增從節點:在主從叢集中給主節點新增一個從節點。 故障切換:手動完成 Redis Cluster 主從節點的故障轉移。 配置管理:使用者提交配置修改的工單後,管理員進行稽核,並完成配置修改。
當然,作為運維管理平臺,CacheCloud 除了提供運維操作以外,還提供了豐富的監控資訊。
CacheCloud 不僅會收集 INFO 命令提供的例項實時執行狀態資訊,進行視覺化展示,而且還會把例項執行狀態資訊儲存下來,例如記憶體使用情況、客戶端連線數、鍵值對資料量。這樣一來,當 Redis 執行發生問題時,運維人員可以查詢儲存的歷史記錄,並結合當時的執行狀態資訊進行分析。
如果你希望有一個統一平臺,把 Redis 例項管理相關的任務集中託管起來,CacheCloud 是一個不錯的工具。
總結一下
本文中我給大家介紹了幾種 Redis 的運維工具,我們先了解了 Redis 的 INFO 命令,這個命令是監控工具的基礎,監控工具都會基於 INFO 命令提供的資訊進行二次加工。
我們還學習了 3 種用來監控 Redis 實時執行狀態的運維工具,分別是 Redis-exporter、redis-stat 和 Redis Live。
關於資料遷移,我們既可以使用 Redis-shake 工具,也可以透過 RDB 檔案或是 AOF 檔案進行遷移。
最後就是叢集管理,我們可以使用 CacheCloud 平臺,透過管理介面對 Redis 叢集做管理和部署。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70027826/viewspace-3006577/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【IT運維】運維告警方式有哪些?哪個工具好用?運維
- 國內IT市場還有發展嗎?有哪些創新好用的IT運維工具可以推薦?運維
- 運維釋出工作中會用到哪些變更工具?Linux運維Linux
- 有哪些好用的工作彙報工具
- 運維工作中的指令碼化和工具化運維指令碼
- Redis效能分析和運維工具Redis運維
- 常見的IT自動化運維工具有哪些?推薦一款好用的?運維
- redis工具擴容收縮運維工具Redis運維
- 工作中常用的運維命令運維
- 有哪些特別好用的 app 測試工具?APP
- ftp工具,6款好用的ftp工具,來自運維人員好用的ftp工具推薦。FTP運維
- Linux運維工作方向有哪些?Linux運維
- Java程式設計工具有哪些比較好用?常用的有哪些?Java程式設計
- 當前比較好用的golang的redis客戶端有哪些?GolangRedis客戶端
- rsync檔案同步工具常見模式有哪些?linux運維學模式Linux運維
- 這 4 種 Redis 常用運維工具都不會?你算啥運維人Redis運維
- 程式碼審計難學嗎?有哪些好用的工具?
- [Erlang03]Erlang有哪些好用的靜態分析工具?
- 初學者如何學習Linux運維?影響運維的有哪些因素?Linux運維
- 不清楚IT運維具體工作有哪些?運維工作方向大科普!運維
- Linux運維必備技術有哪些?運維要學開發Linux運維
- MySQL的儲存方式有哪些?linux運維需要哪些知識MySqlLinux運維
- Linux運維工程師常用的工具有哪些?Linux運維工程師
- Web前端培訓:有哪些好用的前端開發工具呢?Web前端
- 什麼是運維?維職業發展方向有哪些?運維
- 如何做好企業IT運維工作?雲端計算運維的工作內容有哪些?運維
- 好用的線上看板工具有哪些
- Linux的好處有哪些?Linux運維學習Linux運維
- 基礎運維常見工作內容有哪些?運維
- 學習Linux運維有哪些學習方法?Linux運維
- ELK在大資料運維中,有哪些作用?大資料運維
- 好用的Python編輯器有哪些?五大工具!Python
- 【IT運維】Linux運維需要掌握哪些技能?運維Linux
- redis運維手冊Redis運維
- 轉換軟體有哪些好用的?
- 【Linux入門】Linux運維必學的命令有哪些?Linux運維
- Linux發行版本常見的有哪些?Linux運維Linux運維
- linux運維是做什麼工作的?有哪些崗位?Linux運維