38 收集系统信息和日志 #
当虚拟化主机遇到问题时,通常需要收集详细的系统报告。可以借助 supportconfig
工具来实现此目的。有关 supportconfig
的详细信息,请参见 第 47 章 “收集系统信息以供支持所用”。
在某些情况下,supportconfig
收集的信息并不足够,可能还需要收集基于自定义日志记录或调试配置生成的日志来确定问题的原因。
38.1 libvirt
日志控制 #
libvirt
针对库和守护程序提供了日志记录工具。可以通过调整日志级别、过滤器和输出设置来控制日志记录工具的行为。
- 日志级别
libvirt
日志消息分为四种优先级:DEBUG、INFO、WARNING 和 ERROR。DEBUG 级别非常详细,短时间内生成的信息就能达到 GB 级别。日志消息的数量按照 INFO、WARNING 和 ERROR 日志级别的顺序逐渐减少。ERROR 是默认的日志级别。- 日志过滤器
使用日志过滤器,您可以仅记录与特定组件和日志级别匹配的消息。日志过滤器允许收集特定组件的详细 DEBUG 日志消息,但只能从系统的其余组件收集 ERROR 级别的日志消息。默认情况下未定义日志过滤器。
- 日志输出
日志输出允许指定要将过滤的日志消息发送到的位置。可将消息发送到文件、进程的标准错误流或 journald。默认情况下,过滤的日志消息将发送到 journald。
有关 libvirt
的日志控制的更多细节,请参见 https://libvirt.org/logging.html。
默认的 libvirt
安装将日志级别设置为 ERROR,未定义日志过滤器,并将日志输出设置为 journald。可以使用 journalctl
命令查看来自 libvirt
守护程序的日志消息:
#
journalctl --unit libvirtd
默认的日志工具设置适合常规操作,可为应用程序和 libvirt
用户提供有用的消息,但内部问题通常需要通过 DEBUG 级别的消息来解决。例如,假设 libvirt
与 QEMU 监控器之间的交互存在一个潜在的 bug。在这种情况下,我们只需查看 libvirt
与 QEMU 之间的通讯的调试消息。以下示例会创建一个日志过滤器,以选择来自 QEMU 驱动程序的调试消息并将其发送到名为 /tmp/libvirtd.log
的文件
log_filters="1:qemu.qemu_monitor_json" log_outputs="1:file:/tmp/libvirtd.log"
可在 /etc/libvirt/libvirtd.conf
中找到 libvirt
守护程序的日志控制。对该配置文件进行任何更改后,必须重启动该守护程序。
#
systemctl restart libvirtd.service