已上線的服務要配置自動化監控,做到在問題出現之前發現問題,解決問題,防患於未然。當然,定期對服務器進行一次全面檢查也是不可缺少的。針對服務器檢查,這里整理了一下常用的命令。
1. 操作系統檢查
1.1 CPU監控檢查
使用命令 vmstat 2 10
或者使用命令 top
1.2 內存使用檢查
使用命令 free -m
1.3 磁盤使用率檢查
使用命令 df -m
1.4 操作系統日志檢查
使用以下命令,檢查是否有報錯信息
cat /var/log/messages|grep ERROR
dmesg |grep ERROR
1.5 主機IO平衡檢查
使用命令 sar -d 2 10
1.6 系統資源限制
使用命令 ulimit -a
確認操作系統限制數均已改為最大
1.7 操作系統時間
使用命令 date
查看是否有時間同步,保持所有服務器一個時間
2. 應用檢查
2.1 服務日志查詢
cat 日志文件 |grep -e ERROR -e error
執行前請注意日志大小,若日志文件非常大,建議使用tail -1000
2.2 JVM參數檢查
檢查腳本中的JVM參數配置
cat /xxx/jetty/bin/jetty.sh |grep JAVA_OPTIONS cat /xxx/startup.sh |grep JVM_OPTS
2.3 查詢運行中的應用
一般是通過 java 或者JVM 作為關鍵詞來查找,單獨的應用可根據腳本中定義的應用名字來查詢,同時也可查看JVM參數
ps -ef |grep java
3. 中間件檢查
3.1 redis檢查
3.1.1 info檢查
登入redis后,執行 info
主要檢查內容:
- blocked_clients 是否有被阻塞的客戶端
- used_memory 當前使用內存的大小,是否接近配置的最大內存
- rdb_last_bgsave_status rdb上一次保存狀態是否正常
- aof_enabled aof是否已開啟。生產環境要求備節點開啟aof,主節點可以關閉。
- rejected_connections 因為最大客戶端連接數限制,而導致被拒絕連接的個數
- mem_fragmentation_ratio redis內存碎片率。數值越大表示碎片率越高,降低碎片率的方式,是重啟redis,重新加載所有key值。
3.1.2 配置檢查: (參數文件位置,可以在info信息上面看到)
grep '^[^#]' redis.conf
主要檢查內容
- maxclients 5000 最大連接數。建議設置為5000
- maxmemory 4g 最大內存限制,根據實際服務器內存配置來確定
- save 900 1
- save 300 10
- save 60 10000 開啟並設置rdb規則,主節點要求開啟rdb。
- appendonly no 主節點建議設置為no,備節點要求開啟aof
3.1.3 日志檢查
日志文件位置請根據配置檢查中 logfile 的具體定位具體日志文件
cat redis.log |grep -e ERROR -e error
執行前請注意日志大小,若日志文件非常大,建議使用 tail -1000 。
3.2 zookeeper檢查
3.2.1 集群狀態檢查
3.2.2 zk參數檢查
cat ./conf/zoo.cfg
主要檢查確認是否包含自動清理快照的配置,防止因快照太多導致磁盤爆滿。
3.2.3 zk節點數量檢查(快照過大時需要檢查)
先統計生產環境中子節點數,用zkcli.sh連接后
統計命令:
get /000/xxx/user/lock/certificate
子節點數為numChildren
節點數量統計完成后,可以考慮清除大於20W的節點
3.2.4 zk日志檢查
cat zookeeper.out |grep -e ERROR -e error
執行前請注意日志大小,若日志文件非常大,建議使用 tail -10000
3.3 rocketMQ檢查
3.3.1 Rocketmq集群狀態檢查
sh mqadmin clusterList -n 10.253.125.97:19878
確認節點數量正常,狀態正常。
3.3.2 Rocketmq配置文件檢查
cat broker-a.properties
確認以下配置是否已修改
- maxMessageSize=65536
- sendMessageThreadPoolNums=128
- pullMessageThreadPoolNums=128
- diskMaxUsedSpaceRatio=88
- mapedFileSizeConsumeQueue=50000000
- fileReservedTime=120
3.3.3 Rocketmq日志檢查
cat broker.log |grep -e ERROR -e error
cat namesrv.log |grep -e ERROR -e error
4. 數據庫檢查
4.1 參數文件檢查
cat /etc/my.cnf
主要檢查
- wait_timeout = 1209600
- interactive_timeout = 1800
- slow_query_log = 1
- slow_query_log_file = slow.log
默認超時時間需要設置為 1209600, 慢日志建議打開。
4.2 慢日志檢查
若不清楚慢日志輸出在哪兒,可通過執行下面的sql確認慢日志的路徑
mysql> show variables like '%slow_query_log%';
查看慢日志,確認是否存在運行性能較差的sql
4.3 數據庫備份及主從同步查看
確認mysql數據庫備份邏輯, 根據實際情況,要求每晚都能做一次備份。 且備份文件要求保留一周。
主從同步查看,確認主從同步進程運行正常。
mysql> show slave status\G ... Slave_IO_Running: Yes Slave_SQL_Running: Yes