# 安装 QEMU Guest Agent

[QEMU Guest Agent](https://qemu-project.gitlab.io/qemu/interop/qemu-ga.html) 是一个辅助守护进程，安装在虚拟机内部。它用于在主机和虚拟机之间交换信息，并在虚拟机内部执行命令。该代理使用 QEMU 的原生虚拟机代理。官方代理在安全性认证、维护和支持方面是一个全面且可靠的选择。

弹性算力通过 zenConsole 中的 **性能** 选项卡提供您的实例指标的高级视图。所有实例在创建时都有基本的性能数据可用。然而，安装 QEMU 虚拟机代理可以提供更深入的实例行为洞察，包括以下附加指标：

* 系统负载平均值 - 最近 1 分钟
* 系统负载平均值 - 最近 5 分钟
* 系统负载平均值 - 最近 15 分钟
* 内存利用率
* 磁盘利用率
* 运行时间

{% hint style="info" %} <mark style="color:blue;">**注**</mark>

* <mark style="color:blue;">只有在创建实例时选择了默认的公网 IP，QEMU 虚拟机代理才能成功安装并收集数据。</mark>
* <mark style="color:blue;">对于 Windows 操作系统，默认已安装 QEMU 虚拟机代理。您可以根据需要禁用数据收集。</mark>
  {% endhint %}

对于使用 Rocky、CentOS、AlmaLinux、Alpine 和 FreeBSD 操作系统的实例，您需要手动配置代理以激活它，具体步骤如下。

### **Rocky/CentOS/AlmaLinux**

代理默认是禁用的。您需要修改 `/etc/sysconfig/qemu-ga` 文件。

1. 使用文本编辑器打开文件：

   ```bash
   sudo vi /etc/sysconfig/qemu-ga
   ```
2. 更新 `FILTER_RPC_ARGS` 以启用所需的 RPC。添加以下行或在已存在的情况下进行修改：

   <pre class="language-sh"><code class="lang-sh"><strong>FILTER_RPC_ARGS="--block-rpcs=guest-file-seek,guest-file-flush,guest-exec,guest-exec-status"
   </strong>
   # 虚拟机代理命令，用逗号分隔允许的 RPC 以启用，
   # 或者为空列表以禁用所有 RPC。
   #
   # 您可以使用 "qemu-ga --allow-rpcs='?'" 获取 RPC 命令列表。
   # 在允许列表中，逗号和命令之间不应有空格。
   FILTER_RPC_ARGS="--allow-rpcs=guest-file-open,guest-file-close,guest-file-read,guest-file-write,guest-sync-delimited,guest-sync,guest-ping,guest-get-time,guest-set-time,guest-info,guest-shutdown,guest-fsfreeze-status,guest-fsfreeze-freeze,guest-fsfreeze-freeze-list,guest-fsfreeze-thaw,guest-fstrim,guest-suspend-disk,guest-suspend-ram,guest-suspend-hybrid,guest-network-get-interfaces,guest-get-vcpus,guest-set-vcpus,guest-get-disks,guest-get-fsinfo,guest-set-user-password,guest-get-memory-blocks,guest-set-memory-blocks,guest-get-memory-block-info,guest-get-host-name,guest-get-users,guest-get-timezone,guest-get-osinfo,guest-get-devices,guest-ssh-get-authorized-keys,guest-ssh-add-authorized-keys,guest-ssh-remove-authorized-keys,guest-get-diskstats,guest-get-cpustats"
   </code></pre>
3. 重启 QEMU 虚拟机代理服务

   ```sh
   sudo systemctl restart qemu-guest-agent
   ```

### **Alpine Linux**

代理默认是禁用的。

1. 启动 QEMU 虚拟机代理服务：

   ```bash
   sudo rc-service qemu-guest-agent start
   ```
2. 检查 QEMU 虚拟机代理服务的状态：

   ```bash
   sudo rc-service qemu-guest-agent status
   ```
3. 编辑 QEMU 虚拟机代理的初始化脚本：
   * 使用文本编辑器打开初始化脚本：

     ```bash
     sudo vi /etc/init.d/qemu-guest-agent
     ```
   * 找到 `command_args` 行并修改它以启用详细日志记录：

     ```sh
     command_args="--verbose -m ${GA_METHOD:-virtio-serial} -p ${GA_PATH:-/dev/virtio-ports/org.qemu.guest_agent.0} -l /var/log/qemu-ga.log -d"
     ```
4. 重启 QEMU 虚拟机代理服务：

   ```bash
   sudo rc-service qemu-guest-agent restart
   ```

### **FreeBSD**

代理默认是禁用的。

1. 使用文本编辑器打开 QEMU 虚拟机代理配置文件：

   ```bash
   sudo vi /etc/rc.conf
   ```
2. 添加以下行以启用 QEMU 虚拟机代理服务：

   ```sh
   qemu_guest_agent_enable="YES"
   ```
3. 启动 QEMU 虚拟机代理服务：

   ```sh
   sudo service qemu_guest_agent start
   ```
4. 检查 QEMU 虚拟机代理服务的状态：

   ```sh
   sudo service qemu_guest_agent status
   ```

代理默认是禁用的。您可以查看[官方文档](https://www.freshports.org/emulators/qemu-guest-agent)以获取更多详细信息。

代理默认是禁用的。您可以查看[官方文档](https://www.freshports.org/emulators/qemu-guest-agent)以获取更多详细信息。

1. 修改 `/etc/rc.conf` 以启用 QEMU guest agent：
   * 使用文本编辑器打开 `/etc/rc.conf`：

     ```sh
     sudo vi /etc/rc.conf
     ```
   * 添加以下行以启用和配置 QEMU guest agent：

     ```sh
     qemu_guest_agent_enable="YES"
     qemu_guest_agent_flags="-d -v -l /var/log/qemu-ga.log"
     ```
2. 启动 QEMU guest agent 服务：

   ```sh
   sudo service qemu-guest-agent start
   ```
3. 验证 QEMU guest agent 服务的状态：

   ```sh
   sudo service qemu-guest-agent status
   ```

#### 预期输出

* 服务未运行时的状态：

  ```sh
  sudo service qemu-guest-agent status
  qemu_guest_agent 未运行。
  ```
* 服务启动时的输出：

  ```sh
  sudo service qemu-guest-agent start
  启动 qemu_guest_agent。
  1715676493.359902: debug: Guest agent version 8.2.2 started
  ```
* 服务运行时的状态：

  ```sh
  sudo service qemu-guest-agent status
  qemu_guest_agent 正在以进程 ID 2051 运行。
  ```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.console.zenlayer.com/welcome/cn/elastic-compute/get-started/create-an-instance/install-qemu-guest-agent.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
