使用 Linux 诊断扩展 4.0 监视指标和日志

注意

本文引用了 CentOS,这是一个处于生命周期结束 (EOL) 状态的 Linux 发行版。 请根据你的使用情况做好相应规划。 有关详细信息,请参阅 CentOS 生命周期结束指南

本文介绍了 Linux 诊断扩展 (LAD) 的最新版本。

重要

从 Azure 诊断扩展迁移

Azure 诊断扩展将于 2026 年 3 月 31 日弃用。 在此日期之后,Microsoft 将不再为 Azure 诊断扩展提供支持。

为了确保持续支持和访问新功能,应从适用于 Linux 的 Azure 诊断扩展(LAD)和 Windows(WAD)迁移到 Azure Monitor 代理,后者可以收集相同的数据并将其发送到多个目标,包括 Log Analytics 工作区、Azure 事件中心和 Azure 存储。 在配置 Azure Monitor 代理以避免重复数据后删除 LAD 或 WAD。

作为存储的替代方案,您应将数据发送到 Log Analytics 工作区中带有 辅助计划 的表中,以实现经济有效的日志记录。

若要检查单个 VM 上安装的扩展,请选择 VM 上的“设置”下的“扩展 + 应用程序”。 若要查看在有权访问的订阅中所有虚拟机上安装的扩展,请在 Azure Resource Graph 中使用以下查询:

resources
| where type contains "extension"
| extend parsedProperties = parse_json(properties)
| extend publisher = tostring(parsedProperties.publisher)
| project-away parsedProperties
| where publisher == "Microsoft.Azure.Diagnostics"
| distinct id

这会生成类似于以下内容的结果:

显示示例 Azure Resource Graph 查询结果的屏幕截图。

重要

有关版本 3.x 的信息,请参阅使用 Linux 诊断扩展 3.0 监视指标和日志。 有关版本 2.3 及更早版本的信息,请参阅监视 Linux VM 的性能和诊断数据

Linux 诊断扩展可帮助用户监视 Azure 上 Linux VM 的健康状况。 它具有以下功能:

数据源 自定义选项 必需目标 可选目标
指标 计数器、聚合、采样率、说明符 Azure 表存储 EventHub、Azure Blob 存储(JSON 格式)、Azure Monitor(LAD 4.0 中的新增功能)
Syslog 设施、严重级别 Azure 表存储 EventHub、Azure Blob 存储(JSON 格式)
文件存储 日志路径、目标表 Azure 表存储 EventHub、Azure Blob 存储(JSON 格式)

此扩展适用于两种 Azure 部署模型:Azure 资源管理器和经典。

注意

尝试 VM 辅助,以便更快地进行诊断。 建议运行 VM assist for WindowsVM assist for Linux。 这些基于脚本的诊断工具可帮助你识别影响 Azure VM 来宾代理和整体 VM 运行状况的常见问题。

如果在联系支持人员之前遇到虚拟机的性能问题,请运行这些工具。

先决条件

  • Azure Linux 代理 2.2.0 版或更高版本。 大多数 Azure VM 映像库中的 Linux 映像都包含 2.2.7 及更高版本。 运行 /usr/sbin/waagent -version 以确认 VM 上安装的版本。 如果 VM 运行的是较旧版本的来宾代理,可更新 Linux 代理
  • Azure CLI。 在计算机上设置 Azure CLI 环境。
  • wget 命令。 如果尚未安装,请使用相应的包管理器安装它。
  • Azure 订阅和用于存储数据的常规用途存储账户 常规用途的存储账户支持表存储,这是必需的。 Blob 存储帐户不起作用。
  • Python 2。

支持的 Linux 分发

请参阅支持的代理操作系统

Python 要求

Linux 诊断扩展需要 Python 2。 如果虚拟机使用的分发不包括 Python 2,请安装它。

注意

我们目前正计划将所有版本的 Linux 诊断扩展 (LAD) 与新的 Azure Monitoring 代理(已支持 Python 3)融合在一起。 LAD 将待公告并获批准后安排弃用。

要安装 Python 2,请运行以下示例命令之一:

  • Red Hat、CentOS、Oracle:yum install -y python2
  • Ubuntu、Debian:apt-get install -y python2
  • SUSE:zypper install -y python2

必须将 python2 可执行文件的别名设置为 python

  1. 运行以下命令以删除所有现有别名。

    sudo update-alternatives --remove-all python
    
  2. 运行以下命令以创建新的别名。

    sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
    

安装扩展

可以使用 Azure PowerShell cmdlet、Azure CLI 脚本、Azure 资源管理器模板(ARM 模板)或 Azure 门户为 VM 和虚拟机规模集启用此扩展。 有关详细信息,请参阅适用于 Linux 的虚拟机扩展和功能

注意

Log Analytics VM 扩展中还随附了 Linux 诊断 VM 扩展的某些组件。 如果在同一 ARM 模板中对两个扩展进行实例化,则可能会发生冲突。

为避免安装时冲突,请使用 dependsOn 指令按顺序安装扩展。 可按任一顺序安装扩展。

