使用 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 中,数据包括:
此扩展适用于经典部署模型和 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 工具访问数据:
- Visual Studio 服务器资源管理器。 转到您的存储帐户。 VM 运行约五分钟后,会看到四个默认表:“LinuxCpu”、“LinuxDisk”、“LinuxMemory”和“Linuxsyslog”。 双击表名以查看数据。
- Azure 存储资源管理器。
如果已启用 fileCfg 或 perfCfg(如方案 2 和 3 中所述),可以使用 Visual Studio Server Explorer 和 Azure 存储资源管理器查看非默认数据。
已知问题
- 只能通过脚本访问 Rsyslog 信息和客户指定的日志文件。