なお、場合によっては 問題を解決するには、独自のログやデバッグ設定を行って調査する必要があるかもしれません。
libvirt
のログ制御 #Edit sourcelibvirt
ではライブラリとデーモンの両方に対してログを設定することができます。ログ機構の動作はログレベルとフィルタ、そして出力設定で調整することができます。
libvirt
のログメッセージには 4 種類のうちのいずれかの優先度レベルが設定されています。それぞれ DEBUG (デバッグ), INFO (情報), WARNING (警告), ERROR (エラー) と呼ばれ、 DEBUG は短時間に数ギガバイトにも及ぶような最も多く非常に詳細な (冗長な) 出力を表し、後は多い順に INFO, WARNING, ERROR となります。なお、既定のログレベルは ERROR です。
ログフィルタは、特定のコンポーネントとログレベルのみに限定して出力を行うための方法です。ログフィルタを設定することで、特定のコンポーネントのみ DEBUG で出力し、それ以外を ERROR のみに設定することもできます。既定ではログフィルタの設定は行われていません。
ログ出力先は、フィルタ設定したログメッセージの送信先を指定するための仕組みです。ログメッセージはファイルに出力できるほか、プロセスの標準エラー出力や journald などを指定することができます。既定ではフィルタ設定したログメッセージは journald に送信されます。
libvirt
のログ出力について、詳しくは https://libvirt.org/logging.html をお読みください。
libvirt
の既定のインストール状態では、ログレベルは ERROR に設定され、ログフィルタは何も設定されません。また、ログ出力は journald になります。この場合 libvirt
デーモンからのログメッセージは、 journalctl
コマンドで表示することができます:
#
journalctl --unit libvirtd
なお、通常の運用範囲においては既定のログ設定で十分であり、 libvirt
のアプリケーションやユーザに対して適切な範囲でメッセージを送信しますが、内部の問題に直面した場合は、 DEBUG レベルのメッセージが必要となることがしばしばあります。たとえば libvirt
と QEMU モニタの間でのやり取りに問題があると考える場合などがそれにあたります。このような場合は、 libvirt
と QEMU の通信のみに絞ってデバッグメッセージを出力させてください。たとえば下記の例では、 QEMU ドライバが出力するデバッグメッセージを、 /tmp/libvirtd.log
というファイルに出力しています。
log_filters="1:qemu.qemu_monitor_json" log_outputs="1:file:/tmp/libvirtd.log"
libvirt
デーモンのログ制御は /etc/libvirt/libvirtd.conf
で行います。なお、設定変更後はデーモンを再起動しなければならないことに注意してください。
#
systemctl restart libvirtd.service