使用 Linux 診斷延伸模組 3.0 監視計量與記錄

警告

本文參考 CentOS,這是接近結束生命週期 (EOL) 狀態的 Linux 發行版本。 請據以考慮您的使用和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指引

本文件說明 3.0 版與更新版本的 Linux 診斷延伸模組 (LAD)。

重要

如需 2.3 版和更早版本的相關資訊,請參閱監視 Linux VM 的效能和診斷資料

簡介

Linux 診斷延伸模組可協助使用者監視在 Microsoft Azure 上執行的 Linux VM 健康情況。 它可提供下列功能:

  • 從 VM 收集系統效能計量,並儲存在所指定儲存體帳戶的特定資料表中。
  • 從 Syslog 擷取記錄事件,並儲存在所指定儲存體帳戶的特定資料表中。
  • 讓使用者自訂要收集並上傳的資料計量。
  • 可讓使用者自訂 Syslog 設備,以及要收集並上傳的事件其嚴重性層級。
  • 讓使用者將指定的記錄檔上傳至指定的儲存體資料表。
  • 支援將計量與事件記錄傳送至所指定儲存體帳戶中的任意 Azure 事件中樞端點與 JSON 格式的 blob。

此擴充功能適用於這兩個 Azure 部署模型。

在 VM 上安裝延伸模組

您可以使用 Azure PowerShell Cmdlet、Azure CLI 指令碼、Azure Resource Monitor 範本 (ARM 範本) 或 Azure 入口網站啟用此延伸模組。 如需詳細資訊,請參閱延伸模組功能

注意

LAD VM 延伸模組的某些元件也會隨附於 Log Analytics VM 延伸模組中。 由於此架構,如果兩個延伸模組在相同的 ARM 範本中都是具現化的狀態,就可能會發生衝突。

若要避免安裝時間衝突,請使用 dependsOn 指示詞來確保循序安裝延伸模組。 可以依任一順序安裝延伸模組。

這些安裝指示與可下載樣本設定可設定 LAD 3.0 以:

  • 擷取與儲存 LAD 2.3 中的相同計量。
  • 擷取一組實用的檔案系統計量。 這項功能是 LAD 3.0 的新功能。
  • 擷取 LAD 2.3 啟用的預設 Syslog 集合。
  • 讓 Azure 入口網站能夠對 VM 計量繪製圖表與發出警示。

可下載設定只是範例。 加以修改以符合您的需求。

必要條件

  • Azure Linux Agent 2.2.0 版或更新版本。 大部分的 Azure VM Linux 資源庫映像包含版本 2.2.7 或更新版本。 執行 /usr/sbin/waagent -version 以確認安裝在 VM 上的版本。 如果 VM 執行的是較舊的版本,請更新客體代理程式
  • Azure CLI。 如有需要,在您的機器上設定 Azure CLI 環境。
  • wget 命令。 如果您尚未安裝,請使用對應的套件管理器安裝。
  • 現有的 Azure 訂用帳戶
  • 用來儲存資料的現有一般用途儲存體帳戶。 一般用途儲存體帳戶必須支援資料表儲存體。 Blob 儲存體帳戶無法運作。
  • Python 2

Python 需求

Linux 診斷延伸模組需要 Python 2。 如果您的虛擬機器使用依預設不包含 Python 2 的散發套件,則必須加以安裝。 下列樣本命令會在各種散發套件上安裝 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
    

範例安裝

在以下範例中下載的樣本設定會收集一組標準資料,並將資料傳送到資料表儲存體。 樣本設定的 URL 及其內容可能會變更。

在多數案例中,您應下載入口網站設定 JSON 檔案的複本,並針對您的需求自訂。 然後使用範本或您自己的自動化來使用自訂版本的設定檔,而不是每次從 URL 下載。

注意

針對下列樣本,請在執行程式碼之前,先在第一節中填入變數的正確值。

Azure CLI 樣本

# Set your Azure VM diagnostic variables.
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>

