使用 Linux 诊断扩展监视 Linux VM 的性能和诊断数据
重要
经典 VM 将于 2023 年 3 月 1 日停用。
如果从 ASM 使用 IaaS 资源,请在 2023 年 3 月 1 日之前完成迁移。 我们建议你尽快进行切换,以利用 Azure 资源管理器中的许多增强功能。
有关详细信息,请参阅在 2023 年 3 月 1 日之前将 IaaS 资源迁移到 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 extension set --help 了解详细的帮助信息。
- 运行 azure login 登录到 Azure。
- 运行“azure vm list”可列出你在 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 运行约 5 分钟后,将看到四个默认表:“LinuxCpu”、“LinuxDisk”、“LinuxMemory”和“Linuxsyslog”。 双击表名以查看数据。
- Azure 存储资源管理器。
如果已启用 fileCfg 或 perfCfg(如方案 2 和 3 所述),则可以使用 Visual Studio 服务器资源管理器和 Azure 存储资源管理器来查看非默认数据。
已知问题
- 只能通过脚本访问 Rsyslog 信息和客户指定的日志文件。