使用安装说明和可下载的示例配置将 LAD 4.0 配置为:

  • 捕获并存储 LAD 版本 2.3 和 3.x 提供的相同指标。
  • 将指标发送到 Azure Monitor 接收器,并将常用的接收器发送到 Azure 存储。 此功能是 LAD 4.0 中的新功能。
  • 捕获一组有用的文件系统指标(与 LAD 3.0 一样)。
  • 捕获 LAD 2.3 允许的默认 syslog 收集。
  • 允许 Azure 门户体验,以便对 VM 指标进行制图以及就其发送警报。

可下载配置只是一个示例。 可对其进行修改来满足自己的需要。

安装

可以在 Azure CLI 或 Azure PowerShell 中安装和配置 LAD 4.0。

如果受保护的设置位于 ProtectedSettings.json 文件中,而公用配置信息位于 PublicSettings.json 中,请运行以下命令 :

az vm extension set --publisher Microsoft.Azure.Diagnostics \
  --name LinuxDiagnostic --version 4.0 --resource-group <resource_group_name> \
  --vm-name <vm_name> --protected-settings ProtectedSettings.json \
  --settings PublicSettings.json

该命令假定你使用的是 Azure CLI 的 Azure 资源管理模式。 若要为经典部署模型 VM 配置 LAD,请切换到服务管理模式 (azure config mode asm),并在命令中省略资源组名称。

有关详细信息,请参阅跨平台 CLI 文档

示例安装

在这些示例中,示例配置会收集一组标准数据,并将其发送到表存储。 示例配置的 URL 及其内容可能会更改。

注意

对于以下示例,请在运行代码之前,为第一部分中的变量填写适当的值。

在大多数情况下,应下载门户设置 JSON 文件的副本,并根据需要进行自定义。 使用模板或自己的自动化来使用自定义版本的配置文件,而不是每次从 URL 下载。

启用新 Azure Monitor 接收器时,VM 需要启用系统分配的标识,才能生成托管服务标识 (MSI) 身份验证令牌。 可以在 VM 创建期间或之后添加这些设置。 有关 Azure 门户、Azure CLI、PowerShell 和 Azure 资源管理器的说明,请参阅配置托管标识

安装示例 - Azure CLI

# Set your Azure VM diagnostic variables.
my_subscription_id=<your_azure_subscription_id>
my_resource_group=<your_azure_resource_group_name_containing_your_azure_linux_vm>
my_linux_vm=<your_azure_linux_vm_name>
my_diagnostic_storage_account=<your_azure_storage_account_for_storing_vm_diagnostic_data>
my_diagnostic_storage_endpoint="https://core.chinacloudapi.cn/"

# Login to Azure before you do anything else.
az cloud set -n AzureChinaCloud
az login

# Select the subscription that contains the storage account.
az account set --subscription $my_subscription_id

# Enable system-assigned identity on the existing VM.
az vm identity assign --resource-group $my_resource_group --name $my_linux_vm

# Download the sample public settings. You could instead use curl or any web browser.
wget https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json -O portal_public_settings.json

# Build the VM resource ID. Replace the storage account name and resource ID in the public settings.
my_vm_resource_id=$(az vm show --resource-group $my_resource_group \
  --name $my_linux_vm --query "id" -o tsv)
sed -i "s#__DIAGNOSTIC_STORAGE_ACCOUNT__#$my_diagnostic_storage_account#g" portal_public_settings.json
sed -i "s#__VM_RESOURCE_ID__#$my_vm_resource_id#g" portal_public_settings.json

# Build the protected settings (storage account SAS token).
my_diagnostic_storage_account_sastoken=$(az storage account generate-sas \
  --account-name $my_diagnostic_storage_account --expiry 2037-12-31T23:59:00Z \
  --permissions wlacu --resource-types co --services bt -o tsv)
my_lad_protected_settings="{'storageAccountName': '$my_diagnostic_storage_account', \
  'storageAccountSasToken': '$my_diagnostic_storage_account_sastoken', 'storageAccountEndPoint': '$my_diagnostic_storage_endpoint'}"

# Finally, tell Azure to install and enable the extension.
az vm extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic \
  --version 4.0 --resource-group $my_resource_group --vm-name $my_linux_vm \
  --protected-settings "${my_lad_protected_settings}" --settings portal_public_settings.json

虚拟机规模集的安装示例 - Azure CLI

# Set your Azure virtual machine scale set diagnostic variables.
my_subscription_id=<your_azure_subscription_id>
my_resource_group=<your_azure_resource_group_name_containing_your_azure_linux_vm>
my_linux_vmss=<your_azure_linux_vmss_name>
my_diagnostic_storage_account=<your_azure_storage_account_for_storing_vm_diagnostic_data>
my_diagnostic_storage_endpoint="https://core.chinacloudapi.cn/"

# Login to Azure before you do anything else.
az cloud set -n AzureChinaCloud
az login

# Select the subscription that contains the storage account.
az account set --subscription $my_subscription_id

# Enable system-assigned identity on the existing virtual machine scale set.
az vmss identity assign --resource-group $my_resource_group --name $my_linux_vmss

# Download the sample public settings. You could also use curl or any web browser.
wget https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json -O portal_public_settings.json