# Login to Azure before you do anything else.
az login

# Select the subscription that contains the storage account.
az account set --subscription <your_azure_subscription_id>

# 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 VM resource ID. Replace the storage account name and resource ID in the public settings.
my_vm_resource_id=$(az vm show -g $my_resource_group -n $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'}"

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

在虛擬機器擴展集執行個體上安裝 LAD 3.0 的 Azure CLI 樣本

#Set your Azure Virtual Machine Scale Sets diagnostic variables.
$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>

# Login to Azure before you do anything else.
az login

# Select the subscription that contains the storage account.
az account set --subscription <your_azure_subscription_id>

# 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 -g $my_resource_group -n $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'}"

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

PowerShell 範例

$storageAccountName = "yourStorageAccountName"
$storageAccountResourceGroup = "yourStorageAccountResourceGroupName"
$vmName = "yourVMName"
$VMresourceGroup = "yourVMResourceGroupName"

# Get the VM object
$vm = Get-AzVM -Name $vmName -ResourceGroupName $VMresourceGroup

# Get the public settings template from GitHub and update the templated values for storage account and resource ID
$publicSettings = (Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/azure-linux-extensions/master/Diagnostic/tests/lad_2_3_compatible_portal_pub_settings.json).Content
$publicSettings = $publicSettings.Replace('__DIAGNOSTIC_STORAGE_ACCOUNT__', $storageAccountName)
$publicSettings = $publicSettings.Replace('__VM_RESOURCE_ID__', $vm.Id)

# If you have customized public settings, you can inline those rather than using the preceding template: $publicSettings = '{"ladCfg":  { ... },}'

# Generate a SAS token for the agent to use to authenticate with the storage account
$sasToken = New-AzStorageAccountSASToken -Service Blob,Table -ResourceType Service,Container,Object -Permission "racwdlup" -Context (Get-AzStorageAccount -ResourceGroupName $storageAccountResourceGroup -AccountName $storageAccountName).Context -ExpiryTime $([System.DateTime]::Now.AddYears(10))

# Build the protected settings (storage account SAS token)
$protectedSettings="{'storageAccountName': '$storageAccountName', 'storageAccountSasToken': '$sasToken'}"

# Finally, install the extension with the settings you built
Set-AzVMExtension -ResourceGroupName $VMresourceGroup -VMName $vmName -Location $vm.Location -ExtensionType LinuxDiagnostic -Publisher Microsoft.Azure.Diagnostics -Name LinuxDiagnostic -SettingString $publicSettings -ProtectedSettingString $protectedSettings -TypeHandlerVersion 3.0

更新延伸模組設定

在您變更自己的受保護或公開設定後,請執行相同的命令將其部署到 VM。 如果設定變更,則會將更新傳送至延伸模組。 LAD 會重新載入組態並自行重新啟動。

自舊版延伸模組移轉

延伸模組的最新版本是 4.0

重要

此延伸模組為設定帶來突破性的改變。 其中一項這類變更已改善延伸模組的安全性,因此無法維護與 2.x 的回溯相容性。 此外,此延伸模組的延伸模組發行者與 2.x 版的發行者不同。

若要從 2.x 移轉至較新版本,請先解除安裝舊版延伸模組 (在舊版發行者名稱底下)。 接著安裝第 3 版。

建議:

  • 透過啟用的自動次要版本升級安裝擴充功能。
    • 如果您正透過 Azure XPLAT CLI 或 Powershell 安裝延伸模組,請在傳統部署模型 VM 上指定版本 3.*
    • 在 Azure Resource Manager 部署模型 VM 上的 VM 部署範本中包含 "autoUpgradeMinorVersion": true
  • 為 LAD 3.0 使用新或不同的儲存體帳戶。 LAD 2.3 與 LAD 3.0 之間有些許微小的不相容,讓共用帳戶變得麻煩:
    • LAD 3.0 會將 Syslog 事件儲存在採用不同名稱的資料表中。
    • builtin 計量的 counterSpecifier 字串在 LAD 3.0 中會有所不同。

受保護的設定

這一組的設定資訊包含敏感性資訊,應加以保護以防遭公開檢視。 例如,其中包含儲存體認證。 這些設定會以加密的形式傳輸到擴充功能並加以儲存。

{
    "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。 若要使用 21Vianet 經營的 Azure 德國、Azure Government 或 Microsoft Azure 的儲存體帳戶,請視需要設定此值。
storageAccountSasToken blob 和資料表服務 (ss='bt') 的帳戶 SAS 權杖。 其適用於容器和物件 (srt='co')。 其會授與新增、建立、列出、更新和寫入權限 (sp='acluw')。 請包含前置問號 (?)。
mdsdHttpProxy (選用) 將延伸模組連線至指定儲存體帳戶和端點時所需的 HTTP proxy 資訊。
sinksConfig (選用) 可將計量與事件傳遞至的替代目的地的詳細資料。 下列各節說明延伸模組所支援之每個資料接收的詳細資料。

若要取得 ARM 範本內的 SAS 權杖,請使用 listAccountSas 函數。 如需範例範本,請參閱列出函式範例

您可以透過 Azure 入口網站建構所需的 SAS 權杖:

  1. 選取您要將延伸模組寫入其中的一般用途儲存體帳戶。
  2. 在左側功能表的 [設定] 底下,選取 [共用存取簽章]
  3. 依前述進行選取。
  4. 選取 [產生 SAS]。

顯示 [共用存取簽章] 頁面的螢幕快照,其中包含 [產生 S A S] 按鈕。

將所產生的 SAS 複製到 storageAccountSasToken 欄位。 移除前置問號 (?)。

sinksConfig

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

sinksConfig 選擇性區段會定義額外的目的地,讓延伸模組可將收集到的資訊傳送到該目的地。 sink 陣列包含每個額外資料接收的物件。 type 屬性可決定物件中的其他屬性。

元素
NAME 在延伸模組設定中的其他位置參考此接收的字串。
type 正在定義的接收類型。 決定此類型執行個體中的其他值 (若有的話)。

LAD 3.0 版支援兩種接收類型:EventHubJsonBlob

EventHub 接收

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

"sasURL" 項目包含完整的 URL,包括 SAS 權杖,適用於應將資料發佈至其中的事件中樞。 LAD 需要 SAS,才可命名可啟用傳送宣告的原則。

例如:

  • 建立名為 contosohub 的 Azure 事件中樞命名空間。
  • 在名為 syslogmsgs 的命名空間建立事件中樞。
  • 在啟用傳送宣告的事件中樞上建立共用存取原則。 為原則 writer 命名。

如果您已建立在 2018 年 1 月 1 日 UTC 午夜之前狀態良好的 SAS,則 sasURL 值會與此範例類似:

https://contosohub.servicebus.windows.net/syslogmsgs?sr=contosohub.servicebus.windows.net%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,則亦須指定 StorageAccount

{
    "ladCfg":  { ... },
    "perfCfg": { ... },
    "fileLogs": { ... },
    "StorageAccount": "the storage account to receive data",
    "mdsdHttpProxy" : ""
}
元素
StorageAccount 擴充功能寫入資料的儲存體帳戶名稱。 其必須與在保護設定中指定的名稱相同。
mdsdHttpProxy (選用) 與受保護的設定相同。 公用值會被私人值 (若有設定) 覆寫。 將包含祕密 (例如密碼) 的 Proxy 設定設置在受保護的設定中。

下列各節提供其餘元素的詳細資料。

ladCfg

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

ladCfg 結構是選填的。 其會控制計量與記錄的收集,以傳遞至 Azure 監視器計量服務與其他資料接收。 您必須指定:

  • performanceCounterssyslogEvents 或兩者。
  • metrics 結構。
元素
eventVolume (選用) 控制在儲存體資料表中建立的分割區數目。 其必須是 "Large""Medium""Small"。 如果未指定值,則預設值為 "Medium"
sampleRateInSeconds (選用) 原始 (未彙總) 計量集合之間的預設間隔。 支援的最小採樣速率為 15 秒。 如果未指定值,則預設為 15

metrics

"metrics": {
    "resourceId": "/subscriptions/...",
    "metricAggregation" : [
        { "scheduledTransferPeriod" : "PT1H" },
        { "scheduledTransferPeriod" : "PT5M" }
    ]
}
元素
resourceId VM 所屬之 VM 或擴展集的 Azure Resource Manager 資源 ID。 如果在設定中使用任何的 JsonBlob 接收,則亦須指定此設定。
scheduledTransferPeriod 系統會計算彙總計量的頻率並傳輸至 Azure 監視器計量。 頻率會以 IS 8601 時間間隔表示。 最小傳輸期間為 60 秒,亦即 PT1M。 請至少指定一個 scheduledTransferPeriod

系統每隔 15 秒或以為計數器明確定義的採樣速率,收集在 performanceCounters 區段中指定的計量樣本。 如果顯示多個 scheduledTransferPeriod 頻率 (如範例所述),則會獨立計算每個彙總。

performanceCounters

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

performanceCounters 選用區段會控制計量的收集。 為每個 scheduledTransferPeriod 彙總原始樣本, 以產生以下值:

  • 平均數
  • 最小值
  • 最大值
  • 上次收集的值
  • 用於計算彙總的原始樣本計數
元素
sinks (選用) 以逗號分隔的接收名稱清單,LAD 會將彙總的計量結果傳送至此清單。 系統會將所有彙總的計量發佈至每個列出的接收。 範例:"EHsink1, myjsonsink"。 如需詳細資訊,請參閱sinksConfig
type 識別計量的實際提供者。
class "counter" 一起使用,可識別提供者命名空間內的特定計量。
計數器 "class" 一起使用,可識別提供者命名空間內的特定計量。
counterSpecifier 可識別 Azure 監視器計量命名空間內的特定計量。
條件 (選用) 選取計量適用之物件的特定執行個體。 或者,其會選取跨該物件所有執行個體的彙總。
sampleRate IS 8601 間隔,可設定收集此計量原始樣本的速率。 如果未設定此值,則會由 sampleRateInSeconds 的值設定收集間隔。 支援的最短採樣速率為 15 秒 (PT15S)。
單位 定義計量的單位。 應為以下字串之一:"Count""Bytes""Seconds""Percent""CountPerSecond""BytesPerSecond""Millisecond"。 收集資料的取用者預期收集的資料值符合這個單位。 LAD 會忽略此欄位。
displayName 要附加至 Azure 監視器計量中資料的標籤。 此標籤使用相關聯地區設定所指定的語言。 LAD 會忽略此欄位。

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 監視器計量功能會使用此資料表中的資料來產生圖表或觸發警示。 資料表名稱是這些字串的串連:

  • 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 儲存體中的資料表。 相同的資料可以寫入 JSON Blob 或事件中樞或兩者。 但您無法停用將資料儲存至資料表的作業。

此資料表的分割行為與 performanceCounters 所述相同。 資料表名稱是這些字串的串連:

  • LinuxSyslog
  • 格式為 "YYYYMMDD" 的日期,每 10 天變更一次

例如 LinuxSyslog20170410LinuxSyslog20170609

perfCfg

perfCfg 區段是選擇性的。 其會控制任意開放式管理基礎結構 (OMI) 查詢的執行。

"perfCfg": [
    {
        "namespace": "root/scx",
        "query": "SELECT PercentAvailableMemory, PercentUsedSwap FROM SCX_MemoryStatisticalInformation",
        "table": "LinuxOldMemory",
        "frequency": 300,
        "sinks": ""
    }
]
元素
命名空間 (選用) 應執行查詢的 OMI 命名空間。 如果未指定,則預設值為 "root/scx"。 其是由 System Center 跨平台提供者實作。
query 要執行的 OMI 查詢。
table (選用) 所指定儲存體帳戶中的 Azure 儲存體資料表。 如需詳細資訊,請參閱受保護的設定
頻率 (選用) 查詢執行之間的秒數。 預設值為 300 (5 分鐘)。 最小值是 15 秒。
sinks (選用) 原始樣本計量結果應發佈至其中的額外接收名稱清單 (以逗號分隔)。 延伸模組或 Azure 監視器計量不會計算這些原始樣本的彙總。

必須指定 "table""sinks",或同時指定兩者。

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 使用者帳戶必須具有檔案路徑的讀取存取。
table (選用) 將檔案「結尾」中的新行寫入其中的 Azure 儲存體資料表。 如受保護的設定所指定,資料表必須位於指定的儲存體帳戶中。
sinks (選用) 將記錄行傳送至其中的額外接收名稱清單 (以逗號分隔)。

必須指定 "table""sinks",或同時指定兩者。

內建提供者支援的計量

builtin 的計量提供者為一組廣泛使用者最感興趣的計量來源。 這些計量分成五大類別:

  • 處理器
  • 記憶體
  • 網路
  • 檔案系統
  • 磁碟

處理器類別的內建計量

計量的處理器類別會提供 VM 中處理器使用量的相關資訊。 彙總百分比時,結果為所有 CPU 的平均。

在兩個 vCPU VM 中,如果一個 vCPU 是 100% 忙碌,另一個則是 100% 閒置,則報告 PercentIdleTime 為 50。 如果每個 vCPU 在同一期間皆為 50% 忙碌,則回報的結果也會是 50。 在四個 vCPU VM 中,如果一個 vCPU 是 100% 忙碌,另一個則是閒置,則報告 PercentIdleTime 為 75。

計數器 意義
PercentIdleTime 彙總時間範圍期間,處理器執行核心閒置迴圈的百分比
PercentProcessorTime 執行非閒置執行緒的時間百分比
PercentIOWaitTime 等待 IO 作業完成的時間百分比
PercentInterruptTime 執行硬體/軟體中斷與 DPC (延遲的程序呼叫) 的時間百分比
PercentUserTime 在彙總時間範圍期間的非閒置時間中,對一般優先順序的使用者模式下花費時間的百分比
PercentNiceTime 在非閒置時間中,對較低 (好) 的優先順序花費的時間百分比
PercentPrivilegedTime 在非閒置時間中,在具特殊權限 (核心) 模式中花費的百分比

前四個計數器的總和應為 100%。 最後三個計數器的總和應為 100%。 這三個計數器會細分 PercentProcessorTimePercentIOWaitTimePercentInterruptTime 的總和。

若要彙總所有處理器之間的單一計量,請設定 "condition": "IsAggregate=TRUE"。 若要取得特定處理器的計量 (例如四 vCPU VM 的第二個邏輯處理器),請設定 "condition": "Name=\\"1\\""。 邏輯處理器數目在範圍 [0..n-1] 內。

記處理器類別的內建計量

計量的記憶體類別提供有關記憶體使用率、分頁及交換的資訊。

計數器 意義
AvailableMemory 可用的實體記憶體 (MiB)
PercentAvailableMemory 以總記憶體百分比表示的可用實體記憶體
UsedMemory 使用中實體記憶體 (MiB)
PercentUsedMemory 以總記憶體百分比表示的使用中實體記憶體
PagesPerSec 總分頁數 (讀取/寫入)
PagesReadPerSec 從備份存放區讀取的頁面,例如分頁檔、程式檔和對應檔
PagesWrittenPerSec 寫入至備份存放區的頁面,例如分頁檔和對應檔
AvailableSwap 未使用的交換空間 (MiB)
PercentAvailableSwap 以總交換空間百分比表示的未使用交換空間
UsedSwap 已使用交換空間 (MiB)
PercentUsedSwap 以總交換空間百分比表示的使用中交換空間

此計量類別只有單一執行個體。 "condition" 屬性沒有有用的設定,應予以省略。

網路類別的內建計量

計量的網路類別提供自啟動後,個別網路介面上網路活動的相關資訊。

LAD 不會公開頻寬計量。 您可以從主機計量取得這些計量。

計數器 意義
BytesTransmitted 自啟動後傳送的位元組總數
BytesReceived 自啟動後接收的位元組總數
BytesTotal 自啟動後傳送或接收的位元組總數
PacketsTransmitted 自啟動後傳送的封包總數
PacketsReceived 自啟動後接收的封包總數
TotalRxErrors 自啟動後接收的錯誤數
TotalTxErrors 自啟動後傳輸的錯誤數
TotalCollisions 自啟動後網路連接埠回報的衝突數目

雖然此網路類別已執行個體化,但 LAD 不支援擷取從所有網路裝置彙總的網路計量。 若要取得特定介面 (例如 eth0) 的計量,請設定 "condition": "InstanceID=\\"eth0\\""

檔案系統類別的內建計量

計量的檔案系統類別提供檔案系統使用量的相關資訊。 當對一般使用者 (非根使用者) 顯示這些資訊時,系統會回報絕對值與百分比值。

計數器 意義
FreeSpace 可用磁碟空間 (位元組)
UsedSpace 已使用的磁碟空間 (位元組)
PercentFreeSpace 可用空間百分比
PercentUsedSpace 已使用的空間百分比
PercentFreeInodes 未使用的索引節點 (inodes) 百分比
PercentUsedInodes 所有檔案系統中已配置 (使用中) Inode 總和的百分比
BytesReadPerSecond 每秒讀取的位元組數
BytesWrittenPerSecond 每秒寫入的位元組數
BytesPerSecond 每秒讀取或寫入的位元組數
ReadsPerSecond 每秒的讀取作業數
WritesPerSecond 每秒的寫入作業數
TransfersPerSecond 每秒的讀取或寫入作業數

可透過設定 "condition": "IsAggregate=True" 取得跨所有檔案系統的彙總值。 透過設定 "condition": 'Name="/mnt"' 取得的特定已掛接檔案系統 (例如 "/mnt") 的值。

注意

如果您正在 Azure 入口網站 (而非 JSON) 工作,條件欄位表單會是 Name='/mnt'

磁碟類別的內建計量

計量的磁碟類別提供磁碟裝置使用量的相關資訊。 這些統計資料會套用到整個磁碟機。

如果裝置有多個檔案系統,實際上會跨所有檔案系統彙總該裝置的計數器。

計數器 意義
ReadsPerSecond 每秒的讀取作業數
WritesPerSecond 每秒的寫入作業數
TransfersPerSecond 每秒的總作業數
AverageReadTime 每個讀取作業的平均秒數
AverageWriteTime 每個寫入作業的平均秒數
AverageTransferTime 每個作業的平均秒數
AverageDiskQueueLength 已排入佇列的磁碟作業平均數
ReadBytesPerSecond 每秒讀取的位元組數
WriteBytesPerSecond 每秒寫入的位元組數
BytesPerSecond 每秒讀取或寫入的位元組數

可透過設定 "condition": "IsAggregate=True" 取得跨所有磁碟的彙總值。 若要取得特定裝置的資訊 (例如,/dev/sdf1),請設定 "condition": "Name=\\"/dev/sdf1\\""

安裝和設定 LAD 3.0

Azure CLI

假設您的受保護設定位於檔案 ProtectedSettings.json 中,您的公用設定資訊位於 PublicSettings.json 中,則請執行以下命令。

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

此命令假設您使用 Azure CLI 的 Azure Resource Manager 模組。 若要為傳統部署模型 VM 設定 LAD,請切換成「asm」模式 (azure config mode asm),並省略命令中的資源群組名稱。

如需詳細資訊,請參閱跨平台 CLI 文件

PowerShell

假設您的受保護設定位於 $protectedSettings 變數中,您的公用設定資訊位於 $publicSettings 變數中,則請執行此命令:

Set-AzVMExtension -ResourceGroupName <resource_group_name> -VMName <vm_name> -Location <vm_location> -ExtensionType LinuxDiagnostic -Publisher Microsoft.Azure.Diagnostics -Name LinuxDiagnostic -SettingString $publicSettings -ProtectedSettingString $protectedSettings -TypeHandlerVersion 3.0

範例 LAD 3.0 設定

根據前述的定義,此區段提供樣本 LAD 3.0 延伸模組設定及一些說明。 若要將此樣本套用到您的案例,請使用自己的儲存體帳戶名稱、帳戶 SAS 權杖,以及 EventHubs SAS 權杖。

注意

根據您是否使用 Azure CLI 或 PowerShell 來安裝 LAD,提供公用和受保護設定的方法會有所不同:

  • 如果您使用 Azure CLI,請將下列設定儲存至 ProtectedSettings.jsonPublicSettings.json,以使用上述樣本命令。
  • 如果您使用 PowerShell,請執行 $protectedSettings = '{ ... }',將下列設定儲存至 $protectedSettings$publicSettings

受保護的設定

受保護的設定會設定:

  • 儲存體帳戶。
  • 相符的帳戶 SAS 權杖。
  • 數個接收 (JsonBlob 或具有 SAS 權杖的 EventHub)。
{
  "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.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=fake_signature&se=1808096361&skn=yourehpolicy"
      },
      {
        "name": "MyMetricEventHub",
        "type": "EventHub",
        "sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=yourehpolicy&skn=yourehpolicy"
      },
      {
        "name": "LoggingEventHub",
        "type": "EventHub",
        "sasURL": "https://youreventhubnamespace.servicebus.windows.net/youreventhubpublisher?sr=https%3a%2f%2fyoureventhubnamespace.servicebus.windows.net%2fyoureventhubpublisher%2f&sig=yourehpolicy&se=1808096361&skn=yourehpolicy"
      }
    ]
  }
}

