監控Redis在CentOS上的運行狀態和性能,需結合自帶工具(快速排查)、第三方工具(長期可視化)及操作系統工具(系統級資源監控),以下是具體方案:
Redis自帶的redis-cli
工具無需額外安裝,適合快速獲取實例狀態或臨時排查問題:
INFO
命令:獲取Redis服務器的詳細狀態,涵蓋內存、客戶端、持久化、性能等核心指標(如used_memory
已用內存、connected_clients
連接數、rdb_last_save_time
最后一次RDB持久化時間)??赏ㄟ^redis-cli info
查看全部信息,或指定模塊(如redis-cli info memory
僅看內存指標)。MONITOR
命令:實時顯示Redis接收到的所有命令(包括參數),適合調試(如跟蹤慢命令),但生產環境慎用(高流量下會產生大量輸出)。SLOWLOG
命令:查看執行時間超過閾值的慢命令(幫助定位性能瓶頸)。需先配置slowlog-log-slower-than
(單位:微秒,默認10毫秒)和slowlog-max-len
(日志長度,默認128條),再通過redis-cli slowlog get
查看日志。redis-benchmark
工具:模擬多客戶端并發請求,測試Redis性能(如QPS、延遲)。常用參數:-h
(主機)、-p
(端口)、-c
(并發數)、-n
(請求數)、-q
(僅顯示QPS)。例如:redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 10000 -q
。RedisStat(輕量級實時監控)
基于Ruby開發,通過INFO
命令采集指標,實時顯示內存、CPU、連接數等指標,適合快速部署。
sudo yum install epel-release && sudo yum install redis-stat
。redis-stat
(默認監控本地Redis),或指定實例(redis-stat -h <host> -p <port>
)。Prometheus+Grafana(專業可視化)
Prometheus負責采集指標,Grafana負責可視化,適合大規模集群監控。
redis_exporter
(Prometheus采集Redis指標的中間件):下載二進制文件并配置(指定Redis地址,如addr: "localhost:6379"
),運行redis_exporter
。prometheus.yml
,添加Redis Exporter的job
(scrape_configs
中指定targets: ['localhost:9121']
)。http://localhost:9090
),導入Redis監控面板(如ID:763
,官方預置模板)。RedisInsight(官方圖形化管理工具)
Redis官方提供的免費工具,支持實時監控、鍵空間瀏覽、慢查詢分析、內存優化建議等功能,適合開發者和運維人員。
.tar.gz
格式),解壓后運行./redisinsight
。8001
),添加Redis實例(輸入主機、端口、密碼)即可監控。AnotherRedisDesktopManager(輕量級桌面工具)
開源免費的跨平臺工具,支持內存分析、慢查詢查看、命令行執行等功能,界面簡潔。
.AppImage
格式),賦予執行權限后運行。通過CentOS自帶的工具監控Redis進程占用的系統資源,輔助定位性能瓶頸:
top
/htop
:實時查看系統進程的資源占用(top
按M
排序內存,P
排序CPU;htop
界面更友好,需sudo yum install htop
安裝)。vmstat
:查看系統虛擬內存、進程、CPU等活動(如vmstat 1 5
表示每秒采集1次,共5次)。netstat
:查看Redis的網絡連接狀態(如netstat -tulnp | grep 6379
,顯示Redis監聽的端口和連接數)。dmesg
:查看內核日志(如內存不足導致的OOM事件,dmesg | grep -i oom
)。通過腳本定期執行INFO
命令,將結果寫入日志或發送告警(如郵件、釘釘)。例如,使用bash
腳本每分鐘記錄內存使用情況:
#!/bin/bash
REDIS_CLI="/usr/bin/redis-cli"
LOG_FILE="/var/log/redis/memory.log"
$REDIS_CLI info memory | grep used_memory_human >> $LOG_FILE
添加到cron
(crontab -e
):* * * * * /path/to/script.sh
。
以上方法覆蓋了從基礎排查到專業監控的需求,可根據實際情況選擇組合使用(如開發環境用RedisInsight
,生產環境用Prometheus+Grafana
+redis_exporter
)。