# Build the virtual machine scale set resource ID. Replace the storage account name and resource ID in the public settings.
my_vmss_resource_id=$(az vmss show --resource-group $my_resource_group \
  --name $my_linux_vmss --query "id" -o tsv)
sed -i "s#__DIAGNOSTIC_STORAGE_ACCOUNT__#$my_diagnostic_storage_account#g" portal_public_settings.json
sed -i "s#__VM_RESOURCE_ID__#$my_vmss_resource_id#g" portal_public_settings.json

# Build the protected settings (storage account SAS token).
my_diagnostic_storage_account_sastoken=$(az storage account generate-sas \
  --account-name $my_diagnostic_storage_account --expiry 2037-12-31T23:59:00Z \
  --permissions wlacu --resource-types co --services bt -o tsv)
my_lad_protected_settings="{'storageAccountName': '$my_diagnostic_storage_account', 'storageAccountSasToken': '$my_diagnostic_storage_account_sastoken', 'storageAccountEndPoint': '$my_diagnostic_storage_endpoint'}"

# Finally, tell Azure to install and enable the extension.
az vmss extension set --publisher Microsoft.Azure.Diagnostics --name LinuxDiagnostic
  --version 4.0 --resource-group $my_resource_group --vmss-name $my_linux_vmss \
  --protected-settings "${my_lad_protected_settings}" --settings portal_public_settings.json

更新扩展设置

更改受保护或公开设置后,可运行相同的命令将其部署到 VM。 如果更改了任何设置,则更新会发送到扩展。 LAD 重新加载配置并自行重启。

从旧版本的扩展迁移

该扩展的最新版本为 4.0,目前为公共预览版。 旧版本的 3.x 仍受支持。 从 2018 年 7 月 31 日起,已弃用 2.x 版本。

重要

若要从 3.x 迁移到扩展的最新版本,请卸载旧扩展。 然后安装版本 4,其中包含系统分配的标识和接收器的更新配置,用于将指标发送到 Azure Monitor 接收器。

安装新扩展时,启用自动次要版本升级:

  • 在 Azure 资源管理器部署模型 VM 上,在 VM 部署模板中包含 "autoUpgradeMinorVersion": true
  • 在经典部署模型 VM 上,如果要通过 Azure CLI 或 PowerShell 安装该扩展,请指定版本 4.*

可以使用用于 LAD 3.x 的相同存储帐户。

受保护设置

此组配置信息包含不应公开的敏感信息。 例如,它包含存储凭据。 设置将传输到扩展,并由扩展以加密形式进行存储。

{
    "storageAccountName" : "the storage account to receive data",
    "storageAccountEndPoint": "the hostname suffix for the cloud for this account",
    "storageAccountSasToken": "SAS access token",
    "mdsdHttpProxy": "HTTP proxy settings",
    "sinksConfig": { ... }
}
名称
存储账户名称 扩展写入数据的存储帐户的名称。
storageAccountEndPoint (可选)标识存储帐户所在云的终结点。 如果此设置不存在,则默认情况下,LAD 使用 Azure 公有云 https://core.windows.net。 若要使用由世纪互联运营的 Microsoft Azure 中的存储帐户,请将此值替换为 https://core.chinacloudapi.cn
storageAccountSasToken 用于 Blob 和表服务的帐户 SAS 令牌 (ss='bt')。 此令牌适用于容器和对象 (srt='co')。 它授予添加、创建、列出、更新和写入权限 (sp='acluw')。 不要包含前导问号(?)。
mdsdHttpProxy (可选)扩展连接到指定存储帐户和终结点所需的 HTTP 代理信息。
sinksConfig (可选)可将指标和事件传递到的替换目标的详细信息。 以下各节提供了有关扩展所支持的每个数据接收器的详细信息。

若要在 ARM 模板中获取 SAS 令牌,请使用 listAccountSas 函数。 有关示例模板,请参阅 List 函数示例

可通过 Azure 门户构造所需的共享访问签名令牌:

  1. 选择希望扩展写入的常规用途存储帐户。
  2. 在左侧菜单中的“安全性 + 网络”下,选择“共享访问签名”。
  3. 按照前面所述进行选择。
  4. 选择 生成 SAS 和连接字符串。

屏幕截图显示了“共享访问签名”页,其中包含“生成 SAS 和连接字符串”。

将生成的共享访问签名复制到 storageAccountSasToken 字段中。 删除前导问号 (?)。

sinksConfig

注意

公共设置和受保护的设置都有一个可选的 sinksConfig 部分。 在 protected 设置中,sinksConfig 部分仅包含 EventHubJsonBlob 接收器配置,因为其中包含诸如 s 之类的机密信息。 AzMonSink 接收器配置 不能 包含在受保护设置中。

"sinksConfig": {
    "sink": [
        {
            "name": "sinkname",
            "type": "sinktype",
            ...
        },
        ...
    ]
},

sinksConfig 可选部分用于定义扩展要将收集到的信息发送到的更多目标。 "sink" 数组包含每个附加数据接收器的对象。 "type" 特性确定对象中的其他特性。

元素
名称 用于在扩展配置的其他地方引用此接收器的字符串。
类型 要定义的接收器的类型。 确定此类型实例中的其他值(如果存在)。

