410 lines
446 KiB
HTML
410 lines
446 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
<html><head><title>7. KVM 系统监控</title><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta property="og:title" content="7. KVM 系统监控"/><meta property="og:description" content="本文介绍了KVM虚拟化环境中的系统监控,强调了监控的重要性,并详细探讨了使用virsh、virt-top、top、htop、iotop和iftop等工具进行资源监控和性能优化的方法。."/><meta property="og:image" content="https://wiki.7wate.com/static/og-image.png"/><meta property="og:width" content="1200"/><meta property="og:height" content="675"/><link rel="icon" href="../../../../static/icon.png"/><meta name="description" content="本文介绍了KVM虚拟化环境中的系统监控,强调了监控的重要性,并详细探讨了使用virsh、virt-top、top、htop、iotop和iftop等工具进行资源监控和性能优化的方法。."/><meta name="generator" content="Quartz"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><script async src="https://umami.7wate.com/script.js" data-website-id="c061efdc-95dd-4d21-9d04-a1ffda0a85b9"></script><script>
|
|||
|
var _hmt = _hmt || [];
|
|||
|
(function() {
|
|||
|
var hm = document.createElement("script");
|
|||
|
hm.src = "https://hm.baidu.com/hm.js?94d8ccb156eb7c65abf317e6e01cdba9";
|
|||
|
var s = document.getElementsByTagName("script")[0];
|
|||
|
s.parentNode.insertBefore(hm, s);
|
|||
|
})();
|
|||
|
</script><script async src="https://www.googletagmanager.com/gtag/js?id=G-MHMEL0F832"></script><script>
|
|||
|
(function() {
|
|||
|
window.dataLayer = window.dataLayer || [];
|
|||
|
function gtag() {
|
|||
|
window.dataLayer.push(arguments);
|
|||
|
}
|
|||
|
gtag('js', new Date());
|
|||
|
gtag('config', 'G-MHMEL0F832');
|
|||
|
})();
|
|||
|
</script><link href="../../../../index.css" rel="stylesheet" type="text/css" spa-preserve/><link href="https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/katex.min.css" rel="stylesheet" type="text/css" spa-preserve/><link href="https://fonts.googleapis.com/css2?family=IBM Plex Mono&family=Schibsted Grotesk:wght@400;700&family=Source Sans Pro:ital,wght@0,400;0,600;1,400;1,600&display=swap" rel="stylesheet" type="text/css" spa-preserve/><script src="../../../../prescript.js" type="application/javascript" spa-preserve></script><script type="application/javascript" spa-preserve>const fetchData = fetch(`../../../../static/contentIndex.json`).then(data => data.json())</script></head><body data-slug="Tech/operating-system/Virtualization/2.KVM虚拟化/7.-KVM-系统监控"><div id="quartz-root" class="page"><div id="quartz-body"><div class="left sidebar"><h1 class="page-title "><a href="../../../..">📚 X·Eden</a></h1><div class="spacer mobile-only"></div><div class="search "><div id="search-icon"><p>Search</p><div></div><svg tabIndex="0" aria-labelledby="title desc" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.9 19.7"><title id="title">Search</title><desc id="desc">Search</desc><g class="search-path" fill="none"><path stroke-linecap="square" d="M18.5 18.3l-5.4-5.4"></path><circle cx="8" cy="8" r="7"></circle></g></svg></div><div id="search-container"><div id="search-space"><input autocomplete="off" id="search-bar" name="search" type="text" aria-label="Search for something" placeholder="Search for something"/><div id="results-container"></div></div></div></div><div class="darkmode "><input class="toggle" id="darkmode-toggle" type="checkbox" tabIndex="-1"/><label id="toggle-label-light" for="darkmode-toggle" tabIndex="-1"><svg xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" version="1.1" id="dayIcon" x="0px" y="0px" viewBox="0 0 35 35" style="enable-background:new 0 0 35 35;" xmlSpace="preserve"><title>Light mode</title><path d="M6,17.5C6,16.672,5.328,16,4.5,16h-3C0.672,16,0,16.672,0,17.5 S0.672,19,1.5,19h3C5.328,19,6,18.328,6,17.5z M7.5,26c-0.414,0-0.789,0.168-1.061,0.439l-2,2C4.168,28.711,4,29.086,4,29.5 C4,30.328,4.671,31,5.5,31c0.414,0,0.789-0.168,1.06-0.44l2-2C8.832,28.289,9,27.914,9,27.5C9,26.672,8.329,26,7.5,26z M17.5,6 C18.329,6,19,5.328,19,4.5v-3C19,0.672,18.329,0,17.5,0S16,0.672,16,1.5v3C16,5.328,16.671,6,17.5,6z M27.5,9 c0.414,0,0.789-0.168,1.06-0.439l2-2C30.832,6.289,31,5.914,31,5.5C31,4.672,30.329,4,29.5,4c-0.414,0-0.789,0.168-1.061,0.44 l-2,2C26.168,6.711,26,7.086,26,7.5C26,8.328,26.671,9,27.5,9z M6.439,8.561C6.711,8.832,7.086,9,7.5,9C8.328,9,9,8.328,9,7.5 c0-0.414-0.168-0.789-0.439-1.061l-2-2C6.289,4.168,5.914,4,5.5,4C4.672,4,4,4.672,4,5.5c0,0.414,0.168,0.789,0.439,1.06 L6.439,8.561z M33.5,16h-3c-0.828,0-1.5,0.672-1.5,1.5s0.672,1.5,1.5,1.5h3c0.828,0,1.5-0.672,1.5-1.5S34.328,16,33.5,16z M28.561,26.439C28.289,26.168,27.914,26,27.5,26c-0.828,0-1.5,0.672-1.5,1.5c0,0.414,0.168,0.789,0.439,1.06l2,2 C28.711,30.832,29.086,31,29.5,31c0.828,0,1.5-0.672,1.5-1.5c0-0.414-0.168-0.789-0.439-1.061L28.561,26.439z M17.5,29 c-0.829,0-1.5,0.672-1.5,1.5v3c0,0.828,0.671,1.5,1.5,1.5s1.5-0.672,1.5-1.5v-3C19,29.672,18.329,29,17.5,29z M17.5,7 C11.71,7,7,11.71,7,17.5S11.71,28,17.5,28S28,23.29,28,17.5S23.29,7,17.5,7z M17.5,25c-4.136,0-7.5-3.364-7.5-7.5 c0-4.136,3.364-7.5,7.5-7.5c4.136,0,7.5,3.364,7.5,7.5C25,21.636,21.636,25,17.5,25z"></path></svg></label><label id="toggle-label-dark" for="darkmode-toggle" tabIndex="-1"><svg xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" version="1.1" id="nightIcon" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background='new 0 0 100 100'" xmlSpace="preserve"><title>Dark mode</title><path d="M96.76,66.458c-0.853-0.852-2.15-1.064-3.23-0.534c-6.063,2.991-12.858,4.571-19.655,4.571 C62.022,70.495,50.88,65.88,42.5,57.5C29.043,44.043,25.658,23.536,34.076,6.47c0.532-1.08,0.318-2.379-0.534-3.23 c-0.851-0.852-2.15-1.064-3.23-0.534c-4.918,2.427-9.375,5.619-13.246,9.491c-9.447,9.447
|
|||
|
<p>在 KVM(Kernel-based Virtual Machine)虚拟化环境中,监控是确保系统稳定性、性能优化和故障排查的重要手段。本文将探讨监控的必要性、基本原则以及常用的监控工具。</p>
|
|||
|
<h3 id="为什么需要监控">为什么需要监控?<a aria-hidden="true" tabindex="-1" href="#为什么需要监控" class="internal"> §</a></h3>
|
|||
|
<ul>
|
|||
|
<li><strong>确保系统稳定性</strong>:
|
|||
|
<ul>
|
|||
|
<li>通过监控系统资源使用情况和性能指标,可以及时发现潜在的问题,防止系统崩溃或服务中断。</li>
|
|||
|
<li>实时监控有助于预防性维护,提前识别并解决硬件或软件故障。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>优化性能</strong>:
|
|||
|
<ul>
|
|||
|
<li>监控数据提供了关于资源使用的详细信息,帮助管理员优化虚拟机配置和资源分配,以提高整体系统性能。</li>
|
|||
|
<li>通过性能趋势分析,可以发现并消除系统瓶颈,提升用户体验。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>故障排查</strong>:
|
|||
|
<ul>
|
|||
|
<li>监控日志和性能指标记录了系统运行的详细信息,帮助管理员快速定位和解决故障。</li>
|
|||
|
<li>实时报警功能可以在问题发生时立即通知管理员,减少故障排除时间和系统停机时间。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>容量规划</strong>:
|
|||
|
<ul>
|
|||
|
<li>监控资源使用趋势和增长情况,有助于进行合理的容量规划,确保系统在未来增长中仍能稳定运行。</li>
|
|||
|
<li>提前规划资源扩展,避免资源不足导致的性能下降。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
<h3 id="监控的基本原则">监控的基本原则<a aria-hidden="true" tabindex="-1" href="#监控的基本原则" class="internal"> §</a></h3>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>原则</th><th>详细内容</th></tr></thead><tbody><tr><td><strong>全面覆盖</strong></td><td>监控系统应覆盖所有关键组件,包括 CPU、内存、磁盘、网络等资源,以及虚拟机和宿主机的状态。 监控范围还应包括应用层面的性能指标,以全面掌握系统运行状况。</td></tr><tr><td><strong>实时性</strong></td><td>监控系统应提供实时的数据采集和报警功能,确保在问题发生时能够立即响应。 实时监控有助于快速发现和解决突发问题,减少对业务的影响。</td></tr><tr><td><strong>历史记录</strong></td><td>监控系统应保存历史数据,便于进行趋势分析和性能基线建立。 历史记录有助于识别长期趋势和周期性问题,进行有效的容量规划和性能优化。</td></tr><tr><td><strong>报警机制</strong></td><td>监控系统应具备灵活的报警机制,根据预定义的阈值触发报警,通知管理员采取措施。 报警应支持多种通知方式(如邮件、短信、即时通讯工具),确保及时传达信息。</td></tr><tr><td><strong>可视化展示</strong></td><td>监控数据应通过可视化的方式展示,便于管理员直观了解系统状态和性能指标。 可视化工具(如仪表盘、图表)有助于快速识别问题和进行数据分析。</td></tr></tbody></table>
|
|||
|
<h3 id="常用的监控工具">常用的监控工具<a aria-hidden="true" tabindex="-1" href="#常用的监控工具" class="internal"> §</a></h3>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table><thead><tr><th>工具</th><th>概述</th><th>特点</th></tr></thead><tbody><tr><td><strong>Prometheus</strong></td><td>Prometheus 是一款开源的系统监控和报警工具,特别适用于云原生和容器化环境。</td><td>高效的数据采集和存储,强大的查询语言(PromQL),灵活的报警机制,丰富的可视化支持(如 Grafana)。</td></tr><tr><td><strong>Grafana</strong></td><td>Grafana 是一款开源的可视化和分析平台,用于展示和监控系统数据。</td><td>支持多种数据源(如 Prometheus、InfluxDB、Elasticsearch),强大的仪表盘和图表功能,灵活的报警和通知机制。</td></tr><tr><td><strong>Zabbix</strong></td><td>Zabbix 是一款开源的企业级监控解决方案,适用于大规模分布式系统的监控。</td><td>全面的监控功能,灵活的报警机制,强大的数据可视化和报告生成能力,广泛的社区支持。</td></tr><tr><td><strong>Nagios</strong></td><td>Nagios 是一款经典的开源监控工具,广泛应用于 IT 基础设施的监控。</td><td>灵活的插件机制,支持多种监控对象,可靠的报警和通知功能,丰富的社区插件。</td></tr><tr><td><strong>Collectd</strong></td><td>Collectd 是一款轻量级的系统统计收集工具,用于收集和传输系统性能数据。</td><td>高效的数据采集,多种插件支持,灵活的数据输出选项(如写入 InfluxDB、Graphite)。</td></tr><tr><td><strong>Telegraf</strong></td><td>Telegraf 是一个开源的服务器代理,用于收集和发送指标数据,作为 TICK(Telegraf, InfluxDB, Chronograf, Kapacitor)堆栈的一部分。</td><td>插件驱动的架构,支持多种输入和输出插件,易于集成和扩展。</td></tr></tbody></table>
|
|||
|
<h2 id="使用内置工具监控">使用内置工具监控<a aria-hidden="true" tabindex="-1" href="#使用内置工具监控" class="internal"> §</a></h2>
|
|||
|
<p>KVM(Kernel-based Virtual Machine)环境中,内置的监控工具如 <code>virsh</code> 和 <code>virt-top</code> 提供了便捷的虚拟机监控方法,帮助管理员实时了解虚拟机的运行状态和资源使用情况。本文将详细介绍如何使用 <code>virsh</code> 和 <code>virt-top</code> 进行监控。</p>
|
|||
|
<h3 id="使用-virsh-进行监控">使用 <code>virsh</code> 进行监控<a aria-hidden="true" tabindex="-1" href="#使用-virsh-进行监控" class="internal"> §</a></h3>
|
|||
|
<p><code>virsh</code> 是 libvirt 提供的命令行工具,用于管理和监控 KVM 虚拟机。通过 <code>virsh</code> 命令,可以查看虚拟机的信息和资源使用情况。</p>
|
|||
|
<h4 id="查看虚拟机信息">查看虚拟机信息<a aria-hidden="true" tabindex="-1" href="#查看虚拟机信息" class="internal"> §</a></h4>
|
|||
|
<p>使用 <code>virsh</code> 命令可以查看虚拟机的基本信息,包括状态、配置和资源分配情况:</p>
|
|||
|
<ol>
|
|||
|
<li>
|
|||
|
<p><strong>列出所有虚拟机</strong>:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">virsh</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">list</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--all</span></span></code></pre></div>
|
|||
|
<p>输出示例:</p>
|
|||
|
<pre><code> Id Name State
|
|||
|
----------------------------------------------------
|
|||
|
1 myvm running
|
|||
|
- testvm shut off
|
|||
|
</code></pre>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p><strong>查看虚拟机详细信息</strong>:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">virsh</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">dominfo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);"><</span><span style="color:var(--shiki-token-string);">VM</span><span style="color:var(--shiki-color-text);">名</span><span style="color:var(--shiki-token-keyword);">></span></span></code></pre></div>
|
|||
|
<p>输出示例:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="text" data-theme="default"><code data-language="text" data-theme="default"><span data-line><span style="color:var(--shiki-color-text);">Id: 1</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">Name: myvm</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">UUID: 2d4c3b1c-467d-4b88-8f0d-5b63a3c6e29d</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">OS Type: hvm</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">State: running</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">CPU(s): 4</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">Max memory: 2097152 KiB</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">Used memory: 2097152 KiB</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">Persistent: yes</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">Autostart: disable</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">Managed save: no</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h4 id="监控资源使用情况">监控资源使用情况<a aria-hidden="true" tabindex="-1" href="#监控资源使用情况" class="internal"> §</a></h4>
|
|||
|
<p>通过 <code>virsh</code> 命令,可以监控虚拟机的实时资源使用情况,包括 CPU 和内存使用情况:</p>
|
|||
|
<ol>
|
|||
|
<li>
|
|||
|
<p><strong>查看虚拟机 CPU 和内存使用情况</strong>:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">virsh</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">domstats</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);"><</span><span style="color:var(--shiki-token-string);">VM</span><span style="color:var(--shiki-color-text);">名</span><span style="color:var(--shiki-token-keyword);">></span></span></code></pre></div>
|
|||
|
<p>输出示例:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="text" data-theme="default"><code data-language="text" data-theme="default"><span data-line><span style="color:var(--shiki-color-text);">Domain: 'myvm'</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> state.state=1</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> state.reason=1</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> cpu.time=1234567890</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> cpu.user=234567890</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> cpu.system=34567890</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> balloon.current=2097152</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> balloon.maximum=2097152</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> balloon.swap_in=0</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> balloon.swap_out=0</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> balloon.major_fault=0</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> balloon.minor_fault=12345</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> balloon.usable=1987654</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> ...</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p><strong>查看所有虚拟机的资源使用情况</strong>:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">virsh</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">list</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--all</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">--name</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-keyword);">|</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">xargs</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-I</span><span style="color:var(--shiki-color-text);">{} virsh domstats {}</span></span></code></pre></div>
|
|||
|
<p>该命令将列出所有虚拟机的资源使用统计信息,便于管理员进行整体监控。</p>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h3 id="使用-virt-top-监控">使用 <code>virt-top</code> 监控<a aria-hidden="true" tabindex="-1" href="#使用-virt-top-监控" class="internal"> §</a></h3>
|
|||
|
<p><code>virt-top</code> 是一个类似于 <code>top</code> 的命令行工具,用于实时监控 KVM 虚拟机的性能和资源使用情况。通过 <code>virt-top</code>,管理员可以直观地查看每个虚拟机的 CPU、内存、磁盘和网络使用情况。</p>
|
|||
|
<h4 id="安装和配置-virt-top">安装和配置 <code>virt-top</code><a aria-hidden="true" tabindex="-1" href="#安装和配置-virt-top" class="internal"> §</a></h4>
|
|||
|
<ol>
|
|||
|
<li><strong>安装 <code>virt-top</code></strong>:</li>
|
|||
|
</ol>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-comment);">## 在基于 Debian 的系统(如 Ubuntu)上</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">apt-get</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">install</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">virt-top</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-comment);">## 在基于 RHEL 的系统(如 CentOS)上</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">yum</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">install</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">virt-top</span></span></code></pre></div>
|
|||
|
<ol>
|
|||
|
<li>
|
|||
|
<p><strong>配置 <code>virt-top</code></strong>:</p>
|
|||
|
<p>安装完成后,运行 <code>virt-top</code> 命令启动监控:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">virt-top</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h3 id="使用-virt-top-查看虚拟机性能">使用 <code>virt-top</code> 查看虚拟机性能<a aria-hidden="true" tabindex="-1" href="#使用-virt-top-查看虚拟机性能" class="internal"> §</a></h3>
|
|||
|
<p><code>virt-top</code> 提供了一个交互式界面,显示每个虚拟机的详细性能数据:</p>
|
|||
|
<ol>
|
|||
|
<li>
|
|||
|
<p><strong>启动 <code>virt-top</code></strong>:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">virt-top</span></span></code></pre></div>
|
|||
|
<p>输出示例:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="text" data-theme="default"><code data-language="text" data-theme="default"><span data-line><span style="color:var(--shiki-color-text);">virt-top 0.5.12 x86_64 libvirt 6.0.0</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">2 domains, 1 active, 1 running, 0 sleeping, 0 paused, 0 inactive D:0 O:0 X:0</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">CPU: 2.0% Mem: 2097152 kB (64.0%) RSS: 512 MB</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">Domains: 2 ID S RDRQ RDRS WRRQ WRRS RXBY TXBY %CPU %MEM</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> 1 myvm 1 R 0 0 0 0 0 0 2.0 64.0</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p><strong>查看具体虚拟机的详细信息</strong>:</p>
|
|||
|
<ul>
|
|||
|
<li>在 <code>virt-top</code> 界面中,使用箭头键选择具体的虚拟机,然后按回车键查看详细信息。</li>
|
|||
|
<li>可以查看的性能指标包括:CPU 使用率、内存使用率、磁盘读写、网络接收和发送等。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p><strong>自定义视图和排序</strong>:</p>
|
|||
|
<ul>
|
|||
|
<li>按 <code>f</code> 键选择要显示的字段,可以选择 CPU、内存、磁盘、网络等不同的监控指标。</li>
|
|||
|
<li>按 <code>s</code> 键选择排序方式,可以按 CPU 使用率、内存使用率、磁盘 I/O 等进行排序,方便定位高负载的虚拟机。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<p>通过使用 <code>virsh</code> 和 <code>virt-top</code> 工具,管理员可以方便地监控 KVM 虚拟化环境中虚拟机的运行状态和资源使用情况。这些工具提供了丰富的命令和参数,可以满足大部分日常监控和性能分析的需求。在实际应用中,应根据具体需求和环境特点,选择合适的监控工具和方法,以确保虚拟机和宿主机的稳定运行和高效性能。</p>
|
|||
|
<h2 id="使用系统监控工具">使用系统监控工具<a aria-hidden="true" tabindex="-1" href="#使用系统监控工具" class="internal"> §</a></h2>
|
|||
|
<p>除了专门的虚拟化监控工具,系统自带的监控工具如 <code>top</code>、<code>htop</code>、<code>iotop</code> 和 <code>iftop</code> 也可以用来监控 KVM 虚拟化环境中的性能。本文将详细介绍这些工具的使用方法,包括查看系统整体性能、监控虚拟机的资源占用、监控磁盘 I/O 性能以及监控网络流量。</p>
|
|||
|
<h2 id="使用-top-和-htop">使用 <code>top</code> 和 <code>htop</code><a aria-hidden="true" tabindex="-1" href="#使用-top-和-htop" class="internal"> §</a></h2>
|
|||
|
<h3 id="查看系统整体性能">查看系统整体性能<a aria-hidden="true" tabindex="-1" href="#查看系统整体性能" class="internal"> §</a></h3>
|
|||
|
<p><code>top</code> 和 <code>htop</code> 是常用的系统性能监控工具,提供了关于系统资源使用的实时信息:</p>
|
|||
|
<ol>
|
|||
|
<li>
|
|||
|
<p><strong>使用 <code>top</code> 查看系统性能</strong>:启动 <code>top</code>:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">top</span></span></code></pre></div>
|
|||
|
<p>输出示例:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="text" data-theme="default"><code data-language="text" data-theme="default"><span data-line><span style="color:var(--shiki-color-text);">top - 14:55:30 up 10 days, 2:48, 3 users, load average: 0.00, 0.01, 0.05</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">Tasks: 125 total, 1 running, 124 sleeping, 0 stopped, 0 zombie</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">%Cpu(s): 0.3 us, 0.1 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">KiB Mem : 2048.0 total, 104.0 free, 512.0 used, 1432.0 buff/cache</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">KiB Swap: 1024.0 total, 1024.0 free, 0.0 used. 1480.0 avail Mem </span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"></span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> 1234 root 20 0 162180 7644 4388 S 0.3 0.4 0:00.03 qemu-kvm</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> ...</span></span></code></pre></div>
|
|||
|
<p>该命令显示系统的 CPU、内存使用情况,以及每个进程的资源占用。</p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p><strong>使用 <code>htop</code> 查看系统性能</strong>:启动 <code>htop</code>(如果未安装,可以通过 <code>sudo apt-get install htop</code> 或 <code>sudo yum install htop</code> 安装):</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">htop</span></span></code></pre></div>
|
|||
|
<p><code>htop</code> 提供了比 <code>top</code> 更友好的界面,支持鼠标操作和自定义视图。可以使用上下箭头键浏览进程,使用 F2 键进入设置界面。</p>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h3 id="监控虚拟机的资源占用">监控虚拟机的资源占用<a aria-hidden="true" tabindex="-1" href="#监控虚拟机的资源占用" class="internal"> §</a></h3>
|
|||
|
<p>在 <code>top</code> 和 <code>htop</code> 中,可以通过筛选 KVM 相关进程来监控虚拟机的资源占用情况:</p>
|
|||
|
<ol>
|
|||
|
<li>
|
|||
|
<p><strong>使用 <code>top</code> 监控虚拟机资源占用</strong>:</p>
|
|||
|
<p>启动 <code>top</code> 后,按 <code>u</code> 键,然后输入虚拟机所属用户(通常是 qemu 或 libvirt),按回车键:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">top</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">-u</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">qemu</span></span></code></pre></div>
|
|||
|
<p>该命令将只显示属于该用户的进程,包括 KVM 虚拟机进程。</p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p><strong>使用 <code>htop</code> 监控虚拟机资源占用</strong>:启动 <code>htop</code> 后,按 <code>F4</code> 键进入过滤模式,然后输入 <code>qemu</code> 或虚拟机进程名:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">htop</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h2 id="使用-iotop">使用 <code>iotop</code><a aria-hidden="true" tabindex="-1" href="#使用-iotop" class="internal"> §</a></h2>
|
|||
|
<p><code>iotop</code> 是一个用于监控磁盘 I/O 性能的工具,可以帮助找出性能瓶颈。需要 root 权限运行。</p>
|
|||
|
<h3 id="监控磁盘-io-性能">监控磁盘 I/O 性能<a aria-hidden="true" tabindex="-1" href="#监控磁盘-io-性能" class="internal"> §</a></h3>
|
|||
|
<ol>
|
|||
|
<li>
|
|||
|
<p><strong>安装 <code>iotop</code></strong>:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);"># 在基于Debian的系统上</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">apt-get</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">install</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iotop</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);"># 在基于RHEL的系统上</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">yum</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">install</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iotop</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p><strong>启动 <code>iotop</code></strong>:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iotop</span></span></code></pre></div>
|
|||
|
<p>输出示例:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="text" data-theme="default"><code data-language="text" data-theme="default"><span data-line><span style="color:var(--shiki-color-text);">less复制代码Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">1234 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:1]</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">...</span></span></code></pre></div>
|
|||
|
<p><code>iotop</code> 显示每个进程的实时磁盘读写速度,帮助管理员识别高 I/O 负载进程。</p>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h3 id="找出性能瓶颈">找出性能瓶颈<a aria-hidden="true" tabindex="-1" href="#找出性能瓶颈" class="internal"> §</a></h3>
|
|||
|
<ol>
|
|||
|
<li><strong>通过排序和过滤找出 I/O 瓶颈</strong>:
|
|||
|
<ul>
|
|||
|
<li>在 <code>iotop</code> 界面中,按 <code>O</code> 键只显示正在进行 I/O 操作的进程。</li>
|
|||
|
<li>按 <code>P</code> 键根据 I/O 优先级排序,或按 <code>T</code> 键根据线程排序,快速定位高 I/O 负载进程。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>查看具体进程的 I/O 使用情况</strong>:
|
|||
|
<ul>
|
|||
|
<li>使用上下箭头键选择具体进程,查看详细的 I/O 读写情况。可以通过进程 ID(PID)进一步分析相关进程的具体操作和配置。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h2 id="使用-iftop">使用 <code>iftop</code><a aria-hidden="true" tabindex="-1" href="#使用-iftop" class="internal"> §</a></h2>
|
|||
|
<p><code>iftop</code> 是一个实时网络流量监控工具,可以帮助分析网络性能问题。</p>
|
|||
|
<h3 id="监控网络流量">监控网络流量<a aria-hidden="true" tabindex="-1" href="#监控网络流量" class="internal"> §</a></h3>
|
|||
|
<ol>
|
|||
|
<li>
|
|||
|
<p><strong>安装 <code>iftop</code></strong>:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-comment);">## 在基于 Debian 的系统上</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">apt-get</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">install</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iftop</span></span>
|
|||
|
<span data-line> </span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-comment);">## 在基于 RHEL 的系统上</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">yum</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">install</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iftop</span></span></code></pre></div>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p><strong>启动 <code>iftop</code></strong>:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="shell" data-theme="default"><code data-language="shell" data-theme="default"><span data-line><span style="color:var(--shiki-token-function);">sudo</span><span style="color:var(--shiki-color-text);"> </span><span style="color:var(--shiki-token-string);">iftop</span></span></code></pre></div>
|
|||
|
<p>输出示例:</p>
|
|||
|
<div data-rehype-pretty-code-fragment><pre style="background-color:var(--shiki-color-background);" tabindex="0" data-language="text" data-theme="default"><code data-language="text" data-theme="default"><span data-line><span style="color:var(--shiki-color-text);">interface: eth0</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">IP address is: 192.168.1.10</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">MAC address is: 00:1a:4b:16:01:59</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">Listening on port 0000</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">---------------------------------------------------</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">192.168.1.10 => 192.168.1.1 123KB 456KB 789KB</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);"> <= 23KB 56KB 89KB</span></span>
|
|||
|
<span data-line><span style="color:var(--shiki-color-text);">...</span></span></code></pre></div>
|
|||
|
<p><code>iftop</code> 显示网络接口的实时流量情况,包括发送和接收数据的速率。</p>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<h3 id="分析网络性能问题">分析网络性能问题<a aria-hidden="true" tabindex="-1" href="#分析网络性能问题" class="internal"> §</a></h3>
|
|||
|
<ol>
|
|||
|
<li><strong>通过排序和过滤分析流量</strong>:
|
|||
|
<ul>
|
|||
|
<li>在 <code>iftop</code> 界面中,按 <code>P</code> 键切换端口显示模式,按 <code>N</code> 键切换主机名显示模式,按 <code>S</code> 键切换源地址和目的地址显示顺序。</li>
|
|||
|
<li>使用 <code>l</code> 键限制显示特定网络接口的流量,帮助聚焦分析特定接口的网络性能。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li><strong>查看具体连接的流量使用情况</strong>:
|
|||
|
<ul>
|
|||
|
<li>使用上下箭头键选择具体连接,查看详细的流量使用情况。可以进一步分析哪些主机或服务占用了过多的网络带宽。</li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
<p>通过使用系统监控工具如 <code>top</code>、<code>htop</code>、<code>iotop</code> 和 <code>iftop</code>,管理员可以实时了解 KVM 虚拟化环境中系统资源的使用情况,快速识别并解决性能问题,确保虚拟机和宿主机的稳定运行和高效性能。在实际应用中,应结合具体需求和环境特点,灵活使用这些工具进行系统监控和性能优化。</p></article></div><div class="right sidebar"><div class="graph "><h3>Graph View</h3><div class="graph-outer"><div id="graph-container" data-cfg="{"drag":true,"zoom":true,"depth":1,"scale":1.1,"repelForce":0.5,"centerForce":0.3,"linkDistance":30,"fontSize":0.6,"opacityScale":1,"showTags":true,"removeTags":[]}"></div><svg version="1.1" id="global-graph-icon" xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 55 55" fill="currentColor" xmlSpace="preserve"><path d="M49,0c-3.309,0-6,2.691-6,6c0,1.035,0.263,2.009,0.726,2.86l-9.829,9.829C32.542,17.634,30.846,17,29,17
|
|||
|
s-3.542,0.634-4.898,1.688l-7.669-7.669C16.785,10.424,17,9.74,17,9c0-2.206-1.794-4-4-4S9,6.794,9,9s1.794,4,4,4
|
|||
|
c0.74,0,1.424-0.215,2.019-0.567l7.669,7.669C21.634,21.458,21,23.154,21,25s0.634,3.542,1.688,4.897L10.024,42.562
|
|||
|
C8.958,41.595,7.549,41,6,41c-3.309,0-6,2.691-6,6s2.691,6,6,6s6-2.691,6-6c0-1.035-0.263-2.009-0.726-2.86l12.829-12.829
|
|||
|
c1.106,0.86,2.44,1.436,3.898,1.619v10.16c-2.833,0.478-5,2.942-5,5.91c0,3.309,2.691,6,6,6s6-2.691,6-6c0-2.967-2.167-5.431-5-5.91
|
|||
|
v-10.16c1.458-0.183,2.792-0.759,3.898-1.619l7.669,7.669C41.215,39.576,41,40.26,41,41c0,2.206,1.794,4,4,4s4-1.794,4-4
|
|||
|
s-1.794-4-4-4c-0.74,0-1.424,0.215-2.019,0.567l-7.669-7.669C36.366,28.542,37,26.846,37,25s-0.634-3.542-1.688-4.897l9.665-9.665
|
|||
|
C46.042,11.405,47.451,12,49,12c3.309,0,6-2.691,6-6S52.309,0,49,0z M11,9c0-1.103,0.897-2,2-2s2,0.897,2,2s-0.897,2-2,2
|
|||
|
S11,10.103,11,9z M6,51c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S8.206,51,6,51z M33,49c0,2.206-1.794,4-4,4s-4-1.794-4-4
|
|||
|
s1.794-4,4-4S33,46.794,33,49z M29,31c-3.309,0-6-2.691-6-6s2.691-6,6-6s6,2.691,6,6S32.309,31,29,31z M47,41c0,1.103-0.897,2-2,2
|
|||
|
s-2-0.897-2-2s0.897-2,2-2S47,39.897,47,41z M49,10c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S51.206,10,49,10z"></path></svg></div><div id="global-graph-outer"><div id="global-graph-container" data-cfg="{"drag":true,"zoom":true,"depth":-1,"scale":0.9,"repelForce":0.5,"centerForce":0.3,"linkDistance":30,"fontSize":0.6,"opacityScale":1,"showTags":true,"removeTags":[]}"></div></div></div><div class="toc desktop-only"><button type="button" id="toc" class><h3>Table of Contents</h3><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="fold"><polyline points="6 9 12 15 18 9"></polyline></svg></button><div id="toc-content"><ul class="overflow"><li class="depth-0"><a href="#监控概述" data-for="监控概述">监控概述</a></li><li class="depth-1"><a href="#为什么需要监控" data-for="为什么需要监控">为什么需要监控?</a></li><li class="depth-1"><a href="#监控的基本原则" data-for="监控的基本原则">监控的基本原则</a></li><li class="depth-1"><a href="#常用的监控工具" data-for="常用的监控工具">常用的监控工具</a></li><li class="depth-0"><a href="#使用内置工具监控" data-for="使用内置工具监控">使用内置工具监控</a></li><li class="depth-1"><a href="#使用-virsh-进行监控" data-for="使用-virsh-进行监控">使用 virsh 进行监控</a></li><li class="depth-1"><a href="#使用-virt-top-监控" data-for="使用-virt-top-监控">使用 virt-top 监控</a></li><li class="depth-1"><a href="#使用-virt-top-查看虚拟机性能" data-for="使用-virt-top-查看虚拟机性能">使用 virt-top 查看虚拟机性能</a></li><li class="depth-0"><a href="#使用系统监控工具" data-for="使用系统监控工具">使用系统监控工具</a></li><li class="depth-0"><a href="#使用-top-和-htop" data-for="使用-top-和-htop">使用 top 和 htop</a></li><li class="depth-1"><a href="#查看系统整体性能" data-for="查看系统整体性能">查看系统整体性能</a></li><li class="depth-1"><a href="#监控虚拟机的资源占用" data-for="监控虚拟机的资源占用">监控虚拟机的资源占用</a></li><li class="depth-0"><a href="#使用-iotop" data-for="使用-iotop">使用 iotop</a></li><li class="depth-1"><a href="#监控磁盘-io-性能" data-for="监控磁盘-io-性能">监控磁盘 I/O 性能</a></li><li class="depth-1"><a href="#找出性能瓶颈" data-for="找出性能瓶颈">找出性能瓶颈</a></li><li class="depth-0"><a href="#使用-iftop" data-for="使用-iftop">使用 iftop</a></li><li class="depth-1"><a href="#监控网络流量" data-for="监控网络流量">监控网络流量</a></li><li class="depth-1"><a href="#分析网络性能问题" data-for="分析网络性能问题">分析网络性能问题</a></li></ul></div></div><div class="backlinks "><h3>Backlinks</h3><ul class="overflow"><li>No backlinks found</li></ul></div><div class="explorer mobile-only"><button type="button" id="explorer" data-behavior="collapse" data-collapsed="collapsed" data-savestate="true" data-tree="[{"path":"Basics","collapsed":true},{"path":"Basics/english","collapsed":true},{"path":"Blog","collapsed":true},{"path":"Book","collapsed":true},{"path":"Book/个人成长","collapsed":true},{"path":"Book/医学健康","collapsed":true},{"path":"Book/历史","collapsed":true},{"path":"Book/哲学宗教","collapsed":true},{"path":"Book/心理","collapsed":true},{"path":"Book/政治军事","collapsed":true},{"path":"Book/教育学习","collapsed":true},{"path":"Book/<2F><>
|
|||
|
function toggleCallout() {
|
|||
|
const outerBlock = this.parentElement;
|
|||
|
outerBlock.classList.toggle(`is-collapsed`);
|
|||
|
const collapsed = outerBlock.classList.contains(`is-collapsed`);
|
|||
|
const height = collapsed ? this.scrollHeight : outerBlock.scrollHeight;
|
|||
|
outerBlock.style.maxHeight = height + `px`;
|
|||
|
let current = outerBlock;
|
|||
|
let parent = outerBlock.parentElement;
|
|||
|
while (parent) {
|
|||
|
if (!parent.classList.contains(`callout`)) {
|
|||
|
return;
|
|||
|
}
|
|||
|
const collapsed2 = parent.classList.contains(`is-collapsed`);
|
|||
|
const height2 = collapsed2 ? parent.scrollHeight : parent.scrollHeight + current.scrollHeight;
|
|||
|
parent.style.maxHeight = height2 + `px`;
|
|||
|
current = parent;
|
|||
|
parent = parent.parentElement;
|
|||
|
}
|
|||
|
}
|
|||
|
function setupCallout() {
|
|||
|
const collapsible = document.getElementsByClassName(
|
|||
|
`callout is-collapsible`
|
|||
|
);
|
|||
|
for (const div of collapsible) {
|
|||
|
const title = div.firstElementChild;
|
|||
|
if (title) {
|
|||
|
title.removeEventListener(`click`, toggleCallout);
|
|||
|
title.addEventListener(`click`, toggleCallout);
|
|||
|
const collapsed = div.classList.contains(`is-collapsed`);
|
|||
|
const height = collapsed ? title.scrollHeight : div.scrollHeight;
|
|||
|
div.style.maxHeight = height + `px`;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
document.addEventListener(`nav`, setupCallout);
|
|||
|
window.addEventListener(`resize`, setupCallout);
|
|||
|
</script><script type="module">
|
|||
|
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';
|
|||
|
const darkMode = document.documentElement.getAttribute('saved-theme') === 'dark'
|
|||
|
mermaid.initialize({
|
|||
|
startOnLoad: false,
|
|||
|
securityLevel: 'loose',
|
|||
|
theme: darkMode ? 'dark' : 'default'
|
|||
|
});
|
|||
|
document.addEventListener('nav', async () => {
|
|||
|
await mermaid.run({
|
|||
|
querySelector: '.mermaid'
|
|||
|
})
|
|||
|
});
|
|||
|
</script><script src="https://cdn.jsdelivr.net/npm/katex@0.16.7/dist/contrib/copy-tex.min.js" type="application/javascript"></script><script src="../../../../postscript.js" type="module"></script></html>
|