安装 Monitoring 代理

本指南介绍如何安装适用于 Monitoring on Compute Engine and Amazon Elastic Compute Cloud (EC2) 虚拟机 (VM) 实例的 Stackdriver Monitoring 代理。如需了解详情,请参阅受支持的虚拟机实例

您可以选择不使用 Monitoring 代理,但我们建议您使用。Monitoring 在没有代理时也可以访问某些指标,包括 CPU 利用率、某些磁盘流量指标、网络流量和正常运行时间。

在运行 Microsoft Windows 系统的实例上,代理可记录 CPU 使用率和内存、页面文件和卷使用情况。如果您运行的是 IIS 或 SQL Server,则默认情况下,代理会从这些服务中收集指标。

准备工作

要安装代理,请确保您符合以下任一项要求:

  • Google Cloud Platform (GCP) 项目或 Amazon Web Services (AWS) 帐号中受支持的虚拟机实例
    • 运行 Monitoring 代理建议至少使用 250 MiB 的常驻 (RSS) 内存。
  • 工作区,用于监控此虚拟机实例所在的 GCP 项目或 AWS 帐号。
  • 虚拟机实例上授权与 Stackdriver 进行通信的凭据。

    • GCP 虚拟机实例通常默认具有凭据。

    • 对于 AWS 实例,您必须在安装代理之前在虚拟机上安装授权凭据

适用于 AWS 虚拟机实例的 GCP 项目

Stackdriver 文档通常指“与虚拟机实例相关联的 GCP 项目”。对于 AWS 虚拟机实例,它指的是关联到您的 AWS 帐号的 AWS 连接器项目

Stackdriver 在将您的 AWS 帐号关联到工作区的同时会创建 AWS 连接器项目。连接器项目具有以下属性:

  • AWS Link 开头的名称
  • aws- 开头的 ID

使用此 ID 作为“与虚拟机实例相关联的 GCP 项目”的 ID。

如需了解详情,请参阅 Stackdriver Monitoring 快速入门 (AWS)

在无工作区的情况下安装

要先预配您的 GCP 虚拟机实例,然后再选择工作区对其进行监控,您可以在未关联工作区但受支持的 GCP 虚拟机实例上安装代理。在这种情况下,代理会将监控数据发送到虚拟机实例的 GCP 项目。只有将此项目与工作区关联之后,才可在 Monitoring 中访问此数据。

没有远程软件包访问权限情况下安装

要在安全政策拒绝其访问远程软件包代码库的主机上安装或升级代理,请执行以下操作:

  1. 在拥有访问权限的主机上安装代理软件包:

    • Google Cloud 软件包代码库:packages.cloud.google.com
    • (对于 Kubernetes 环境)Google Container Registry:gcr.io
  2. 将软件包复制到目标主机。

为代理授权

在安装 Monitoring 代理之前,请检查您的虚拟机实例是否具有代理需要的凭据。代理必须具有将监控信息发送到 Monitoring 的权限。权限是通过使用存储在您的虚拟机实例中、并充当代理的应用默认凭据的服务帐号凭据提供的。

  • 如果要在 Compute Engine 虚拟机实例上安装代理,则实例上的默认服务帐号应具有代理所需的凭据。但是,非常旧的实例或者未使用默认凭据创建的实例需要私钥凭据。要验证您的凭据,请参阅验证 Compute Engine 凭据

  • 如果要在 Amazon EC2 虚拟机实例上安装代理,则没有默认服务帐号。您必须从 AWS 连接器项目的服务帐号手动获取私钥凭据。如果您认为您的实例已经拥有私钥凭据,请参阅验证私钥凭据,以检查这些凭据。要添加私钥凭据,请直接跳到添加凭据

添加凭据

如果您要在 Compute Engine 虚拟机实例上安装代理,并已使用默认凭据创建实例,则可以跳过此部分,直接转到在 Linux 上安装在 Windows 上安装。如果您不确定是否拥有正确的凭据,请参阅验证 Compute Engine 凭据

如果您的 Compute Engine 实例没有正确的凭据,或者您要在 Amazon EC2 实例上安装代理,可参阅以下部分了解如何操作:

  1. 使用所需的权限和私钥凭据创建服务帐号。
  2. 将私钥凭据复制到您的虚拟机实例,在此它们充当您的实例上运行的软件的应用默认凭据

创建服务帐号

使用 GCP Console 的 IAM 和管理 > 服务帐号页面为与您的虚拟机实例相关联的 GCP 项目创建服务帐号和私钥。