Linux 诊断扩展 4.0 支持两种受保护的接收器类型:EventHubJsonBlob

EventHub 接收端

"sink": [
    {
        "name": "sinkname",
        "type": "EventHub",
        "sasURL": "https SAS URL"
    },
    ...
]

"sasURL" 条目包含应将数据发布到的事件中心的完整 URL,其中包括共享访问签名令牌。 LAD 需要一个共享访问签名,用于指定一个启用发送声明的策略。 下面是一个示例:

  • 创建名为 contosohub 的事件中心命名空间。
  • 在名为 syslogmsgs 的命名空间中创建事件中心。
  • 在名为 writer 的事件中心上创建启用发送声明的共享访问策略。

如果创建在 UTC 2018 年 1 月 1 日午夜之前有效的 SAS,则 sasURL 值可能类似于以下示例。

https://contosohub.servicebus.chinacloudapi.cn/syslogmsgs?sr=contosohub.servicebus.chinacloudapi.cn%2fsyslogmsgs&sig=xxxxxxxxxxxxxxxxxxxxxxxxx&se=1514764800&skn=writer

有关为事件中心生成和检索 SAS 令牌信息的详细情况,请参阅生成 SAS 令牌

JsonBlob 接收器

"sink": [
    {
        "name": "sinkname",
        "type": "JsonBlob"
    },
    ...
]

发送到 JsonBlob 接收器的数据存储在 Azure 存储中的 Blob 中。 每个 LAD 实例都会针对每个接收器名称每小时创建一个 Blob 对象。 每个 blob 总是包含一个语法上有效的 JSON 对象数组。 新条目以基元形式添加到数组。

Blob 会存储在与接收器同名的容器中。 Azure 存储中有关 blob 容器名称的命名规则也适用于 JsonBlob 接收器的名称。 名称必须包含 3 到 63 个小写字母数字 ASCII 字符或短划线。

公开设置

此公用设置结构包含多个设置块,这些块控制扩展收集的信息。 每项设置(ladCfg 除外)都是可选的。 如果您在 ladCfg 中指定了指标收集或 syslog 收集,则还必须指定 StorageAccount。 必须指定 sinksConfig 元素,才能为 LAD 4.0 指标启用 Azure Monitor 接收器。

{
    "ladCfg":  { ... },
    "fileLogs": { ... },
    "StorageAccount": "the storage account to receive data",
    "sinksConfig": { ... },
    "mdsdHttpProxy" : ""
}
元素
存储帐户 扩展写入数据的存储帐户的名称。 必须是受保护的设置中指定的名称。
mdsdHttpProxy (可选)受保护的设置中指定的代理。 如果设置了私有值,则会覆盖公有值。 将包含机密(如密码)的代理设置放在受保护的设置中。

以下各节提供了有关其余元素的详细信息。

ladCfg

"ladCfg": {
    "diagnosticMonitorConfiguration": {
        "eventVolume": "Medium",
        "metrics": { ... },
        "performanceCounters": { ... },
        "syslogEvents": { ... }
    },
    "sampleRateInSeconds": 15
}

ladCfg 结构用于控制指标和日志的收集,并将其发送到 Azure Monitor Metrics 服务和其他数据接收器。 指定 performanceCounters 和/或 syslogEvents。 另外指定 metrics 结构。

如果不希望启用 syslog 或指标收集,请为 ladCfg 元素指定一个空结构:

"ladCfg": {
    "diagnosticMonitorConfiguration": {}
}
元素
事件量 (可选)控制在存储表中创建的分区数。 值必须为 "Large""Medium""Small"。 默认值为 "Medium"
sampleRateInSeconds (可选)两次收集原始(即未聚合)指标之间的默认时间间隔。 支持的最小采样率为 15 秒。 默认为 15

指标

"metrics": {
    "resourceId": "/subscriptions/...",
    "metricAggregation" : [
        { "scheduledTransferPeriod" : "PT1H" },
        { "scheduledTransferPeriod" : "PT5M" }
    ]
}
元素
资源 ID VM 或 VM 所属虚拟机规模集的 Azure 资源管理器资源 ID。 如果配置使用任一 JsonBlob 接收器,也需要指定此设置。
计划转账周期 计算聚合指标并传输到 Azure Monitor 指标的频率。 该频率以 IS 8601 时间间隔形式表示。 最小传输周期为 60 秒,即 PT1M。 请至少指定一个 scheduledTransferPeriod

performanceCounters 部分中指定的指标样本每 15 秒收集一次,或者按计数器明确定义的采样率进行收集。 如果出现多个 scheduledTransferPeriod 频率(如示例所示),则每个聚合都将独立计算。

性能计数器

"performanceCounters": {
    "sinks": "",
    "performanceCounterConfiguration": [
        {
            "type": "builtin",
            "class": "Processor",
            "counter": "PercentIdleTime",
            "counterSpecifier": "/builtin/Processor/PercentIdleTime",
            "condition": "IsAggregate=TRUE",
            "sampleRate": "PT15S",
            "unit": "Percent",
            "annotation": [
                {
                    "displayName" : "cpu idle time",
                    "locale" : "en-us"
                }
            ]
        }
    ]
}

