一、目的
本文档主要介绍MStack v.1.1产品的巡检指南,主要目的是为运维人员说明软件的巡检步骤。
巡检单模板下载:MStack巡检单模板
二、概况

2.1 平台版本
MStack V1.1
2.2 巡检云平台地址
MStack V1.1 访问地址
2.3 监控平台地址
# vip查看方式
cat /etc/kolla/globals.yml | grep kolla_internal_vip_address:2.4 节点规模
集群规模主要是计算、控制、存储节点的数量。还需要打开/root/multinode中的文件查看其他服务如数据库、网络、监控等是否为独立的节点。
- 计算节点数量
openstack compute service list --service nova-compute - 控制节点数量
openstack compute service list --service nova-conductor - 存储节点数量,具体数量为返回的reweight不为0的host
ceph osd tree | grep host
2.5 Vcpu/内存/虚拟机概况
在“集群管理”–“主机”–“主机”中可以查看CPU/内存的分配情况和云主机的数量。
三、巡检内容
3.1 服务器硬件
需要进入客户机房查看硬件状态,如果远程巡检此处可以留空
3.2 平台界面监控

在“集群管理”–“主机”–“服务”中中查看计算、块存储、网络
3.3 监控平台

访问prometheus(http://vip:9091)查看Alerts页面是否有告警和Status-->Targers界面的监控项是否都为UP状态
3.4 服务器操作系统
注意:ansible命令需要source /path/to/venv/bin/activate
- 查看/和/boot目录使用率
ansible -i /root/multinode all -m shell -a "df -h | grep -e '/$' -e '/boot$'" - 查看物理内存使用率
# 如果节点少,直接使用free -h查看即可 ansible -i /root/multinode all -m shell -a "free -h" # 如果节点较多,可以结合awk自动计算出内存使用率 ansible -i /root/multinode all -m shell -a "free -h | grep '^M' | awk '{print \"used percent is \"\$3/\$2*100\"%\"}'" - zombie检查
# 多执行几次,确认僵尸进程没消失就证明为僵尸进程 ansible -i /root/multinode all -m shell -a "ps -A -o stat,ppid,pid,cmd | grep -e '^[zZ]'" - dockerd进程内存占用检查
ansible -i /root/multinode all -m shell -a "ps -aux | grep dockerd | grep -v grep | awk '{print \$6/1024\"M\"}'"
3.5 云平台服务
3.5.1 所有节点

- 查看prometheus相关服务状态
# 查看是否有退出的prometheus和export容器 ansible -i /root/multinode all -m shell -a "docker ps -a | grep prometheus | grep -v Up" ansible -i /root/multinode all -m shell -a "docker ps -a | grep export | grep -v Up" - 查看chrony状态
ansible -i /root/multinode all -m shell -a "chronyc sources -v" - 查看cron容器状态
ansible -i /root/multinode all -m shell -a "docker ps -a | grep cron" # 使用ubuntu docker镜像的使用该命令 ansible -i /root/multinode all -m shell -a "docker exec cron ls -lt /var/lib/logrotate/status" # 使用rocky docker镜像的使用该命令 ansible -i /root/multinode all -m shell -a "docker exec cron ls -lt /var/lib/logrotate/logrotate.status" - 查看kolla_toolbox容器状态
ansible -i /root/multinode all -m shell -a "docker ps | grep kolla_toolbox" - 查看fluentd容器状态
# 查看是否有报错 ansible -i /root/multinode all -m shell -a "docker logs fluentd --tail 10"# 查看fluentd内存占用,大于300M则需要重启容器减少内存占用 ansible -i /root/multinode all -m shell -a "docker stats --no-stream fluentd" - 查看处于非Up状态的容器
# 如果有处于非Up状态的异常容器先查看是否为人工关闭,若不是人为关闭后续与客户进行确认。 ansible -i /root/multinode control -m shell -a "docker ps -a | grep -v Up"
3.5.2 数据库节点

- 查看数据库集群状态
# 确保返回结果的wsrep_local_state_comment为Synced、wsrep_incoming_address包含所有数据库节点、wsrep_cluster_size为数据库节点数量 pass=$(cat /etc/kolla/passwords.yml |grep ^dat |awk -F: '{print $2}' | sed 's/ //g') docker exec -it mariadb mysql -uroot -p$pass -e "show status like 'wsrep_%'"
3.5.3 消息功能节点

- 查看消息队列集群状态
# 查看集群状态,确保running_nodes包含所有消息队列节点、partitions(脑裂)为空、alarms(特殊事件)中每个节点后面为空 docker exec rabbitmq rabbitmqctl cluster_status # 查看是否有消息队列挤压 docker exec rabbitmq rabbitmqctl list_queues | grep -v 0$
3.5.4 控制节点

- 查看elasticsearch健康状态
# status为green时正常,其中<VIP>替换为真实环境的地址 curl -XGET http://VIP:9200/_cluster/health?pretty - 查看haproxy连接数
# 判断各前端的连接数是否达到限制数的80%,登录每台控制节点进haproxy容器检查 # 进入haproxy容器 docker exec -itu root haproxy bash # 查看所有当前连接数和最大连接数 echo "show stat" | socat unix-connect:/var/lib/kolla/haproxy/haproxy.sock stdio|awk -F',' '$7>=0{print $5,$7}' # 筛选达到80%的条目 echo "show stat" | socat unix-connect:/var/lib/kolla/haproxy/haproxy.sock stdio|awk -F',' '$7>=0{print $5,$7}' | awk 'NR>1&&$1/$2>0.8{print $1,$2}' - 查看prometheus运行状态
# 查看prometheus相关容器状态 ansible -i /root/multinode control -m shell -a "docker ps | grep prometheus" - 查看核心服务容器状态
# 计算服务 ansible -i /root/multinode control -m shell -a "docker ps | grep nova_api" ansible -i /root/multinode control -m shell -a "docker ps | grep nova_conductor" ansible -i /root/multinode control -m shell -a "docker ps | grep nova_scheduler" ansible -i /root/multinode control -m shell -a "docker ps | grep nova_novncproxy" # 网络服务 ansible -i /root/multinode control -m shell -a "docker ps | grep neutron_server" # 块存储服务 ansible -i /root/multinode control -m shell -a "docker ps | grep cinder_api" ansible -i /root/multinode control -m shell -a "docker ps | grep cinder_scheduler" # 镜像服务 ansible -i /root/multinode control -m shell -a "docker ps | grep glance_api" # 认证服务 ansible -i /root/multinode control -m shell -a "docker ps | grep keystone$" ansible -i /root/multinode control -m shell -a "docker ps | grep keystone_fernet" ansible -i /root/multinode control -m shell -a "docker ps | grep keystone_ssh" 查看其他服务容器状态 ansible -i /root/multinode control -m shell -a "docker ps | grep placement_api" ansible -i /root/multinode control -m shell -a "docker ps | grep keepalived" ansible -i /root/multinode control -m shell -a "docker ps | grep heat_api" ansible -i /root/multinode control -m shell -a "docker ps | grep heat_engine" ansible -i /root/multinode control -m shell -a "docker ps | grep panko_api" ansible -i /root/multinode control -m shell -a "docker ps | grep skyline" ansible -i /root/multinode control -m shell -a "docker ps | grep horizon" ansible -i /root/multinode control -m shell -a "docker ps | grep memcached"
3.5.5 网络节点

- 查看服务状态
# 部署节点执行,执行前需要在虚拟机环境中source /etc/kolla/admin-openrc.sh openstack network agent list - 查看网络节点容器状态
ansible -i /root/multinode network -m shell -a "docker ps | grep neutron" ansible -i /root/multinode network -m shell -a "docker ps | grep openvswitch"
3.5.6 计算节点

- 查看服务状态
# 部署节点执行,执行前需要在虚拟机环境中source /etc/kolla/admin-openrc.sh openstack compute service list - 查看计算节点容器状态
ansible -i /root/multinode compute -m shell -a "docker ps | grep nova_compute" ansible -i /root/multinode compute -m shell -a "docker ps | grep neutron_openvswitch_agent"
3.5.7 存储节点

- 查看存储模块状态
# 部署节点执行,执行前需要在虚拟机环境中source /etc/kolla/admin-openrc.sh openstack volume service list - 查看存储节点容器状态
ansible -i /root/multinode cinder-volume -m shell -a "docker ps | grep cinder_volume" ansible -i /root/multinode cinder-backup -m shell -a "docker ps | grep cinder_backup"
四、附加内容
4.1 TCP连接数

# 操作方法
ansible -i /root/multinode all -m shell -a "ss -ant | awk '/^[^State]/ {++S[\$1]} END {for(a in S) print a, S[a]}'"4.2 系统负载

# 一般系统负载不超过CPU核心(线程)数量的70%即为正常
# 操作方法
ansible -i /root/multinode all -m shell -a "cat /proc/loadavg | /usr/bin/awk '{print \$1,\$2,\$3}'"4.3 KVM实例信息异常查询

确保openstack server list返回的和计算节点侧的kvm实例一致
# 手动操作
for i in $(openstack hypervisor list | grep -v '\-\-' | grep -v Hypervisor |awk '{print $4}');do echo $i;openstack server list --host $i | grep -v '\-\-\-' | grep -v ID | awk '{print $4}' | xargs -i openstack server show {} | grep OS-EXT-SRV-ATTR:instance_name | awk '{print $4}';ssh $i docker exec nova_libvirt virsh list;echo "beautiful";done执行结果如下,该状态为正常
# 脚本操作
# 使用如下脚本进行查询,脚本内容如下
#!/bin/bash
# Determine whether the subsequent redirected file check.txt exists. If the file exists, please delete it. If it cannot be deleted, please customize the file name to be redirected on line 15; If the file does not exist, please continue.
now_time=$(date +%Y%m%d%H%M%S)
if [ ! -f "/tmp/check_kvm.txt" ];then
echo -e "\033[32m "/tmp/check_kvm.txt文件不存在,请继续操作。" \033[0m"
else
echo -e "\033[31m "/tmp/check_kvm.txt文件在,将备份至/tmp/check_kvm.txt$now_time" \033[0m"
mv /tmp/check_kvm.txt /tmp/check_kvm.txt$now_time
fi
cal_resource_all(){
host_list=$(openstack compute service list --service nova-compute | grep -v '\-\-\-' | grep -v ID | awk '{print $6}')
source /path/to/venv/bin/activate
source /etc/kolla/admin-openrc.sh
for node in $host_list
do
openstack server list --host ${node} | grep -v '\-\-\-' | grep -v ID | awk '{print $4}' | xargs -i openstack server show {} | grep OS-EXT-SRV-ATTR:instance_name | awk '{print $4}'>/tmp/nova_list.txt
ssh ${node} docker exec nova_libvirt virsh list | grep instance |awk '{print $2}' >/tmp/virsh_list.txt
echo "${node}节点virsh list存在而nova list不存在的kvm实例:">>/tmp/check_kvm.txt
grep -vwf /tmp/nova_list.txt /tmp/virsh_list.txt >>/tmp/check_kvm.txt
echo "${node}节点nova list存在而virsh list不存在的云主机:">>/tmp/check_kvm.txt
grep -vwf /tmp/virsh_list.txt /tmp/nova_list.txt >>/tmp/check_kvm.txt
done
}
delete_file(){
rm -rf /tmp/nova_list.txt
rm -rf /tmp/virsh_list.txt
}
# exec the task
cal_resource_all
delete_file
cat /tmp/check_kvm.txt执行结果如下,发现node27节点kvm中有一个名字为instance-000001fa的虚拟机和数据库存在不一致,需要跟进处理
4.4 CPU使用率高于100%的统计(可选)
如客户有特别要求可以将查询出来的CPU使用率高的虚拟机发给客户,请客户自行判断是否正常。若客户无此需求可不做这一步
# 操作方法
# 在虚拟环境中检查nova命令是否安装
pip freeze | grep nova
# 安装novaclient
pip install python-novaclient
# 搜集所有计算节点上CPU使用率超过100%的kvm进程
ansible -i /root/multinode compute -m shell -a "ps aux | grep qemu | awk '\$3>100 {print \$3,\$13}'" > /tmp/high_kvm_process.txt
# 根据kvm实例名称查询对应的云主机信息,最后一列为kvm进程的cpu使用率
for i in $(cat /tmp/high_kvm_process.txt| grep -oP '(?<=guest=).*(?=,debug)' );do a=$(cat /tmp/high_kvm_process.txt |grep $i|awk '{print $1}');b=$(nova list --all --field OS-EXT-SRV-ATTR:instance_name,name,OS-EXT-SRV-ATTR:hypervisor_hostname,networks | grep $i);echo $b $a;done作者:束鹏 创建时间:2026-01-05 14:08
最后编辑:束鹏 更新时间:2026-01-30 09:36
最后编辑:束鹏 更新时间:2026-01-30 09:36