注意
本文參考 CentOS,這是處於終止服務 (EOL) 狀態的 Linux 發行版本。 請據以考慮您的使用和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指引。
本文說明最新版本的 Linux 診斷延伸模組 (LAD)。
重要事項
從 Azure 診斷擴充功能移轉
Azure 診斷 延伸模組將於 2026 年 3 月 31 日淘汰。 在此日期之後,Microsoft將不再支援 Azure 診斷 延伸模組。
若要確保持續支援和存取新功能,您應該從適用於Linux的 Azure 診斷擴充功能 (LAD) 和 Windows (WAD) 移轉至 Azure 監視器代理程式,以收集相同的數據,並將其傳送至多個目的地,包括 Log Analytics 工作區、Azure 事件中樞和 Azure 記憶體。 設定 Azure 監視器代理程式以避免重複資料之後,請移除 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
這會產生類似下列的結果:
重要事項
如需 3.x 版的相關資訊,請參閱使用 Linux 診斷延伸模組 3.0 來監視計量和記錄。 如需 2.3 版和更早版本的相關資訊,請參閱監視 Linux VM 的效能和診斷資料。
Linux 診斷延伸模組可協助您監視在 Microsoft Azure 上 Linux VM 的健康情況。 它可提供下列功能:
| 資料來源 | 自訂選項 | 必要目的地 | 選擇性目的地 |
|---|---|---|---|
| 計量 | 計數器、彙總、採樣速率、指定名稱 | Azure 表格儲存體 | EventHub、Azure Blob 儲存體 (JSON 格式)、Azure 監視器 (LAD 4.0 的新功能) |
| syslog | 設施、嚴重性等級 | Azure 表格儲存體 | EventHub、Azure Blob 儲存體 (JSON 格式) |
| 檔案儲存體 | 記錄路徑、目的地資料表 | Azure 表格儲存體 | EventHub、Azure Blob 儲存體 (JSON 格式) |
此延伸模組適用於 Azure 部署模型:Azure Resource Manager 和傳統版。
附註
試試 VM assist 快速診斷。 建議您執行 適用於 Windows 的 VM 協助 或 適用於 Linux 的 VM 協助。 這些腳本型診斷工具可協助您識別影響 Azure VM 客體代理程式和整體 VM 健康情況的常見問題。
如果你在使用虛擬機器時遇到效能問題,在聯絡客服之前,請先執行這些工具。
先決條件
-
Azure Linux Agent 2.2.0 版或更新版本。 大部分的 Azure VM Linux 資源庫映像包含版本 2.2.7 或更新版本。 執行
/usr/sbin/waagent -version以確認安裝在 VM 上的版本。 如果 VM 執行較舊的客體代理程式版本,請更新 Linux Agent。 - Azure CLI。 在您的電腦上設定 Azure CLI 環境。
-
wget命令。 如果您尚未安裝,請使用對應的套件管理器安裝。 - 用來儲存資料的 Azure 訂用帳戶與一般用途儲存體帳戶。 一般用途儲存體帳戶支援必要的表格儲存體。 Blob 儲存體帳戶無法運作。
- Python 2。
支援的 Linux 散發套件
請參閱支援的代理程式作業系統。
Python 需求
Linux 診斷延伸模組需要 Python 2。 如果您的虛擬機器使用不包含 Python 2 的散發套件,請加以安裝。
附註
我們目前規劃將 Linux 診斷延伸模組 (LAD) 的所有版本與已支援 Python 3 的新 Azure 監視代理程式合併。 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。
執行下列命令來移除任何現有的別名。
sudo update-alternatives --remove-all python執行下列命令來建立新的別名。
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
安裝延伸模組
您可以使用 Azure PowerShell Cmdlet、Azure CLI 指令碼、Azure Resource Manager 範本 (ARM 範本) 或 Azure 入口網站,為您的 VM 和虛擬機器擴展集啟用此延伸模組。 如需詳細資訊,請參閱適用於 Linux 的虛擬機器擴充功能和功能。
附註
Linux 診斷 VM 延伸模組的某些元件也會隨附於 Log Analytics VM 延伸模組中。 如果兩個延伸模組在相同的 ARM 範本中都是具現化的狀態,就可能會發生衝突。
若要避免安裝時間衝突,請使用 dependsOn 指示詞來循序安裝延伸模組。 可以依任一順序安裝延伸模組。
使用這些安裝指示與可下載樣本設定來設定 LAD 4.0,以:
- 擷取並儲存 LAD 2.3 和 3.x 版所提供的相同計量。
- 將計量連同 Azure 儲存體的一般接收傳送至 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 文件。
啟用自動更新
建議啟用自動延伸模組升級功能,來自動更新代理程式。
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 \
--enable-auto-upgrade true
範例安裝
在這些範例中,範例設定會收集一組標準資料,並將資料傳送至表格儲存體。 樣本設定的 URL 及其內容可能會變更。
附註
針對下列樣本,請在執行程式碼之前,先在第一節中填入變數的適當值。
在多數案例中,您應下載入口網站設定 JSON 檔案的複本,並針對您的需求自訂。 使用範本或您自己的自動化來使用自訂版本的設定檔,而不是每次從 URL 下載。
當您啟用新的 Azure 監視器接收時,VM 必須啟用系統指派的身分識別,才能產生受控服務識別 (MSI) 驗證權杖。 您可以在 VM 建立期間或之後新增這些設定。 如需 Azure 入口網站、Azure CLI、PowerShell 和 Azure Resource Manager 的指示,請參閱設定受控識別。
安裝範例 - 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>
# Login to Azure before you do anything else.
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'}"
# 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>
# Login to Azure before you do anything else.
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'}"
# 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。 2.x 版本自 2018 年 7 月 31 日起已被取代。
重要事項
若要從 3.x 移轉至最新版本的延伸模組,請解除安裝舊的延伸模組。 然後安裝第 4 版,其中包含系統指派身分識別和接收的更新設定,以將計量傳送至 Azure 監視器接收。
當您安裝新的延伸模組時,請啟用自動次要版本升級:
- 在 Azure Resource Manager 部署模型 VM 上的 VM 部署範本中包含
"autoUpgradeMinorVersion": true。 - 如果您正透過 Azure CLI 或 Powershell 安裝延伸模組,請在傳統部署模型 VM 上指定版本
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": { ... }
}
若要取得 ARM 範本內的 SAS 權杖,請使用 listAccountSas 函數。 如需範例範本,請參閱列出函式範例。
您可以透過 Azure 入口網站建構必要的共用存取簽章權杖:
- 選取您要將延伸模組寫入其中的一般用途儲存體帳戶。
- 在左側功能表的 [安全性 + 網路功能] 底下,選取 [共用存取簽章]。
- 依前述進行選取。
- 選取 [產生 SAS 和連接字串]。
將產生的共用存取簽章複製到 storageAccountSasToken 欄位中。 移除前置問號 (?)。
sinksConfig
附註
公用和受保護的設定都有選擇性 sinksConfig 區段。 受保護sinksConfig設定中的 區段只會保留 EventHub 和 JsonBlob 接收設定,因為包含如 sasURL 的祕密。
AzMonSink 接收設定不能包含在受保護的設定中。
"sinksConfig": {
"sink": [
{
"name": "sinkname",
"type": "sinktype",
...
},
...
]
},
sinksConfig 選擇性區段會定義額外的目的地,讓延伸模組傳送收集到的資訊。
"sink" 陣列包含每個額外資料接收的物件。
"type" 屬性可決定物件中的其他屬性。
| 元素 | 值 |
|---|---|
| NAME | 用來在擴充功能組態中的其他位置參考此接收的字串。 |
| 型別 | 正在定義的接收類型。 決定此類型執行個體中的其他值 (若有的話)。 |
Linux 診斷延伸模組 4.0 支援兩種受保護的接收類型:EventHub 和 JsonBlob。
EventHub 接收
"sink": [
{
"name": "sinkname",
"type": "EventHub",
"sasURL": "https SAS URL"
},
...
]
"sasURL" 項目包含完整的 URL,包括共用存取簽章權杖,適用於應將資料發佈至其中的事件中樞。 LAD 需要共用存取簽章,才可命名可啟用傳送宣告的原則。 以下是範例:
- 建立名為
contosohub的事件中樞命名空間。 - 在名為
syslogmsgs的命名空間建立事件中樞。 - 在啟用 Send 宣告且名為
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) 皆為選擇性。 如果您在 ladCfg 中指定計量或 syslog 集合,則也必須指定 StorageAccount。 您必須指定 sinksConfig 元素,以針對來自 LAD 4.0 的計量啟用 Azure 監視器接收。
{
"ladCfg": { ... },
"fileLogs": { ... },
"StorageAccount": "the storage account to receive data",
"sinksConfig": { ... },
"mdsdHttpProxy" : ""
}
| 元素 | 值 |
|---|---|
| 儲存帳戶 | 延伸模組寫入資料所在的儲存體帳戶名稱。 必須是保護設定中指定的名稱。 |
| mdsdHttpProxy | (選擇性) 保護設定中指定的 Proxy。 如果已設定私人值,則其會覆寫公用值。 將包含祕密 (例如密碼) 的 Proxy 設定設置在受保護的設定中。 |
下列各節提供關於剩餘元素的詳細資料。
ladCfg
"ladCfg": {
"diagnosticMonitorConfiguration": {
"eventVolume": "Medium",
"metrics": { ... },
"performanceCounters": { ... },
"syslogEvents": { ... }
},
"sampleRateInSeconds": 15
}
此 ladCfg 結構會控制計量與記錄的收集,以傳遞至 Azure 監視計量與其他資料接收。 請指定 performanceCounters 和/或 syslogEvents。 此外,也請指定 metrics 結構。
如果您不想啟用 syslog 或 metrics 集合,請指定 ladCfg 元素的空白結構:
"ladCfg": {
"diagnosticMonitorConfiguration": {}
}
| 元素 | 值 |
|---|---|
| eventVolume | (選用) 控制在儲存體資料表中建立的分割區數目。 值必須為 "Large"、"Medium" 或 "Small"。 預設值是 "Medium"。 |
| 樣本率(以秒為單位) | (選用) 原始集合之間的預設間隔,也就是未彙總的計量。 支援的最小採樣速率為 15 秒。 預設值為 15。 |
計量
"metrics": {
"resourceId": "/subscriptions/...",
"metricAggregation" : [
{ "scheduledTransferPeriod" : "PT1H" },
{ "scheduledTransferPeriod" : "PT5M" }
]
}
| 元素 | 值 |
|---|---|
| 資源ID | VM 所屬之 VM 或虛擬機器擴展集的 Azure Resource Manager 資源識別碼。 如果設定使用任何 JsonBlob 接收,也請指定此設定。 |
| scheduledTransferPeriod | 系統會計算彙總計量的頻率並傳輸至 Azure 監視器計量。 頻率會以 IS 8601 時間間隔表示。 最小傳輸期間為 60 秒,亦即 PT1M。 請至少指定一個 scheduledTransferPeriod。 |
系統每隔 15 秒或以為計數器明確定義的採樣速率,收集在 performanceCounters 區段中指定的計量樣本。 如果顯示多個 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 原始樣本以產生以下的值:
- 平均值
- 最小值
- 最大值
- 上次收集的值
- 用於計算彙總的原始樣本計數
| 元素 | 值 |
|---|---|
| sinks | (選用) 以逗號分隔的接收名稱清單,LAD 會將彙總的計量結果傳送至此清單。 系統會將所有彙總的計量發佈至每個列出的接收。 例如: "MyEventHubSink, MyJsonSink, MyAzMonSink"。 如需詳細資訊,請參閱 sinksConfig (受保護的設定) 和 sinksConfig (公用設定)。 |
| 型別 | 識別計量的實際提供者。 |
| 類別 | 與 "counter" 一起使用,可識別提供者命名空間內的特定計量。 |
| 計數器 | 與 "class" 一起使用,可識別提供者命名空間內的特定計量。
請參閱可用的計數器清單。 |
| counterSpecifier | 可識別 Azure 監視器計量命名空間內的計量。 |
| condition (條件) | (選擇性) 選取計量套用物件的執行個體。 或者,選取跨該物件所有執行個體的彙總。 |
| 取樣頻率 | IS 8601 間隔,可設定收集此計量原始樣本的速率。 如果未設定值,sampleRateInSeconds 的值會設定集合間隔。 支援的最短採樣速率為 15 秒 (PT15S)。 |
| 單位 | 定義計量的單位。 應為以下字串之一:"Count"、"Bytes"、"Seconds"、"Percent"、"CountPerSecond"、"BytesPerSecond"、"Millisecond"。 收集資料的取用者預期收集的資料值符合這個單位。 LAD 會忽略此欄位。 |
| displayName | 在 Guest (classic) 計量命名空間中檢視時,要附加至 Azure 監視器計量中資料的標籤。 此標籤使用相關聯地區設定所指定的語言。 LAD 會忽略此欄位。
附註:如果在 azure.vm.linux.guestmetrics Metrics 命名空間中檢視相同的計量,如果已設定 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 執行個體,會將其計量與記錄新增至相同的資料表。 如果有過多的 VM 寫入相同的資料表分割,Azure 會將這些寫入節流至該分割。
eventVolume 設定會造成這些項目散佈在 1 (小)、10 (中) 或 100 (大) 個的分割。 中分割通常足以避免流量節流。
Azure 入口網站的 Azure 監視器計量功能會使用此資料表中的資料來產生圖表或觸發警示。 資料表名稱是這些字串的串連:
WADMetrics- 儲存在資料表中彙總值的
"scheduledTransferPeriod" P10DV2S- 格式為 YYYYMMDD 的日期,每 10 天變更一次
例如 WADMetricsPT1HP10DV2S20170410 與 WADMetricsPT1MP10DV2S20170609。
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 監視器接收。
附註
公用和受保護的設定都有選擇性 sinksConfig 區段。 公用sinksConfig設定中的 區段只會保留 AzMonSink 接收設定。
EventHub 和 JsonBlob 接收設定不能包含在公用設定中。
附註
sinksConfig 區段需要在 VM 或虛擬機器擴展集上啟用系統指派的身分識別。
您可以透過 Azure 入口網站、CLI、PowerShell 或 Azure Resource Manager 來啟用系統指派的身分識別。 請遵循詳細的指示,或參閱本文中的先前安裝範例。
"sinksConfig": {
"sink": [
{
"name": "AzMonSink",
"type": "AzMonSink",
"AzureMonitor": {}
}
]
},
fileLogs
fileLogs 區段會控制記錄檔的擷取。 LAD 會擷取寫入檔案時的新文字行。 其會將這些文字行寫入資料表資料列和任何指定的接收,例如 JsonBlob 和 EventHub。
附註
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 監視器接收計量支援。
附註
每個計量的顯示名稱會根據其所屬的計量命名空間而有所不同:
-
Guest (classic)的值從您的儲存體帳戶填入:displayName區段中指定的performanceCounters,或 Azure 入口網站中所見的預設顯示名稱。 針對 VM,在 [監視]>[診斷設定]下,選取 [計量] 索引標籤。 -
azure.vm.linux.guestmetrics從AzMonSink填入,如果已設定:下表中指定的「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 的顯示名稱 | 意義 |
|---|---|---|
| 閒置時間比例 | cpu idle time |
彙總時間範圍期間,處理器執行核心閒置迴圈的百分比 |
| 處理器使用百分比時間 | cpu percentage guest os |
執行非閒置執行緒的時間百分比 |
| I/O 等待時間百分比 | cpu io wait time |
等待 I/O 作業完成的時間百分比 |
| 中斷時間百分比 | cpu interrupt time |
執行硬體/軟體中斷與延遲的程序呼叫的時間百分比 (DPC) |
| PercentUserTime | cpu user time |
在彙總時間範圍期間的非閒置時間中,對一般優先順序的使用者模式下花費時間的百分比 |
| PercentNiceTime | cpu nice time |
在非閒置時間中,對較低 (好) 的優先順序花費的時間百分比 |
| PercentPrivilegedTime | cpu privileged time |
在非閒置時間中,在具特殊權限 (核心) 模式中花費的百分比 |
前四個計數器的總和應為 100%。 最後三個計數器的總和應為 100%。 這三個計數器會細分 PercentProcessorTime、PercentIOWaitTime 和 PercentInterruptTime 的總和。
記處理器類別的內建計量
計量的記憶體類別提供有關記憶體使用率、分頁及交換的資訊。
| 計數器 | azure.vm.linux.guestmetrics 的顯示名稱 | 意義 |
|---|---|---|
| 可用記憶體 | memory available |
可用的實體記憶體 (MiB) |
| PercentAvailableMemory | mem. percent available |
以總記憶體百分比表示的可用實體記憶體 |
| 已用記憶體 | memory used |
使用中實體記憶體 (MiB) |
| 記憶體使用率百分比 (PercentUsedMemory) | memory percentage |
以總記憶體百分比表示的使用中實體記憶體 |
| 每秒頁數 | pages |
總分頁數 (讀取/寫入) |
| 每秒頁讀取數 | page reads |
從備份存放區讀取的頁面,例如分頁檔、程式檔和對應檔 |
| 每秒寫入頁數 | page writes |
寫入至備份存放區的頁面,例如分頁檔和對應檔 |
| AvailableSwap | swap available |
未使用的交換空間 (MiB) |
| PercentAvailableSwap | swap percent available |
以總交換空間百分比表示的未使用交換空間 |
| UsedSwap | swap used |
已使用交換空間 (MiB) |
| PercentUsedSwap | swap percent used |
以總交換空間百分比表示的使用中交換空間 |
此計量類別只有單一執行個體。
"condition" 屬性沒有有用的設定,應予以省略。
網路類別的內建計量
計量的網路類別提供自啟動後,個別網路介面上網路活動的相關資訊。
LAD 不會公開頻寬計量。 您可以從主機計量取得這些計量。
| 計數器 | azure.vm.linux.guestmetrics 的顯示名稱 | 意義 |
|---|---|---|
| BytesTransmitted | network out guest os |
自啟動後傳送的位元組總數 |
| 接收字節數 | network in guest os |
自啟動後接收的位元組總數 |
| BytesTotal | network total bytes |
自啟動後傳送或接收的位元組總數 |
| 封包已傳送 | packets sent |
自啟動後傳送的封包總數 |
| 收到的數據包 | packets received |
自啟動後接收的封包總數 |
| TotalRxErrors | packets received errors |
自啟動後接收的錯誤數 |
| TotalTxErrors | packets sent errors |
自啟動後傳輸的錯誤數 |
| 總碰撞次數 | network collisions |
自啟動後網路連接埠回報的衝突數目 |
檔案系統類別的內建計量
計量的檔案系統類別提供檔案系統使用量的相關資訊。 當對一般使用者 (非根使用者) 顯示這些資訊時,系統會回報絕對值與百分比值。
| 計數器 | azure.vm.linux.guestmetrics 的顯示名稱 | 意義 |
|---|---|---|
| 自由空間 | filesystem free space |
可用磁碟空間 (位元組) |
| UsedSpace | filesystem used space |
已使用的磁碟空間 (位元組) |
| PercentFreeSpace | filesystem % free space |
可用空間的百分比 |
| PercentUsedSpace | filesystem % used space |
已使用空間的百分比 |
| PercentFreeInodes | filesystem % free inodes |
未使用的索引節點 (inodes) 百分比 |
| PercentUsedInodes | filesystem % used inodes |
所有檔案系統中已配置 (使用中) Inode 總和的百分比 |
| BytesReadPerSecond(每秒讀取位元組數) | filesystem read bytes/sec |
每秒讀取的位元組數 |
| BytesWrittenPerSecond | filesystem write bytes/sec |
每秒寫入的位元組數 |
| 每秒字節數 | filesystem bytes/sec |
每秒讀取或寫入的位元組數 |
| 每秒讀取次數 | filesystem reads/sec |
每秒的讀取作業數 |
| WritesPerSecond | filesystem writes/sec |
每秒的寫入作業數 |
| 每秒傳輸次數 | filesystem transfers/sec |
每秒的讀取或寫入作業數 |
磁碟類別的內建計量
計量的磁碟類別提供磁碟裝置使用量的相關資訊。 這些統計資料會套用到整個磁碟機。
如果裝置有多個檔案系統,實際上會跨所有檔案系統彙總該裝置的計數器。
| 計數器 | azure.vm.linux.guestmetrics 的顯示名稱 | 意義 |
|---|---|---|
| 每秒讀取次數 | disk reads |
每秒的讀取作業數 |
| WritesPerSecond | disk writes |
每秒的寫入作業數 |
| 每秒傳輸次數 | disk transfers |
每秒的總作業數 |
| 平均閱讀時間 | disk read time |
每個讀取作業的平均秒數 |
| AverageWriteTime(平均寫入時間) | disk write time |
每個寫入作業的平均秒數 |
| 平均傳輸時間 | 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 權杖。
附註
根據您是否使用 Azure CLI 或 Azure PowerShell 來安裝 LAD,提供公用和受保護設定的方法會有所不同:
- 如果您使用 Azure CLI,請將下列設定儲存至 ProtectedSettings.json 和 PublicSettings.json,以使用上述樣本命令。
- 如果您使用 PowerShell,請執行
$protectedSettings = '{ ... }'和$publicSettings = '{ ... }',將下列設定儲存至$protectedSettings和$publicSettings。
受保護的設定組態
受保護的設定會設定:
- 儲存體帳戶。
- 相符的帳戶共用存取簽章權杖。
- 數個接收:具有 SAS 權杖的
JsonBlob或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*資料表。 - 將檔案
/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。 -
resourceId會內建至由 LAD 寫入的 JSON Blob 名稱。
檢視資料
使用 Azure 入口網站檢視效能資料或集合警示:
performanceCounters 資料一律儲存在 Azure 儲存體資料表中。 Azure 儲存體 API 適用於許多語言與平台。
傳送到 JsonBlob 接收的資料會儲存在受保護的設定中所指定儲存體帳戶的 Blob 中。 您可以使用任何 Azure Blob 儲存體 API 取用 Blob 資料。
您也可以使用這些 UI 工具存取 Azure 儲存體中的資料:
- Visual Studio 伺服器總管
- Azure 儲存體總管
Azure 儲存體總管工作階段的以下螢幕擷取畫面顯示從測試 VM 上正確設定的 LAD 4.0 延伸模組產生的 Azure 儲存體資料表及容器。 映像不完全符合範例 LAD 4.0 設定。
如需有關如何取用發行至事件中樞端點之訊息的詳細資訊,請參閱相關的事件中樞文件。