performanceCounters 可选部分控制指标的收集。 对每个 scheduledTransferPeriod 汇总原始样本,以生成以下值:

  • 平均值
  • 最小值
  • 最大值
  • 最近一次采集的值
  • 用于计算聚合的原始样本数
元素
接收器 (可选)接收器名称的逗号分隔列表,LAD 会将聚合后的指标结果发送到这些接收器。 所有聚合指标都会发送到列出的每个接收端。 例如,"MyEventHubSink, MyJsonSink, MyAzMonSink"。 有关详细信息,请参阅 sinksConfig(受保护的设置)sinksConfig(公共设置)
类型 标识指标的实际提供方。
"counter" 一起,用于标识提供程序命名空间中的特定指标。
计数器 "class" 一起,用于标识提供程序命名空间中的特定指标。 请参阅可用计数器列表
counterSpecifier 用于标识 Azure Monitor 指标命名空间中的指标。
条件 (可选)选择应用指标的对象的实例。 或选择该对象所有实例的聚合结果。
sampleRate IS 8601 时间间隔,用于设置收集此指标原始样本的速率。 如果未设置该值,则收集间隔由 sampleRateInSeconds 的值设置。 支持的最短采样率为 15 秒 (PT15S)。
单位 定义指标的单位。 应为以下字符串之一:"Count""Bytes""Seconds""Percent""CountPerSecond""BytesPerSecond""Millisecond"。 所收集数据的使用者会预期收集到的数据值与此单位匹配。 LAD 会忽略此字段。
显示名称 Guest (classic) 指标命名空间中查看时,要附加到 Azure Monitor 指标中数据的标签。 此标签使用相应区域设置中指定的语言。 LAD 会忽略此字段。 注意:如果在 azure.vm.linux.guestmetrics 指标命名空间中查看相同的指标(如果配置了 AzMonSink,则可用),显示名称将完全取决于计数器。 要查找计数器和名称之间的映射,请参阅内置提供程序支持的指标

counterSpecifier 是任意标识符。 Azure 门户绘图和警报功能等指标使用者可使用 counterSpecifier 作为标识指标或指标实例的关键值。

对于 builtin 指标,建议使用以 counterSpecifier 开头的 /builtin/ 值。 如果要收集指标的特定实例,可将该实例的标识符附加到 counterSpecifier 值。 下面是一些示例:

  • /builtin/Processor/PercentIdleTime。 所有 vCPU 的平均空闲时间
  • /builtin/Disk/FreeSpace(/mnt)/mnt 文件系统的可用空间
  • /builtin/Disk/FreeSpace。 所有已装载文件系统的平均可用空间

LAD 和 Azure 门户不要求 counterSpecifier 值与任何模式匹配。 请以相同的模式构造各个 counterSpecifier 值。

指定 performanceCounters 时,LAD 始终将数据写入 Azure 存储中的表。 可以将相同的数据写入 JSON blob 或事件中心,或两者都写入。 无法禁止将数据存储到表。

使用相同存储帐户名称和终结点的所有 LAD 实例会将其指标和日志添加到同一个表中。 如果有过多虚拟机写入同一个表分区,则 Azure 可能会限制对该分区的写入速度。

eventVolume 设置会使条目分散在 1 个(小型)、10 个(中型)或 100 个(大型)分区中。 通常,中型分区足以避免流量限制。

Azure 门户的 Azure Monitor 指标功能使用此表中的数据来生成图形或触发警报。 表名是这些字符串的串联:

  • WADMetrics
  • 用于表中存储的聚合值的 "scheduledTransferPeriod"
  • P10DV2S
  • 日期格式为 YYYYMMDD,且每 10 天更改一次

示例包括 WADMetricsPT1HP10DV2S20170410WADMetricsPT1MP10DV2S20170609

syslogEvents

"syslogEvents": {
    "sinks": "",
    "syslogEventConfiguration": {
        "facilityName1": "minSeverity",
        "facilityName2": "minSeverity",
        ...
    }
}

syslogEvents 可选部分控制 syslog 中日志事件的收集。 如果省略此部分,则完全不会捕获 syslog 事件。

syslogEventConfiguration 集合对每个相关的 syslog 设施都包含一个条目。 如果特定辅助参数的 minSeverity"NONE",或者该辅助参数并未出现在元素中,则不会捕获该辅助参数下的任何事件。

元素
接收器 一个逗号分隔列表,包含要将单个日志事件发布到其中的接收器的名称。 所有与 syslogEventConfiguration 中限制条件匹配的日志事件都会发送到列出的每个接收器。 示例: "EHforsyslog"
设施名称 Syslog 辅助参数名称,例如 "LOG_USER""LOG_LOCAL0"。 有关详细信息,请参阅 syslog 手册页中的设备值
minSeverity Syslog 严重性级别,例如 "LOG_ERR""LOG_INFO"。 有关详细信息,请参阅 syslog 手册页中的级别值。 扩展会捕获发送到该设施的、达到或高于指定级别的事件。

指定 syslogEvents 时,LAD 始终将数据写入 Azure 存储中名为 LinuxSyslogVer2v0 的表。 可以将相同的数据写入 JSON blob 或事件中心,或两者都写入。 无法禁止将数据存储到表。

sinksConfig

