.png)
①用户向 nova-api 发送关机请求
查看日志 /opt/stack/logs/n-api.log
2019-05-23 21:21:22.174 DEBUG nova.api.openstack.wsgi [req-748d953f-42d8-4853-9816-d44fbbcdbed7 admin admin] Action: 'action', calling method: <bound method ServersController._stop_server of <nova.api.openstack.compute.servers.ServersController object at 0x7fb2f89b4fd0>>, body: {"os-stop": null} from (pid=28283) _process_stack /opt/stack/nova/nova/api/openstack/wsgi.py:623
2019-05-23 21:21:22.213 DEBUG nova.compute.api [req-748d953f-42d8-4853-9816-d44fbbcdbed7 admin admin] [instance: a0e2b485-f40c-43e4-beb6-049b6399f0ec] Going to try to stop instance from (pid=28283) force_stop /opt/stack/nova/nova/compute/api.py:2282
②nova-api 向 Messaging 发送一个关机的消息
nova-api 向messaging 发送消息,这条并没有明显的记录到日志文件中,但我们还是从日志中找到了蛛丝马迹,这里通过 Requests ID 加 代码模块定位到了相关日志
2019-05-23 21:21:22.325 DEBUG oslo_messaging._drivers.amqpdriver [req-748d953f-42d8-4853-9816-d44fbbcdbed7 admin admin] CAST unique_id: 97bb0cf9fd5b42fbabf2de4218d4a8cb exchange 'nova' topic 'compute.DevStack-Controller' from (pid=28283) _send /usr/local/lib/python2.7/dist-packages/oslo_messaging/_drivers/amqpdriver.py:550
2019-05-23 21:21:22.329 INFO nova.osapi_compute.wsgi.server [req-748d953f-42d8-4853-9816-d44fbbcdbed7 admin admin] 10.12.31.241 "POST /v2.1/servers/a0e2b485-f40c-43e4-beb6-049b6399f0ec/action HTTP/1.1" status: 202 len: 337 time: 0.1873510
③nova-compute 从Messaging 获取到关机的消息后执行关机操作
该操作在计算节点上,需要查看 /opt/stack/logs/n-cpu.log 日志文件,同上,我们使用 Requests ID 加 代码模块定位到了下面的日志信息
root@DevStack-Controller:/opt/stack/logs# cat n-cpu.log | grep req-748d953f-42d8-4853-9816-d44fbbcdbed7 | grep nova.compute.manager
2019-05-23 21:21:22.363 DEBUG oslo_concurrency.lockutils [req-748d953f-42d8-4853-9816-d44fbbcdbed7 admin admin] Lock "a0e2b485-f40c-43e4-beb6-049b6399f0ec" acquired by "nova.compute.manager.do_stop_instance" :: waited 0.000s from (pid=4613) inner /usr/local/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:270
2019-05-23 21:21:22.364 DEBUG nova.compute.manager [req-748d953f-42d8-4853-9816-d44fbbcdbed7 admin admin] [instance: a0e2b485-f40c-43e4-beb6-049b6399f0ec] Checking state from (pid=4613) _get_power_state /opt/stack/nova/nova/compute/manager.py:1184
2019-05-23 21:21:22.368 DEBUG nova.compute.manager [req-748d953f-42d8-4853-9816-d44fbbcdbed7 admin admin] [instance: a0e2b485-f40c-43e4-beb6-049b6399f0ec] Stopping instance; current vm_state: active, current task_state: powering-off, current DB power_state: 1, current VM power_state: 1 from (pid=4613) do_stop_instance /opt/stack/nova/nova/compute/manager.py:2498
2019-05-23 21:21:25.826 DEBUG nova.compute.manager [req-748d953f-42d8-4853-9816-d44fbbcdbed7 admin admin] [instance: a0e2b485-f40c-43e4-beb6-049b6399f0ec] Checking state from (pid=4613) _get_power_state /opt/stack/nova/nova/compute/manager.py:1184
2019-05-23 21:21:25.950 DEBUG oslo_concurrency.lockutils [req-748d953f-42d8-4853-9816-d44fbbcdbed7 admin admin] Lock "a0e2b485-f40c-43e4-beb6-049b6399f0ec" released by "nova.compute.manager.do_stop_instance" :: held 3.587s from (pid=4613) inner /usr/local/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:282
root@DevStack-Controller:/opt/stack/logs# cat n-cpu.log | grep req-748d953f-42d8-4853-9816-d44fbbcdbed7 | grep nova.virt
2019-05-23 21:21:22.477 DEBUG nova.virt.libvirt.driver [req-748d953f-42d8-4853-9816-d44fbbcdbed7 admin admin] [instance: a0e2b485-f40c-43e4-beb6-049b6399f0ec] Shutting down instance from state 1 from (pid=4613) _clean_shutdown /opt/stack/nova/nova/virt/libvirt/driver.py:2562
2019-05-23 21:21:25.819 INFO nova.virt.libvirt.driver [req-748d953f-42d8-4853-9816-d44fbbcdbed7 admin admin] [instance: a0e2b485-f40c-43e4-beb6-049b6399f0ec] Instance shutdown successfully after 3 seconds.
分析日志小窍门
对于如何在日志文件中快速查找到有用的信息,对于初学者来说,这不是一件容易的事情。因为日志里条目和内容很多,特别是开启debug之后,容易让人眼花缭乱,无从下手。
这里给大家几个小窍门:
1、先确定大的范围,比如在操作之前用tialf 命令实时打印日志文件,这样需要查看的日志肯定会在操作之后打印在屏幕上。另外也可以通过时间戳来确定需要的日志范围
2、利用代码模块快速定位有用的信息。nova-* 子服务都有自己特定的代码模块
nova-api
nova.api.openstack.wsgi
nova-compute
nova.virt.libvirt.*
nova-scheduler
nova.scheduler.*
3、利用 Requests ID 查找相关的日志信息。在上面的日志中,我们可以利用 req-748d953f-42d8-4853-9816-d44fbbcdbed7 这个Requests ID 快速定位 n-api.log 中与shut off操作相关的其他日志。需要补充说明的是,Requests ID 是跨日志文件的,这一特性能帮助我们在其他子服务的日志文件中找到相关信息
- Launch和Shut Off操作详解 - 每天5分钟玩转 OpenStack(30)
本节详细分析 instance launch 和 shut off 操作,以及如何在日志中快速定位有用信息的技巧. Launch Launch instance 应该算 Nova 最重要的操作. 仔细 ...
- MongoDB各种查询操作详解
这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下 一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...
- Linux Shell数组常用操作详解
Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...
- [Android新手区] SQLite 操作详解--SQL语法
该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法 :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...
- shell字符串操作详解
shell字符串操作详解的相关资料. 1.shell变量声明的判断 表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DE ...
- memcached 命令操作详解
memcached 命令操作详解 一.存储命令 存储命令的格式: <command name> <key> <flags> <exptime> < ...
- windows phone 8.1开发SQlite数据库操作详解
原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本 ...
- MySQL 操作详解
MySQL 操作详解 一.实验简介 本节实验中学习并实践 MySQL 上创建数据库.创建表.查找信息等详细的语法及参数使用方法. 二.创建并使用数据库 1. 创建并选择数据库 使用SHOW语句找出服务 ...
- python/ORM操作详解
一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...
随机推荐
- 负载均衡 | Nginx+Tomcat 动静分离实现负载均衡
0.前期准备 使用Debian环境.安装Nginx(默认安装),一个web项目,安装tomcat(默认安装)等. 1.一份Nginx.conf配置文件 基本配置这个文件,就可以实现负载了.但是里面的各 ...
- MySQL有四种BLOB类型
先说明一下Blob的类型,直接从网上摘抄了!!!1.MySQL有四种BLOB类型: ·tinyblob:仅255个字符 ·blob:最大限制到65K字节 ·mediumblob:限制到16M字节 ·l ...
- jQuery九类选择器
目的:通过选择器,能定位web页面(HTML/JSP/XML)中的任何标签, 注意:项目中,通常是多种选择器一起使用 基本选择器 <html> <head> <meta ...
- 使用注解实现Spring的声明式事务管理
使用注解实现Spring的声明式事务管理,更加简单! 步骤: 1) 必须引入Aop相关的jar文件 2) bean.xml中指定注解方式实现声明式事务管理以及应用的事务管理器类 3)在需要添加事务控制 ...
- C#WinForm程序显示控制台窗口Console
启动一个WINFORM项目,使用一些API函数将控制台显示出来: AllocConsole 和 FreeConsole. 本程序只在DEBUG模式下显示控制台 [DllImport("ker ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-9.使用JWT生成用户Token回写客户端
笔记 9.使用JWT生成用户Token回写客户端 简介:讲解用户授权登录后,需要生成登录凭证重定向到页面上 1.获取当前页面访问地址 2.根据User基本信息生成token 3.重定向到指定页 ...
- Docker Swarm常用命令
#查看集群节点 docker node ls #创建nginx服务 #docker pull hub.test.com:5000/almi/nginx:0.1 #下载私有仓库镜像 docker ser ...
- 记一次django学习1.0和2.0区别
依据学习课程的教学,在项目实战学习过程中教学使用django1.0,获取ManytoMany关联字段,源码使用的是 即django使用 models.Customer.tags.rel.to.obje ...
- kubeadm安装集群系列-5.其他操作
常用的一些操作记录 imagePullSecrets kubectl -n [namespace] create secret docker-registry regsecret --docker-s ...
- 使用mysqldump对mysql进行备份与恢复
说明: 主参考:https://blog.csdn.net/fanren224/article/details/79693860 mysql数据全量备份 1.开启二进制日志,备份指定数据库 cat & ...