打开 IAM 服务帐号页面

  1. 点击选择项目,然后选择要在其中创建服务帐号的 GCP 项目:

    • 对于 Compute Engine 实例,请选择您在其中创建了实例的项目。如果您在工作区托管项目中创建了实例,请选择工作区。

    • 对于 Amazon EC2 实例,请选择在将 Monitoring 关联到 AWS 帐号时创建的 AWS 连接器项目。连接器项目的名称通常以 AWS Link 开头。 请不要在 Workspace 项目中创建服务帐号。

    点击打开。如果没有现成的服务帐号,则对话框会提示您创建一个。否则,您会看到以下服务帐号页面:

    服务帐号

  2. 服务帐号页面上,点击创建服务帐号

  3. 服务帐号详情窗格,填写以下信息:

    1. 输入服务帐号名称。例如 Agent service account
    2. 输入服务帐号说明。
    3. 点击创建
  4. 服务帐号权限窗格,填写以下信息:

    1. 选择角色下拉菜单中,选择监控 > 监控指标写入者。这将为 Monitoring 代理授予权限。
    2. 点击添加其他角色
    3. 在新的选择角色下拉菜单中,选择日志记录 > 日志写入程序。这将为 Stackdriver Logging 代理授权。添加此角色可让您使用此服务帐号来运行这两个 Stackdriver 代理。
    4. 点击继续
  5. 向用户授予访问此服务帐号的权限的窗格:

    1. 点击创建密钥
    2. 选择 JSON 作为密钥类型
    3. 点击创建

    创建密钥后,GCP Console 会将私钥文件写入工作站的下载目录,并显示类似如下所示的弹出式对话框:

    私钥已保存

  6. 在弹出式窗口中点击关闭

  7. 创建服务帐号主页面中,点击完成

将私钥复制到您的实例

要使已添加的服务帐号凭据被识别,您必须将私钥文件复制到虚拟机实例上的以下某个位置(可使用任何文件复制工具):

  • 仅限 Linux 系统/etc/google/auth/application_default_credentials.json
  • 仅限 Windows 系统C:\ProgramData\Google\Auth\application_default_credentials.json
  • 您存储在变量 GOOGLE_APPLICATION_CREDENTIALS 中的任何位置。此变量必须对代理程序可见。

为了方便您遵循以下说明,请将环境变量 CREDS 设置为指向您的凭据文件。例如:

`CREDS="~/Downloads/{project_name}-{key_id}.json"`

以下文件复制说明假定您的工作站和实例上都采用 Linux 环境。如果您使用的是其他配置,请参阅云提供商的文档以了解如何复制私钥文件。在上一步(即创建服务帐号)中,您的私钥凭据应该已存储在您的工作站上的某个位置(您将该位置保存在变量 CREDS 中):

Compute Engine

在您的工作站上,使用 gcloud 命令行工具运行以下代码:

REMOTE_USER="$USER"
INSTANCE="{your-instance-id}"
ZONE="{your-instance-zone}"
gcloud compute scp "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json" --zone "$ZONE"

在您的 Compute Engine 实例上,运行以下命令:

APPLICATION_DEFAULT_CREDS="/etc/google/auth/application_default_credentials.json"
sudo mkdir -p /etc/google/auth
sudo mv "$HOME/temp.json" "$APPLICATION_DEFAULT_CREDS"
sudo chown root:root "$APPLICATION_DEFAULT_CREDS"
sudo chmod 0400 "$APPLICATION_DEFAULT_CREDS"

Amazon EC2

在您的工作站上,使用 scp 运行以下代码:

KEY="{your-ssh-key-pair-file}"
INSTANCE="ec2-{your-instance's-public-ip}.{your-zone}.compute.amazonaws.com"
# The remote user depends on the installed OS: ec2-user, ubuntu, root, etc.
REMOTE_USER="ec2-user"
scp -i "$KEY" "$CREDS" "$REMOTE_USER@$INSTANCE:~/temp.json"

在您的 EC2 实例上,运行以下命令:

APPLICATION_DEFAULT_CREDS="/etc/google/auth/application_default_credentials.json"
sudo mkdir -p /etc/google/auth
sudo mv "$HOME/temp.json" "$APPLICATION_DEFAULT_CREDS"
sudo chown root:root "$APPLICATION_DEFAULT_CREDS"
sudo chmod 0400 "$APPLICATION_DEFAULT_CREDS"

后续步骤

您的虚拟机实例现在有了代理所需的凭据。

  • 如果您想再次检查此凭据,请参阅此页面上的验证私钥凭据

  • 如果您尚未安装 Monitoring 代理,请转到在 Linux 上安装在 Windows 上安装

  • 如果您已经安装了此代理,请重启此代理,以便它可以使用您的新凭据。例如,在您的虚拟机实例上使用以下 Linux 命令:

    sudo service stackdriver-agent restart
    

在 Linux 上安装

