已上线的服务要配置自动化监控,做到在问题出现之前发现问题,解决问题,防患于未然。当然,定期对服务器进行一次全面检查也是不可缺少的。针对服务器检查,这里整理了一下常用的命令。
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 statusG ... Slave_IO_Running: Yes Slave_SQL_Running: Yes