OpenStack云平台日常巡检(一键查询版)
由于云平台的监控还没有做好,暂时只能手动排障和日常巡检,目前权限只分配给大客户客服值班人员。
以下操作在生产环境上进行,绝对禁止下载、上传、执行没有经过我批准的命令或者脚本,绝对禁止执行不清楚、不明白、不确定的指令!!!!!!
以下操作,强烈建议在Xshell工具上进行
云平台日常巡检的准备工作:
Step1:ssh到跳板机,即制作OpenStack镜像的机器上。
Step2:在跳板机上ssh到各计算节点:
ssh root@compute0
ssh root@compute1
ssh root@compute2
ssh root@compute3
一:云平台日常巡检-网络流量巡检
Step0:先确认接口连接情况
确定OpenStack节点之间使用哪个接口通信,
命令:
ip addr |grep 10.0.0 |awk '{print $8}'
显示出来的接口就是计算节点、控制节点、存储节点之间的通信接口,包括迁移,共享存储,镜像传送都通过该接口
确认所有虚拟机通过服务器哪个物理接口连接到公网:
命令:
grep mappings /etc/neutron/plugins/ml2/Linuxbridge_agent.ini |cut -f 2 -d = |cut -f 2 -d :
显示出来的接口就是所有虚拟机通过该接口连接到公网
Step1:查看各计算节点所有网卡的实时流量情况,使用键盘左右键切换
nload -m
第一页通常是物理接口,不需要理会
虚拟机的网卡是tap开头的
比如
tap22b50e6c-26
如果你认为没有问题,到此结束,请直接跳到下面第二章节云平台日常巡检-CPU占用巡检
假设tap22b50e6c-26流量异常,把当前屏幕的内容复制到记事本,方便复制粘贴
定义环境变量,替换红色部分,每查询一台虚拟机都要替换一次:
instance_netif=tap22b50e6c-26
定义其他环境变量,每查询一台虚拟机都要重新执行一次:
instance_id=`virsh domstats |grep -E -i "Domain|$instance_netif" |sed -n '{/name=/{g;p}};h' |cut -f 2 -d : |sed 's/^..//' |sed 's/.$//'` && instance_uuid=`virsh dumpxml $instance_id |grep /uuid |cut -f 2 -d \> |cut -f 1 -d \<` && instance_psid=`ps -ef |grep qemu |grep $instance_id | awk '{print $2}' |head -1`
Step2:查看该虚拟机对应的资产号和IP
加载变量环境:
. ~/admin-openrc
命令:
openstack server list |awk ' $2=="'$instance_uuid'" || NR==2 '
执行结果,看到资产号和IP地址
+--------------------------------------+-----------------------+-----------+-----------------------+-----------------------------------------+
| ID | Name | Status | Networks | Image Name |
| 7bc6447c-f428-4d90-8407-0d1cb3c0a1ef | VPS-180514001 | ACTIVE | 59.37.83=59.37.83.174 | Centos6.5_x64_Q312636100_yuan |
Step3:查询该虚拟机的网络流量:
命令:
nload $instance_netif
Incoming表示下载
Outgoing表示上传
查看网络连接详细情况:
nethogs $instance_netif
查虚拟Mac地址,如果有必要
virsh domiflist $instance_id |grep tap | awk '{print $5}'
Step4:查看该虚拟机的物理CPU占用率:
查看该虚拟机占用的物理CPU
top -p $instance_psid
Step5:查看该虚拟机内存使用情况
命令:
virsh dommemstat $instance_id |sed -n 6,7p
unused 表示未使用的内存,单位Kbyte,如果想转为M,除以1024
available 表示虚拟机总内存,单位Kbyte,如果想转为M,除以1024
Step6:查看该虚拟机硬盘使用情况
du -sh /var/lib/nova/instances/$instance_uuid/
如果是10k以下的,证明客户数据放在远程卷里,随时可以热迁移。
如果是很大的数据,证明客户数据放在/var/lib/nova/instances里,目前这个目录是挂在本地硬盘的,所以只能关机迁移。未来这个目录会挂成共享的,不用关机就可以迁移。
Step7:查完后记得及时退出,防止窗口误操作
命令:
exit
二:云平台日常巡检-CPU占用巡检
Step1:先看物理机的CPU利用情况:
命令:
top
执行结果:
top - 10:51:27 up 3 days, 22:39, 1 user, load average: 5.23, 4.81, 4.69
Tasks: 562 total, 2 running, 560 sleeping, 0 stopped, 0 zombie
%Cpu(s): 6.4 us, 1.6 sy, 0.0 ni, 91.7 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 98785056 total, 34372128 free, 62469140 used, 1943784 buff/cache
KiB Swap: 4190204 total, 3748348 free, 441856 used. 35534888 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2942 qemu 20 0 4977832 3.8g 11892 S 105.9 4.0 5411:48 qemu-KVM
4485 qemu 20 0 5053132 3.9g 12040 S 58.8 4.2 930:25.20 qemu-kvm
32817 qemu 20 0 5153192 3.8g 11992 S 23.5 4.0 454:05.48 qemu-kvm
留意四个参数:
0.3 wa表示磁盘IO,最理想情况下是0.0,数值越高,表明磁盘越忙碌
PID号,确认是不是qemu-kvm进程,即KVM虚拟机的进程。
105.9%表示该虚拟机消耗的CPU,如果该虚拟机是2核,CPU利用最高可达200%
如果你认为没有问题,巡检到此结束。
假设你认为PID号为2942的虚拟机有问题,接下来开始排障
定义环境变量,替换红色部分,每查询一台虚拟机都要替换一次:
instance_psid=2942
定义其他环境变量,每查询一台虚拟机都要重新执行一次:
instance_id=`ps -ef |grep $instance_psid |grep uuid |cut -f 1 -d , |cut -f 2 -d =` && instance_uuid=`virsh dumpxml $instance_id |grep /uuid |cut -f 2 -d \> |cut -f 1 -d \<` && instance_netif=`virsh domiflist $instance_id |sed -n 3p |awk '{print $1}'`
Step2:查看该虚拟机内存使用情况
命令:
virsh dommemstat $instance_id |sed -n 6,7p
uunused 未使用的内存,单位Kbyte,如果想转为M,除以1024
available 虚拟机总内存,单位Kbyte,如果想转为M,除以1024
Step3:查看该虚拟机对应的资产号和IP:
载入环境变量命令:
. ~/admin-openrc
命令:
openstack server list |awk ' $2=="'$instance_uuid'" || NR==2 '
执行结果
+--------------------------------------+-----------------------+-----------+-----------------------+-----------------------------------------+
| ID | Name | Status | Networks | Image Name |
| 4219fce8-ae9e-404e-b4e4-47b69bfb66b5 | VPS-180605007 | ACTIVE | 59.37.83=59.37.83.187 | |
Step4:查看该虚拟机的实时流量:
命令:
nload $instance_netif
Incoming表示下载
Outgoing表示上传
查看网络连接详细情况:
nethogs $instance_netif
查询虚拟机的MAC地址:
virsh domiflist $instance_id |grep tap | awk '{print $5}'
Step5:查看该虚拟机硬盘使用情况
du -sh /var/lib/nova/instances/$instance_uuid/
如果是10k以下的,证明客户数据放在远程卷里,随时可以热迁移。
如果是很大的数据,证明客户数据放在/var/lib/nova/instances里,目前这个目录是挂在本地硬盘的,所以只能关机迁移。未来这个目录会挂成共享的,不用关机就可以迁移。
Step6:查完后记得及时退出,防止窗口误操作
命令:
exit
三:根据用户的反馈进行排障
最快的方式是直接问客户拿密码进入虚拟机查询,
当客户不能提供用户名和密码时,用以下方法查询
比如客户的IP是59.37.83.180
Step1:到网页界面查询该IP是哪台计算节点的
然后进入该计算节点,加载环境变量:
命令:
. admin-openrc
定义环境变量,替换红色部分,每查询一台虚拟机都要替换一次:
instance_ipadd=59.37.83.180
定义其他环境变量,每查询一台虚拟机都要重新执行一次:
命令:
instance_uuid=`openstack server list |grep $instance_ipadd | awk '{print $2}'` && instance_psid=`ps -ef |grep qemu |grep $instance_uuid | awk '{print $2}' |head -1` && instance_id=`ps -ef |grep qemu |grep $instance_uuid | awk '{print $10}' |cut -f 2 -d = |cut -f 1 -d ,` && instance_netif=`virsh domiflist $instance_id |grep tap | awk '{print $1}'`
Step2:查询该虚拟机占用物理机CPU的情况
top -p $instance_psid
Step3:查看该虚拟机内存使用情况
命令:
virsh dommemstat $instance_id |sed -n 6,7p
unused 未使用的内存,单位Kbyte,如果想转为M,除以1024
available 虚拟机总内存,单位Kbyte,如果想转为M,除以1024
Step4:查看该虚拟机的实时流量:
命令:
nload $instance_netif
Incoming表示下载
Outgoing表示上传
查看网络连接详细情况:
nethogs $instance_netif
Step5:查看该虚拟机硬盘使用情况
du -sh /var/lib/nova/instances/$instance_uuid/
如果是10k以下的,证明客户数据放在远程卷里,随时可以热迁移。
如果是很大的数据,证明客户数据放在/var/lib/nova/instances里,目前这个目录是挂在本地硬盘的,所以只能关机迁移。未来这个目录会挂成共享的,不用关机就可以迁移。
Step6:查完后记得及时退出,防止窗口误操作
命令:
exit
有道云笔记 https://note.youdao.com/ynoteshare/index.html?id=c6132292aedeb904d66a1490696dceee