除了存储帐户和默认的来宾指标视图以外,可选的公共 sinksConfig 部分还支持向 Azure Monitor 接收器发送指标。

注意

公共设置和受保护的设置都有一个可选的 sinksConfig 部分。 public 设置中的 sinksConfig 部分仅包含 sink 配置。 EventHubJsonBlob 接收器配置不得包含在您的公开设置中。

注意

sinksConfig 部分需要在 VM 或虚拟机规模集上启用系统分配的标识。 可以通过 Azure 门户、CLI、PowerShell 或 Azure 资源管理器启用系统分配的标识。 请按照详细说明操作或参阅本文中前面的安装示例。

  "sinksConfig": {
    "sink": [
      {
        "name": "AzMonSink",
        "type": "AzMonSink",
        "AzureMonitor": {}
      }
    ]
  },

fileLogs

fileLogs 部分用于控制日志文件的捕获。 LAD 会在新文本行写入文件时捕获这些文本行。 它会将其写入表格行以及任何指定的接收器中,例如 JsonBlobEventHub

注意

fileLogs 由 LAD 中名为 omsagent 的一个子组件捕获。 若要收集 fileLogs,请确保 omsagent 用户对指定的文件具有读取权限。 它还必须对该文件路径中的所有目录具有执行权限。 安装 LAD 后,如果要检查权限,可运行 sudo su omsagent -c 'cat /path/to/file'

"fileLogs": [
    {
        "file": "/var/log/mydaemonlog",
        "table": "MyDaemonEvents",
        "sinks": ""
    }
]
元素
文件 要监视和捕获的日志文件的完整路径。 路径无法指定目录,也不能包含通配符。 omsagent 用户帐户必须具有文件路径的读取访问权限。
(可选)用于写入文件末尾新行的 Azure 存储表。 该表必须位于指定存储帐户中,如受保护配置中所指定。
接收器 (可选)用于接收日志行的其他接收器名称列表,以逗号分隔。

必须指定 "table" 和/或 "sinks"

内置提供程序所支持的指标

LAD 支持的默认指标是按所有文件系统、磁盘或名称聚合的。 对于非聚合指标,请参阅较新的 Azure Monitor 接收器指标支持。

注意

每个指标的显示名称因其所属的指标命名空间而异:

  • Guest (classic) 从您的存储帐户获取:performanceCounters 部分中指定的 displayName,或 Azure 门户中显示的默认显示名称。 对于 VM,可在“监视”>“诊断设置”下选择“指标”选项卡。
  • 如果已配置,则从 AzMonSink 填充 azure.vm.linux.guestmetrics:以下表格中指定的“azure.vm.linux.guestmetrics 显示名称”。

Guest (classic)azure.vm.linux.guestmetrics 版本之间的指标值有所不同。 尽管经典指标在代理中应用了某些聚合,但新指标是未聚合的计数器,使客户可以灵活地在查看/警报时间根据需要进行聚合。

builtin 指标提供程序可提供大量用户最感兴趣的指标。 这些指标分为五个大类:

  • 处理器
  • 内存
  • 网络
  • 文件系统
  • Disk

处理器类的内置指标

处理器类指标提供有关 VM 中处理器使用情况的信息。 聚合百分比时,结果是所有 CPU 的平均值。

在一台具有两个 vCPU 的虚拟机中,如果一个 vCPU 的忙碌率为 100%,而另一个 vCPU 的空闲率为 100%,则报告的 PercentIdleTime 值为 50。 如果在相同时段内每个 vCPU 的忙碌度都是 50%,则报告结果也是 50。 在具有四个 vCPU 的虚拟机中,当一个 vCPU 的忙碌度为 100%,而其余 vCPU 均处于空闲状态时,报告的 PercentIdleTime 值为 75。

计数器 azure.vm.linux.guestmetrics 显示名称 含义
空闲时间百分比 cpu idle time 聚合窗口期内,处理器运行内核空闲循环的时间所占百分比
处理器时间百分比 cpu percentage guest os 运行非空闲线程的时间所占百分比
PercentIOWaitTime cpu io wait time 等待 IO 操作完成的时间所占百分比
中断时间百分比 cpu interrupt time 用于运行硬件或软件中断及延迟过程调用 (DPC) 的时间百分比
用户时间百分比 cpu user time 聚合窗口期间非空闲时间中,在常规优先级的用户模式下所花费时间所占百分比
PercentNiceTime cpu nice time 非空闲时间中,花费在降低(良好)优先级上的时间所占百分比
特权时间百分比 cpu privileged time 非空闲时间中,花费在特权(内核)模式上的时间所占百分比

前四个计数器结果之和应为 100%。 最后三个计数器的总和也为 100%。 这三个计数器将总和细分为 PercentProcessorTimePercentIOWaitTimePercentInterruptTime

内存类的内置指标

内存类指标提供有关内存使用率、分页和交换的信息。

