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

注意

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

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

重要

有关版本 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 资源管理器和经典。

先决条件

  • 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": { ... }
}
名称
storageAccountName 扩展写入数据的存储帐户的名称。
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 部分。 由于包含 sasURL 之类的机密,受保护的设置中的 sinksConfig 部分仅保留 EventHubJsonBlob 接收器配置。 AzMonSink 接收器配置不能包含在受保护的设置中。

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

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

元素
name 在扩展配置中其他位置用于引用此接收器的字符串。
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 存储在与接收器同名的容器中。 用于 blob 容器名称的 Azure 存储规则适用于 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" : ""
}
元素
StorageAccount 扩展写入数据的存储帐户的名称。 必须是受保护的设置中指定的名称。
mdsdHttpProxy (可选)受保护的设置中指定的代理。 如果设置了专用值,则它会重写公用值。 将包含机密(如密码)的代理设置放在受保护的设置中。

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

ladCfg

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

ladCfg 结构控制要传送到 Azure Monitor 指标服务和其他数据接收器的指标和日志的收集。 指定 performanceCounters 和/或 syslogEvents。 另外指定 metrics 结构。

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

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

指标

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

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

performanceCounters

"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 的原始样本聚合产生以下值:

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

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

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

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

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

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

使用相同存储帐户名称和终结点的所有 LAD 实例会将其指标和日志添加到同一个表中。 如果有过多 VM 写入同一表分区,则 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",或者该辅助参数并未出现在元素中,则不会捕获该辅助参数下的任何事件。

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

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

sinksConfig

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

注意

公共设置和受保护的设置都有一个可选的 sinksConfig 部分。 “公共”设置中的 sinksConfig 部分仅保留 AzMonSink 接收器配置。 EventHubJsonBlob 接收器配置不能包含在公共设置中。

注意

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

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

fileLogs

fileLogs 部分控制日志文件的捕获。 LAD 在新文本行写入文件时捕获它们。 它会将这些内容写入表行和任何指定接收器,如 JsonBlobEventHub

注意

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

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

必须指定 "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 指标提供程序可提供大量用户最感兴趣的指标。 这些指标分为五个大类:

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

处理器类的内置指标

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

在双 vCPU VM 中,如果一个 vCPU 是 100% 忙碌,另一个是 100% 空闲,则报告的 PercentIdleTime 是 50。 如果在相同时段内每个 vCPU 都是 50% 忙碌,则报告的结果也是 50。 在四 vCPU VM 中,如果一个 vCPU 是 100% 忙碌,其他几个是空闲,则报告的 PercentIdleTime 是 75。

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

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

内存类的内置指标

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

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

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

网络类的内置指标

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

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

计数器 azure.vm.linux.guestmetrics 显示名称 含义
BytesTransmitted network out guest os 自启动以来发送的字节数总计
BytesReceived network in guest os 自启动以来接收的字节数总计
BytesTotal network total bytes 自启动以来发送或接收的字节数总计
PacketsTransmitted packets sent 自启动以来发送的包数总计
PacketsReceived packets received 自启动以来接收的包数总计
TotalRxErrors packets received errors 自启动以来接收的错误数
TotalTxErrors packets sent errors 自启动以来发送的错误数
TotalCollisions network collisions 自启动以来网络端口报告的冲突数

文件系统类的内置指标

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

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

磁盘类的内置指标

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

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

计数器 azure.vm.linux.guestmetrics 显示名称 含义
ReadsPerSecond disk reads 每秒读取操作数
WritesPerSecond disk writes 每秒写入操作数
TransfersPerSecond disk transfers 每秒总操作数
AverageReadTime disk read time 每个读取操作的平均秒数
AverageWriteTime disk write time 每个写入操作的平均秒数
AverageTransferTime disk transfer time 每个操作的平均秒数
AverageDiskQueueLength disk queue length 队列中磁盘操作的平均数
ReadBytesPerSecond disk read guest os 每秒读取的字节数
WriteBytesPerSecond 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 执行以下操作:

  • 将 percent-processor-time 和 used-disk-space 上传到 WADMetrics* 表。
  • 将 syslog 辅助参数 "info" 和严重性 LinuxSyslog* 之下的消息上传到 "user" 表。
  • 将文件 /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 平台指标绘图和警报了解你所用 VM 的 resourceId。 它应能够通过将 resourceId 用作查找密钥来查找 VM 的数据。
  • 如果使用 Azure 自动缩放,则自动缩放配置中的 resourceId 必须与 LAD 使用的 resourceId 相匹配。
  • LAD 所编写的 JSON blob 名称包含 resourceId

查看数据

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

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

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

发送到 JsonBlob 接收器的数据存储在受保护的设置中指定的存储帐户中的 blob 内。 可使用任何 Azure Blob 存储 API 中的 Blob 数据。

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

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

显示 Azure 存储资源管理器。

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

后续步骤