公用設定

這些公用設定會造成 LAD:

  • 將 percent-processor-time 計量與 used-disk-space 計量上傳至 WADMetrics* 資料表。
  • 將 Syslog 設施 "user" 與嚴重性 "info" 中的訊息上傳至 LinuxSyslog* 資料表。
  • 將原始 OMI 查詢結果 (PercentProcessorTimePercentIdleTime) 上傳至具名 LinuxCPU 資料表。
  • 將檔案 /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": "Aggregate CPU %utilization"
              }
            ],
            "condition": "IsAggregate=TRUE",
            "class": "Processor"
          },
          {
            "unit": "Bytes",
            "type": "builtin",
            "counter": "UsedSpace",
            "counterSpecifier": "/builtin/FileSystem/UsedSpace",
            "annotation": [
              {
                "locale": "en-us",
                "displayName": "Used disk space on /"
              }
            ],
            "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"
        }
      }
    }
  },
  "perfCfg": [
    {
      "query": "SELECT PercentProcessorTime, PercentIdleTime FROM SCX_ProcessorStatisticalInformation WHERE Name='_TOTAL'",
      "table": "LinuxCpu",
      "frequency": 60,
      "sinks": "LinuxCpuJsonBlob,LinuxCpuEventHub"
    }
  ],
  "fileLogs": [
    {
      "file": "/var/log/myladtestlog",
      "table": "MyLadTestLog",
      "sinks": "FilelogJsonBlob,LoggingEventHub"
    }
  ]
}

組態中的 resourceId 必須與 VM 或虛擬機器擴展集中的相符。

  • Azure 平台計量的圖表與警示功能知道您正在使用的 VM 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 3.0 延伸模組產生的 Azure 儲存體資料表及容器。 映像不完全符合樣本 LAD 3.0 設定

顯示 Azure 儲存體 Explorer 的螢幕快照。

如需有關如何取用發行至事件中樞端點之訊息的詳細資訊,請參閱相關的事件中樞文件

下一步