计数器 azure.vm.linux.guestmetrics 显示名称 含义
可用内存 memory available 可用物理内存 (MB)
可用内存百分比 mem. percent available 可用物理内存占内存总量的百分比
已用内存 memory used 已用物理内存 (MB)
已用内存百分比 memory percentage 已用物理内存占内存总量的百分比
页/秒 pages 总分页(读取/写入)
每秒读取页数 page reads 从后备存储(如交换文件、程序文件和映射文件)读取的页面数
每秒写入页数 page writes 写入后备存储(例如交换文件和映射文件)的页面
AvailableSwap swap available 未使用的交换空间 (MB)
可用交换空间百分比 swap percent available 未使用的交换空间占交换空间总量的百分比
UsedSwap swap used 已使用的交换空间 (MB)
已使用交换空间百分比 swap percent used 已使用的交换空间占交换空间总量的百分比

此类指标仅有一个实例。 "condition" 特性没有有用的设置,应当省略。

网络类的内置指标

网络类指标提供有关自启动以来各个网络接口上网络活动的信息。

LAD 不会公开带宽指标。 可以从主机指标获取这些指标。

计数器 azure.vm.linux.guestmetrics 显示名称 含义
已传输字节数 network out guest os 自启动以来发送的字节数总计
接收的字节数 network in guest os 自启动以来接收的字节数总计
总字节数 network total bytes 自启动以来发送或接收的字节数总计
已传输的数据包 packets sent 自启动以来发送的包数总计
已接收数据包 packets received 自启动以来接收的包数总计
TotalRxErrors packets received errors 启动后接收错误数
TotalTxErrors packets sent errors 启动后发送错误次数
总碰撞次数 network collisions 自启动以来,网络端口报告的冲突次数

文件系统类的内置指标

文件系统类指标提供有关文件系统使用情况的信息。 将会报告绝对值和百分比值,因为这些指标会向普通用户(而不是 root 用户)显示。

计数器 azure.vm.linux.guestmetrics 显示名称 含义
FreeSpace filesystem free space 可用磁盘空间(字节)
UsedSpace filesystem used space 已用磁盘空间(字节)
PercentFreeSpace filesystem % free space 可用空间百分比
已用空间百分比 filesystem % used space 已用空间百分比
PercentFreeInodes filesystem % free inodes 未使用的索引节点 (Inode) 的百分比
已使用 inode 百分比 filesystem % used inodes 所有文件系统中已分配的(使用中)Inode 的百分比之和
每秒读取的字节数 filesystem read bytes/sec 每秒读取的字节数
每秒写入字节数 filesystem write bytes/sec 每秒写入的字节数
每秒字节数 filesystem bytes/sec 每秒读取或写入的字节数
每秒读取次数 filesystem reads/sec 每秒读取操作次数
每秒写入次数 filesystem writes/sec 每秒写入操作数
每秒传输次数 filesystem transfers/sec 每秒读取或写入操作次数

磁盘类的内置指标

磁盘类指标提供有关磁盘设备使用情况的信息。 这些统计信息适用于整个驱动器。

如果设备上有多个文件系统,则针对该设备的计数器会有效地跨所有文件系统聚合。

计数器 azure.vm.linux.guestmetrics 显示名称 含义
每秒读取次数 disk reads 每秒读取操作次数
每秒写入次数 disk writes 每秒写入操作数
每秒传输次数 disk transfers 每秒总操作数
平均阅读时间 disk read time 每个读取操作的平均秒数
平均写入时间 disk write time 每个写入操作的平均秒数
平均传输时间 disk transfer time 每个操作的平均秒数
平均磁盘队列长度 disk queue length 平均排队磁盘操作数
每秒读取字节数 disk read guest os 每秒读取的字节数
每秒写入字节数 disk write guest os 每秒写入的字节数
每秒字节数 disk total bytes 每秒读取或写入的字节数

LAD 4.0 配置示例

根据前述定义,此部分提供了一个 LAD 4.0 扩展配置示例和一些说明。 要应用此示例,请使用自己的存储帐户名称、帐户共享访问签名令牌和事件中心 SAS 令牌。

注意

根据安装 LAD 时使用的是 Azure CLI 还是 Azure PowerShell,提供公共和受保护设置的方法会有所不同:

  • 如果使用 Azure CLI,请将以下设置保存到 ProtectedSettings.json 和 PublicSettings.json,以使用上面的示例命令 。
  • 如果使用的是 PowerShell,则运行 $protectedSettings = '{ ... }'$publicSettings = '{ ... }' 将以下设置保存到 $protectedSettings$publicSettings

受保护的设置配置

