您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“好用的Redis運維工具有哪些”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“好用的Redis運維工具有哪些”這篇文章吧。
我們在應用Redis時,經常會面臨的運維工作,包括Redis的運行狀態(tài)監(jiān)控,數(shù)據遷移,主從集群、切片集群的部署和運維。接下來,我就從這三個方面,給你介紹一些工具。我們先來學習下監(jiān)控Redis實時運行狀態(tài)的工具,這些工具都用到了Redis提供的一個監(jiān)控命令:INFO。
Redis本身提供的INFO命令會返回豐富的實例運行監(jiān)控信息,這個命令是Redis監(jiān)控工具的基礎。
INFO命令在使用時,可以帶一個參數(shù)section,這個參數(shù)的取值有好幾種,相應的,INFO命令也會返回不同類型的監(jiān)控信息。我把INFO命令的返回信息分成5大類,其中,有的類別當中又包含了不同的監(jiān)控內容,如下表所示:
在監(jiān)控Redis運行狀態(tài)時,INFO命令返回的結果非常有用。如果你想了解INFO命令的所有參數(shù)返回結果的詳細含義,可以查看Redis官網的介紹。這里,我給你提幾個運維時需要重點關注的參數(shù)以及它們的重要返回結果。
首先,無論你是運行單實例或是集群,我建議你重點關注一下stat、commandstat、cpu和memory這四個參數(shù)的返回結果,這里面包含了命令的執(zhí)行情況(比如命令的執(zhí)行次數(shù)和執(zhí)行時間、命令使用的CPU資源),內存資源的使用情況(比如內存已使用量、內存碎片率),CPU資源使用情況等,這可以幫助我們判斷實例的運行狀態(tài)和資源消耗情況。
另外,當你啟用RDB或AOF功能時,你就需要重點關注下persistence參數(shù)的返回結果,你可以通過它查看到RDB或者AOF的執(zhí)行情況。
如果你在使用主從集群,就要重點關注下replication參數(shù)的返回結果,這里面包含了主從同步的實時狀態(tài)。
不過,INFO命令只是提供了文本形式的監(jiān)控結果,并沒有可視化,所以,在實際應用中,我們還可以使用一些第三方開源工具,將INFO命令的返回結果可視化。接下來,我要講的Prometheus,就可以通過插件將Redis的統(tǒng)計結果可視化。
Prometheus是一套開源的系統(tǒng)監(jiān)控報警框架。它的核心功能是從被監(jiān)控系統(tǒng)中拉取監(jiān)控數(shù)據,結合Grafana工具,進行可視化展示。而且,監(jiān)控數(shù)據可以保存到時序數(shù)據庫中,以便運維人員進行歷史查詢。同時,Prometheus會檢測系統(tǒng)的監(jiān)控指標是否超過了預設的閾值,一旦超過閾值,Prometheus就會觸發(fā)報警。
對于系統(tǒng)的日常運維管理來說,這些功能是非常重要的。而Prometheus已經實現(xiàn)了使用這些功能的工具框架。我們只要能從被監(jiān)控系統(tǒng)中獲取到監(jiān)控數(shù)據,就可以用Prometheus來實現(xiàn)運維監(jiān)控。
Prometheus正好提供了插件功能來實現(xiàn)對一個系統(tǒng)的監(jiān)控,我們把插件稱為exporter,每一個exporter實際是一個采集監(jiān)控數(shù)據的組件。exporter采集的數(shù)據格式符合Prometheus的要求,Prometheus獲取這些數(shù)據后,就可以進行展示和保存了。
Redis-exporter就是用來監(jiān)控Redis的,它將INFO命令監(jiān)控到的運行狀態(tài)和各種統(tǒng)計信息提供給Prometheus,從而進行可視化展示和報警設置。目前,Redis-exporter可以支持Redis 2.0至6.0版本,適用范圍比較廣。
除了獲取Redis實例的運行狀態(tài),Redis-exporter還可以監(jiān)控鍵值對的大小和集合類型數(shù)據的元素個數(shù),這個可以在運行Redis-exporter時,使用check-keys的命令行選項來實現(xiàn)。
此外,我們可以開發(fā)一個Lua腳本,定制化采集所需監(jiān)控的數(shù)據。然后,我們使用scripts命令行選項,讓Redis-exporter運行這個特定的腳本,從而可以滿足業(yè)務層的多樣化監(jiān)控需求。
最后,我還想再給你分享兩個小工具:redis-stat和Redis Live。跟Redis-exporter相比,這兩個都是輕量級的監(jiān)控工具。它們分別是用Ruby和Python開發(fā)的,也是將INFO命令提供的實例運行狀態(tài)信息可視化展示。雖然這兩個工具目前已經很少更新了,不過,如果你想自行開發(fā)Redis監(jiān)控工具,它們都是不錯的參考。
除了監(jiān)控Redis的運行狀態(tài),還有一個常見的運維任務就是數(shù)據遷移。接下來,我們再來學習下數(shù)據遷移的工具。
有時候,我們需要在不同的實例間遷移數(shù)據。目前,比較常用的一個數(shù)據遷移工具是Redis-shake,這是阿里云Redis和MongoDB團隊開發(fā)的一個用于Redis數(shù)據同步的工具。
Redis-shake的基本運行原理,是先啟動Redis-shake進程,這個進程模擬了一個Redis實例。然后,Redis-shake進程和數(shù)據遷出的源實例進行數(shù)據的全量同步。
這個過程和Redis主從實例的全量同步是類似的。
源實例相當于主庫,Redis-shake相當于從庫,源實例先把RDB文件傳輸給Redis-shake,Redis-shake會把RDB文件發(fā)送給目的實例。接著,源實例會再把增量命令發(fā)送給Redis-shake,Redis-shake負責把這些增量命令再同步給目的實例。
下面這張圖展示了Redis-shake進行數(shù)據遷移的過程:
Redis-shake的一大優(yōu)勢,就是支持多種類型的遷移。
首先,它既支持單個實例間的數(shù)據遷移,也支持集群到集群間的數(shù)據遷移。
其次,有的Redis切片集群(例如Codis)會使用proxy接收請求操作,Redis-shake也同樣支持和proxy進行數(shù)據遷移。
另外,因為Redis-shake是阿里云團隊開發(fā)的,所以,除了支持開源的Redis版本以外,Redis-shake還支持云下的Redis實例和云上的Redis實例進行遷移,可以幫助我們實現(xiàn)Redis服務上云的目標。
在數(shù)據遷移后,我們通常需要對比源實例和目的實例中的數(shù)據是否一致。如果有不一致的數(shù)據,我們需要把它們找出來,從目的實例中剔除,或者是再次遷移這些不一致的數(shù)據。
這里,我就要再給你介紹一個數(shù)據一致性比對的工具了,就是阿里云團隊開發(fā)的Redis-full-check。
Redis-full-check的工作原理很簡單,就是對源實例和目的實例中的數(shù)據進行全量比對,從而完成數(shù)據校驗。不過,為了降低數(shù)據校驗的比對開銷,Redis-full-check采用了多輪比較的方法。
在第一輪校驗時,Redis-full-check會找出在源實例上的所有key,然后從源實例和目的實例中把相應的值也都查找出來,進行比對。第一次比對后,redis-full-check會把目的實例中和源實例不一致的數(shù)據,記錄到sqlite數(shù)據庫中。
從第二輪校驗開始,Redis-full-check只比較上一輪結束后記錄在數(shù)據庫中的不一致的數(shù)據。
為了避免對實例的正常請求處理造成影響,Redis-full-check在每一輪比對結束后,會暫停一段時間。隨著Redis-shake增量同步的進行,源實例和目的實例中的不一致數(shù)據也會逐步減少,所以,我們校驗比對的輪數(shù)不用很多。
我們可以自己設置比對的輪數(shù)。具體的方法是,在運行redis-full-check命令時,把參數(shù)comparetimes的值設置為我們想要比對的輪數(shù)。
等到所有輪數(shù)都比對完成后,數(shù)據庫中記錄的數(shù)據就是源實例和目的實例最終的差異結果了。
這里有個地方需要注意下,Redis-full-check提供了三種比對模式,我們可以通過comparemode參數(shù)進行設置。comparemode參數(shù)有三種取值,含義如下:
KeyOutline,只對比key值是否相等;
ValueOutline,只對比value值的長度是否相等;
FullValue,對比key值、value長度、value值是否相等。
我們在應用Redis-full-check時,可以根據業(yè)務對數(shù)據一致性程度的要求,選擇相應的比對模式。如果一致性要求高,就把comparemode參數(shù)設置為FullValue。
好了,最后,我再向你介紹一個用于Redis集群運維管理的工具CacheCloud。
CacheCloud是搜狐開發(fā)的一個面向Redis運維管理的云平臺,它實現(xiàn)了主從集群、哨兵集群和Redis Cluster的自動部署和管理,用戶可以直接在平臺的管理界面上進行操作。
針對常見的集群運維需求,CacheCloud提供了5個運維操作。
下線實例:關閉實例以及實例相關的監(jiān)控任務。
上線實例:重新啟動已下線的實例,并進行監(jiān)控。
添加從節(jié)點:在主從集群中給主節(jié)點添加一個從節(jié)點。
故障切換:手動完成Redis Cluster主從節(jié)點的故障轉移。
配置管理:用戶提交配置修改的工單后,管理員進行審核,并完成配置修改。
當然,作為運維管理平臺,CacheCloud除了提供運維操作以外,還提供了豐富的監(jiān)控信息。
CacheCloud不僅會收集INFO命令提供的實例實時運行狀態(tài)信息,進行可視化展示,而且還會把實例運行狀態(tài)信息保存下來,例如內存使用情況、客戶端連接數(shù)、鍵值對數(shù)據量。這樣一來,當Redis運行發(fā)生問題時,運維人員可以查詢保存的歷史記錄,并結合當時的運行狀態(tài)信息進行分析。
如果你希望有一個統(tǒng)一平臺,把Redis實例管理相關的任務集中托管起來,CacheCloud是一個不錯的工具。
以上是“好用的Redis運維工具有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。