此步骤假设您的虚拟机实例运行 Linux 并由工作区监控,而且您的实例具有适合代理的正确凭据。如需了解详情,请参阅添加凭据。这些说明适用于 Google Compute Engine 实例和 Amazon EC2 实例:

  1. 在您的虚拟机实例上运行以下命令以安装 Monitoring 代理:

    curl -sSO https://dl.google.com/cloudagents/install-monitoring-agent.sh
    sudo bash install-monitoring-agent.sh
    

    在安装结束时,您应该可以看到类似以下消息的内容。

    Restarting services
    [ ok ] Restarting stackdriver-agent (via systemctl): stackdriver-agent.service.
    
  2. 如果您使用 HTTP 代理,请执行以下操作:

    1. 修改 Monitoring 代理的系统默认文件,以便将 PROXY_URL 设置为 HTTP 代理的网址。此网址来自您的配置,而不是由 Google 提供的值。配置文件的名称取决于您的 Linux 版本:

      • 对于 Debian 和 Ubuntu,请修改 /etc/default/stackdriver-agent
      • 对于 Amazon Linux、Red Hat、CentOS 和 SUSE,请修改 /etc/sysconfig/stackdriver
    2. 通过在您的虚拟机实例上运行以下命令来重启 Monitoring 代理。

      sudo service stackdriver-agent restart
      

您已完成代理安装。如果遇到问题,请参阅问题排查

在 Windows 上安装

要在运行 Windows 的虚拟机实例上安装代理,请与实例建立 RDP 或类似连接并登录到 Windows,然后执行以下步骤:

  1. 如果您使用的是 HTTP 代理,请通过管理员命令提示符运行以下命令来设置 https_proxy 环境变量,以便代理可以使用出站 HTTPS 将数据发送到 Monitoring:

    setx https_proxy https://[YOUR_PROXY_SERVER_URI] /m
    

    重启 shell 以使此设置生效。

  2. 浏览到以下网址。下载并运行代理的安装程序:

    https://repo.stackdriver.com/windows/StackdriverMonitoring-GCM-46.exe

    这也可以通过以下 PowerShell 命令完成:

    cd $env:UserProfile;
    Invoke-WebRequest https://repo.stackdriver.com/windows/StackdriverMonitoring-GCM-46.exe -OutFile StackdriverMonitoring-GCM-46.exe;
    .\StackdriverMonitoring-GCM-46.exe
    

您现在已完成代理安装。

要以静默方式安装代理,请将 /S 选项附加到安装程序的调用中:

.\StackdriverMonitoring-GCM-46.exe /S

在“静默”模式下,请使用 /D 选项指定安装目录,例如:

.\StackdriverMonitoring-GCM-46.exe /S /D="C:\Stackdriver\Monitoring\"

自动化安装

多家供应商和其他社区成员提供常用配置管理器(包括 Ansible、Chef 和 Puppet)的安装脚本。新脚本推出后,我们会发布指向这些脚本的链接。

确定代理版本

要确定系统上 Monitoring 代理的版本,请在您的虚拟机实例上运行以下命令:

Debian 和 Ubuntu

dpkg-query --show --showformat \
    '${Package} ${Version} ${Architecture} ${Status}\n' \
    stackdriver-agent

Amazon Linux

rpm --query --queryformat '%{NAME} %{VERSION} %{RELEASE} %{ARCH}\n' \
    stackdriver-agent

Red Hat 和 CentOS

rpm --query --queryformat '%{NAME} %{VERSION} %{RELEASE} %{ARCH}\n' \
    stackdriver-agent

SUSE

rpm --query --queryformat '%{NAME} %{VERSION} %{RELEASE} %{ARCH}\n' \
    stackdriver-agent

Microsoft Windows

目前无法确定在 Windows 系统上运行的 Monitoring 代理的版本。

更新代理

使用下表中的命令来更新您的代理:

Debian 和 Ubuntu

在 Debian 或 Ubuntu Linux 上运行以下命令:

sudo apt-get update
sudo apt-get install stackdriver-agent

Amazon Linux

在 Amazon Linux 上运行以下命令:

sudo yum update stackdriver-agent

Red Hat 和 CentOS

在 Red Hat 或 CentOS Linux 上运行以下命令:

sudo yum update stackdriver-agent

SUSE

在 SUSE Linux 上运行以下命令:

sudo zypper update stackdriver-agent

Microsoft Windows

要升级 Microsoft Windows 代理,请按照在 Microsoft Windows 上安装中的说明安装新的代理版本。这会移除您已安装的所有旧代理。

移除代理

使用下表中的命令来移除您的代理:

Debian 和 Ubuntu

在 Debian 或 Ubuntu Linux 上运行以下命令:

sudo apt-get purge stackdriver-agent

Amazon Linux

在 Amazon Linux 上运行以下命令:

sudo yum remove stackdriver-agent

Red Hat 和 CentOS

在 Red Hat 或 CentOS Linux 上运行以下命令:

sudo yum remove stackdriver-agent

SUSE

在 SUSE Linux 上运行以下命令:

sudo zypper remove stackdriver-agent

Microsoft Windows

在 Windows 控制面板中,选择卸载程序。您应该在可以卸载的程序列表中看到 Monitoring 代理

问题排查

请参阅问题排查页面。

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Stackdriver Monitoring
需要帮助?请访问我们的支持页面