使用 Linux 诊断扩展监视 Linux VM 的性能和诊断数据

重要

经典 VM 将于 2023 年 3 月 1 日停用。

如果使用 ASM 中的 IaaS 资源,请在 2023 年 3 月 1 日完成迁移。 我们建议你尽快进行切换,以利用 Azure 资源管理器中的许多增强功能。

有关详细信息,请参阅 将 IaaS 资源在 2023 年 3 月 1 日前迁移到 Azure 资源管理器

本文档介绍 Linux 诊断扩展版本 2.3。

重要

此版本已弃用,并且可能在 2018 年 6 月 30 日之后的任何时间取消发布。 它已替换为版本 3.0。 有关详细信息,请参阅 Linux 诊断扩展 版本 3.0 的文档。

介绍

注意:Linux 诊断扩展以开源形式发布在 GitHub 上,扩展的最新信息会首先在那里发布。您可能需要先检查 GitHub 页面。)

Linux 诊断扩展可帮助用户监视Microsoft Azure 上运行的 Linux VM。 它具有以下功能:

  • 收集系统性能信息并将其从 Linux VM 上传到用户的存储表,包括诊断和 syslog 信息。
  • 允许用户自定义将收集和上传的数据指标。
  • 让用户能够将指定日志文件上传到指定的存储表。

在当前版本 2.3 中,数据包括:

  • 所有 Linux Rsyslog 日志,包括系统、安全性和应用程序日志。
  • 在 System Center 跨平台解决方案站点 指定的所有系统数据。
  • 用户指定的日志文件。

此扩展适用于经典部署模型和 Resource Manager 部署模型。

扩展的当前版本和旧版本的弃用

最新版本的扩展 2.3任何旧版本(2.0、2.1 和 2.2)将于今年年底(2017 年)弃用和取消发布。 如果安装了禁用自动次要版本升级的 Linux 诊断扩展,强烈建议卸载该扩展,并在启用自动次要版本升级的情况下重新安装该扩展。 在经典(ASM)VM 上,如果要通过 Azure XPLAT CLI 或 Powershell 安装扩展,则可以将“2.*”指定为版本来实现此目的。 在 ARM VM 上,可以通过在 VM 部署模板中包含“autoUpgradeMinorVersion”:true 来实现此目的。 此外,扩展的任何新安装都应启用自动次要版本升级选项。

启用 扩展

可以使用 Azure 门户、Azure PowerShell 或 Azure CLI 脚本来启用此扩展。

若要直接从 Azure 门户查看和配置系统和性能数据,请按照 Azure 博客 中的这些步骤进行作。

本文重点介绍如何使用 Azure CLI 命令启用和配置扩展。 这样,即可直接从存储表读取和查看数据。

请注意,此处所述的配置方法不适用于 Azure 门户。 若要直接从 Azure 门户查看和配置系统和性能数据,必须通过门户启用扩展。

先决条件

  • Azure Linux 代理版本 2.0.6 或更高版本

    请注意,大多数 Azure VM Linux 库映像包括 2.0.6 或更高版本的版本。 可以运行 WAAgent -version 来确认 VM 上安装的版本。 如果 VM 运行的版本低于 2.0.6,则可以按照 gitHub 上的 这些说明 来更新它。

  • Azure CLI。 按照本指南 安装 CLI,在计算机上设置 Azure CLI 环境。 安装 Azure CLI 后,可以使用命令行接口(Bash、终端或命令提示符)中的 azure 命令访问 Azure CLI 命令。 例如:

    • 运行 azure vm 扩展集 --help 以获取详细的帮助信息。
    • 运行 azure login 以登录 Azure。
    • 运行 azure vm 列表 列出 Azure 上的所有虚拟机。
  • 用于存储数据的存储帐户。 需要之前创建的存储帐户名称,以及用于将数据上传到存储的访问密钥。

使用 Azure CLI 命令启用 Linux 诊断扩展

方案 1. 使用默认数据集启用扩展

在版本 2.3 或更高版本中,将收集的默认数据包括:

  • 所有 Rsyslog 信息(包括系统、安全和应用程序日志)。
  • 一组核心基础系统数据。 请注意,System Center 跨平台解决方案站点描述了完整的数据集。 如果要启用额外数据,请继续执行方案 2 和 3 中的步骤。

步骤 1. 创建包含以下内容的名为 PrivateConfig.json 的文件:

{
    "storageAccountName" : "the storage account to receive data",
    "storageAccountKey" : "the key of the account"
}