受保护的设置用于配置:

  • 存储帐户。
  • 存储帐户终结点。
  • 匹配的帐户共享访问签名令牌。
  • 几个接收器:带有 SAS 令牌的 JsonBlobEventHub
{
  "storageAccountEndPoint": "https://core.chinacloudapi.cn/",
  "storageAccountName": "yourdiagstgacct",
  "storageAccountSasToken": "sv=xxxx-xx-xx&ss=bt&srt=co&sp=wlacu&st=yyyy-yy-yyT21%3A22%3A00Z&se=zzzz-zz-zzT21%3A22%3A00Z&sig=fake_signature",
  "sinksConfig": {
    "sink": [
      {
        "name": "SyslogJsonBlob",
        "type": "JsonBlob"
      },
      {
        "name": "FilelogJsonBlob",
        "type": "JsonBlob"
      },
      {
        "name": "LinuxCpuJsonBlob",
        "type": "JsonBlob"
      },
      {
        "name": "MyJsonMetricsBlob",
        "type": "JsonBlob"
      },
      {
        "name": "LinuxCpuEventHub",
        "type": "EventHub",
        "sasURL": "https://youreventhubnamespace.servicebus.chinacloudapi.cn/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.chinacloudapi.cn%2fyoureventhubpublisher%2f&sig=fake_signature&se=1808096361&skn=yourehpolicy"
      },
      {
        "name": "MyMetricEventHub",
        "type": "EventHub",
        "sasURL": "https://youreventhubnamespace.servicebus.chinacloudapi.cn/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.chinacloudapi.cn%2fyoureventhubpublisher%2f&sig=yourehpolicy&skn=yourehpolicy"
      },
      {
        "name": "LoggingEventHub",
        "type": "EventHub",
        "sasURL": "https://youreventhubnamespace.servicebus.chinacloudapi.cn/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.chinacloudapi.cn%2fyoureventhubpublisher%2f&sig=yourehpolicy&se=1808096361&skn=yourehpolicy"
      }
    ]
  }
}

公共设置配置

公用设置会使 LAD 执行以下操作:

  • 将处理器时间百分比指标和已用磁盘空间指标上传到 WADMetrics* 表。
  • 将来自 syslog 设施 "user" 且严重性为 "info" 的消息上传到 LinuxSyslog* 表中。
  • 将文件 /var/log/myladtestlog 中的追加行上传到 MyLadTestLog 表。

无论如何,数据都还会上传到以下位置:

  • Azure Blob 存储。 容器名称以 JsonBlob 接收器中的定义为准。
  • EventHub 接收器中指定的事件中心终结点。
{
  "StorageAccount": "yourdiagstgacct",
  "ladCfg": {
    "sampleRateInSeconds": 15,
    "diagnosticMonitorConfiguration": {
      "performanceCounters": {
        "sinks": "MyMetricEventHub,MyJsonMetricsBlob",
        "performanceCounterConfiguration": [
          {
            "unit": "Percent",
            "type": "builtin",
            "counter": "PercentProcessorTime",
            "counterSpecifier": "/builtin/Processor/PercentProcessorTime",
            "annotation": [
              {
                "locale": "en-us",
                "displayName": "cpu percentage guest os"
              }
            ],
            "condition": "IsAggregate=TRUE",
            "class": "Processor"
          },
          {
            "unit": "Bytes",
            "type": "builtin",
            "counter": "UsedSpace",
            "counterSpecifier": "/builtin/FileSystem/UsedSpace",
            "annotation": [
              {
                "locale": "en-us",
                "displayName": "Used disfilesystem used space"
              }
            ],
            "condition": "Name=\"/\"",
            "class": "Filesystem"
          }
        ]
      },
      "metrics": {
        "metricAggregation": [
          {
            "scheduledTransferPeriod": "PT1H"
          },
          {
            "scheduledTransferPeriod": "PT1M"
          }
        ],
        "resourceId": "/subscriptions/your_azure_subscription_id/resourceGroups/your_resource_group_name/providers/Microsoft.Compute/virtualMachines/your_vm_name"
      },
      "eventVolume": "Large",
      "syslogEvents": {
        "sinks": "SyslogJsonBlob,LoggingEventHub",
        "syslogEventConfiguration": {
          "LOG_USER": "LOG_INFO"
        }
      }
    }
  },
  "sinksConfig": {
    "sink": [
      {
        "name": "AzMonSink",
        "type": "AzMonSink",
        "AzureMonitor": {}
      }
    ]
  },
  "fileLogs": [
    {
      "file": "/var/log/myladtestlog",
      "table": "MyLadTestLog",
      "sinks": "FilelogJsonBlob,LoggingEventHub"
    }
  ]
}

配置中的 resourceId 必须与 VM 或虚拟机规模集中的相应设置匹配。

  • Azure 平台的指标图表和警报功能了解你正在使用的虚拟机的 resourceId。 它应能够通过将 resourceId 用作查找密钥来查找 VM 的数据。
  • 如果使用 Azure 自动缩放,则自动缩放配置中的 resourceId 必须与 LAD 使用的 resourceId 相匹配。
  • resourceId 已内置于 LAD 写入的 JSON blob 名称中。

查看数据

使用 Azure 门户查看性能数据或设置警报:

屏幕截图显示 Azure 门户中的”指标“页,并选择了“可用性”。

performanceCounters 数据始终存储在 Azure 存储表中。 Azure 存储 API 适用于多种语言和平台。

发送到 JsonBlob 接收端的数据以 Blob 形式存储在 受保护的设置 中指定的存储账户中。 你可以通过任何 Azure Blob 存储 API 使用 Blob 数据。

还可使用这些 UI 工具访问 Azure 存储中的数据:

Azure 存储资源管理器会话的以下快照显示了测试 VM 上正确配置的 LAD 4.0 扩展生成的 Azure 存储表和容器。 此图与示例 LAD 4.0 配置不完全匹配。

截图显示 Azure 存储资源管理器。

有关如何使用已发布到事件中心终结点的消息的详细信息,请参阅相关的事件中心文档

后续步骤