步骤 2. 运行 设置 Azure VM 扩展 vm_name 为 LinuxDiagnostic Microsoft.OSTCExtensions 2.* --private-config-path PrivateConfig.json

方案 2. 自定义性能监视器指标

本部分介绍如何自定义性能和诊断数据表。

步骤 1. 使用方案 1 中所述的内容创建名为 PrivateConfig.json 的文件。 另请创建名为 PublicConfig.json的文件。 指定要收集的特定数据。

对于所有受支持的提供程序和变量,请参考 System Center 跨平台解决方案网站。 可以通过向脚本追加更多查询,将多个查询存储在多个表中。

默认情况下,始终收集 Rsyslog 数据。

{
      "perfCfg":
      [
          {
              "query" : "SELECT PercentAvailableMemory, AvailableMemory, UsedMemory ,PercentUsedSwap FROM SCX_MemoryStatisticalInformation",
              "table" : "LinuxMemory"
          }
      ]
}

步骤 2. 运行 azure vm 扩展设置 vm_name LinuxDiagnostic Microsoft.OSTCExtensions '2.*' --private-config-path PrivateConfig.json --public-config-path PublicConfig.json

方案 3. 上传自己的日志文件

本部分介绍如何收集特定日志文件并将其上传到存储帐户。 需要同时指定日志文件的路径和要在其中存储日志的表的名称。 可以通过向脚本添加多个文件/表条目来创建多个日志文件。

步骤 1. 使用方案 1 中所述的内容创建名为 PrivateConfig.json 的文件。 然后,使用以下内容创建名为 PublicConfig.json 的另一个文件:

{
    "fileCfg" :
    [
        {
            "file" : "/var/log/mysql.err",
            "table" : "mysqlerr"
            }
    ]
}

步骤 2. 运行 azure vm extension set vm_name LinuxDiagnostic Microsoft.OSTCExtensions '2.*' --private-config-path PrivateConfig.json --public-config-path PublicConfig.json

请注意,在 2.3 之前的扩展版本中,写入 /var/log/mysql.err 的所有日志也可能复制到 /var/log/syslog(或 /var/log/messages,具体取决于 Linux 发行版)。 如果想要避免此重复日志记录,可以在 rsyslog 配置中排除 local6 设施日志的日志记录。 这取决于 Linux 发行版,但在 Ubuntu 14.04 系统上,要修改的文件是 /etc/rsyslog.d/50-default.conf,你可以将 *.*;auth,authpriv.none -/var/log/syslog 行替换为 *.*;auth,authpriv,local6.none -/var/log/syslog。 此问题已在最新修补程序版本 2.3(2.3.9007)中修复,因此如果扩展版本为 2.3,则不应发生此问题。 如果在重启 VM 后仍仍会执行此作,请与我们联系,帮助我们排查未自动安装最新修补程序版本的原因。

方案 4. 停止扩展收集任何日志

本部分介绍如何停止扩展收集日志。 请注意,即使使用此重新配置,监视代理进程仍会启动并运行。 如果想要完全停止监控代理进程,可以通过禁用扩展来这样做。 禁用扩展的命令,azure vm extension set --disable <vm_name> LinuxDiagnostic Microsoft.OSTCExtensions '2.*'

步骤 1. 使用方案 1 中所述的内容创建名为 PrivateConfig.json 的文件。 使用以下内容创建名为 PublicConfig.json 的另一个文件:

{
    "perfCfg" : [],
    "enableSyslog" : "false"
}

步骤 2. 运行 Azure VM 扩展设置 vm_name LinuxDiagnostic Microsoft.OSTCExtensions '2.*' --private-config-path PrivateConfig.json --public-config-path PublicConfig.json

审查您的数据

性能和诊断数据存储在 Azure 存储表中。 查看 如何使用 Ruby 中的 Azure 表存储 了解如何使用 Azure CLI 脚本访问存储表中的数据。

此外,可以使用以下 UI 工具访问数据:

  1. Visual Studio 服务器资源管理器。 转到您的存储帐户。 VM 运行约五分钟后,会看到四个默认表:“LinuxCpu”、“LinuxDisk”、“LinuxMemory”和“Linuxsyslog”。 双击表名以查看数据。
  2. Azure 存储资源管理器

图像

如果已启用 fileCfg 或 perfCfg(如方案 2 和 3 中所述),可以使用 Visual Studio Server Explorer 和 Azure 存储资源管理器查看非默认数据。

已知问题

  • 只能通过脚本访问 Rsyslog 信息和客户指定的日志文件。