使用 Linux 診斷延伸模組 4.0 監視計量與記錄
警告
本文會參考 CentOS,這是生命週期結束 (EOL) 狀態的 Linux 發行版本。 請據以考慮您的使用和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指導。
本文說明最新版本的 Linux 診斷延伸模組 (LAD)。
重要
如需 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 和傳統版。
必要條件
- 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": { ... }
}
名稱 | 值 |
---|---|
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 與連接字串]。
將產生的共用存取簽章複製到 storageAccountSasToken
欄位中。 移除前置問號 (?)。
sinksConfig
注意
公用和受保護的設定都有選擇性 sinksConfig
區段。 受保護設定中的 sinksConfig
區段只會保留 EventHub
和 JsonBlob
接收設定,因為包含如 sasURL
的祕密。 AzMonSink
接收設定不能包含在受保護的設定中。
"sinksConfig": {
"sink": [
{
"name": "sinkname",
"type": "sinktype",
...
},
...
]
},
sinksConfig
選擇性區段會定義額外的目的地,讓延伸模組傳送收集到的資訊。 "sink"
陣列包含每個額外資料接收的物件。 "type"
屬性可決定物件中的其他屬性。
元素 | 值 |
---|---|
NAME | 用來在擴充功能組態中的其他位置參考此接收的字串。 |
type | 正在定義的接收類型。 決定此類型執行個體中的其他值 (若有的話)。 |
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" : ""
}
元素 | 值 |
---|---|
StorageAccount | 延伸模組寫入資料所在的儲存體帳戶名稱。 必須是保護設定中指定的名稱。 |
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" 。 |
sampleRateInSeconds | (選用) 原始集合之間的預設間隔,也就是未彙總的計量。 支援的最小採樣速率為 15 秒。 預設值為 15 。 |
metrics
"metrics": {
"resourceId": "/subscriptions/...",
"metricAggregation" : [
{ "scheduledTransferPeriod" : "PT1H" },
{ "scheduledTransferPeriod" : "PT5M" }
]
}
元素 | 值 |
---|---|
resourceId | VM 所屬之 VM 或虛擬機器擴展集的 Azure Resource Manager 資源識別碼。 如果設定使用任何 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" : "cpu idle time",
"locale" : "en-us"
}
]
}
]
}
performanceCounters
選用區段會控制計量的收集。 系統會彙總每個 scheduledTransferPeriod 原始樣本以產生以下的值:
- 平均數
- 最小值
- 最大值
- 上次收集的值
- 用於計算彙總的原始樣本計數
元素 | 值 |
---|---|
sinks | (選用) 以逗號分隔的接收名稱清單,LAD 會將彙總的計量結果傳送至此清單。 系統會將所有彙總的計量發佈至每個列出的接收。 例如: "MyEventHubSink, MyJsonSink, MyAzMonSink" 。 如需詳細資訊,請參閱 sinksConfig (受保護的設定) 和 sinksConfig (公用設定)。 |
type | 識別計量的實際提供者。 |
class | 與 "counter" 一起使用,可識別提供者命名空間內的特定計量。 |
計數器 | 與 "class" 一起使用,可識別提供者命名空間內的特定計量。 請參閱可用的計數器清單。 |
counterSpecifier | 可識別 Azure 監視器計量命名空間內的計量。 |
條件 | (選擇性) 選取計量套用物件的執行個體。 或者,選取跨該物件所有執行個體的彙總。 |
sampleRate | 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
計量,我們建議使用以 /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 天變更一次
例如 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 使用者帳戶必須具有檔案路徑的讀取存取。 |
table | (選用) 將檔案結尾中的新行寫入其中的 Azure 儲存體資料表。 如受保護的設定所指定,資料表必須位於指定的儲存體帳戶中。 |
sinks | (選用) 將記錄行傳送至其中的額外接收名稱清單 (以逗號分隔)。 |
必須指定 "table"
或 "sinks"
,或同時指定兩者。
內建提供者支援的計量
LAD 支援的預設計量會匯總至所有檔案系統、磁碟或名稱。 如需非匯總計量,請參閱較新的 Azure 監視器接收計量支援。
注意
每個計量的顯示名稱會根據其所屬的計量命名空間而有所不同:
Guest (classic)
從記憶體帳戶填入:performanceCounters
區段中指定的displayName
,或 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 Display Name | 意義 |
---|---|---|
PercentIdleTime | cpu idle time |
彙總時間範圍期間,處理器執行核心閒置迴圈的百分比 |
PercentProcessorTime | cpu percentage guest os |
執行非閒置執行緒的時間百分比 |
PercentIOWaitTime | cpu io wait time |
等待 I/O 作業完成的時間百分比 |
PercentInterruptTime | 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 Display Name | 意義 |
---|---|---|
AvailableMemory | memory available |
可用的實體記憶體 (MiB) |
PercentAvailableMemory | mem. percent available |
以總記憶體百分比表示的可用實體記憶體 |
UsedMemory | memory used |
使用中實體記憶體 (MiB) |
PercentUsedMemory | memory percentage |
以總記憶體百分比表示的使用中實體記憶體 |
PagesPerSec | pages |
總分頁數 (讀取/寫入) |
PagesReadPerSec | page reads |
從備份存放區讀取的頁面,例如分頁檔、程式檔和對應檔 |
PagesWrittenPerSec | page writes |
寫入至備份存放區的頁面,例如分頁檔和對應檔 |
AvailableSwap | swap available |
未使用的交換空間 (MiB) |
PercentAvailableSwap | swap percent available |
以總交換空間百分比表示的未使用交換空間 |
UsedSwap | swap used |
已使用交換空間 (MiB) |
PercentUsedSwap | swap percent used |
以總交換空間百分比表示的使用中交換空間 |
此計量類別只有單一執行個體。 "condition"
屬性沒有有用的設定,應予以省略。
網路類別的內建計量
計量的網路類別提供自啟動後,個別網路介面上網路活動的相關資訊。
LAD 不會公開頻寬計量。 您可以從主機計量取得這些計量。
計數器 | azure.vm.linux.guestmetrics Display Name | 意義 |
---|---|---|
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 |
自啟動後網路連接埠回報的衝突數目 |
檔案系統類別的內建計量
計量的檔案系統類別提供檔案系統使用量的相關資訊。 當對一般使用者 (非根使用者) 顯示這些資訊時,系統會回報絕對值與百分比值。
計數器 | azure.vm.linux.guestmetrics Display Name | 意義 |
---|---|---|
FreeSpace | 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 |
每秒寫入的位元組數 |
BytesPerSecond | filesystem bytes/sec |
每秒讀取或寫入的位元組數 |
ReadsPerSecond | filesystem reads/sec |
每秒的讀取作業數 |
WritesPerSecond | filesystem writes/sec |
每秒的寫入作業數 |
TransfersPerSecond | filesystem transfers/sec |
每秒的讀取或寫入作業數 |
磁碟類別的內建計量
計量的磁碟類別提供磁碟裝置使用量的相關資訊。 這些統計資料會套用到整個磁碟機。
如果裝置有多個檔案系統,實際上會跨所有檔案系統彙總該裝置的計數器。
計數器 | azure.vm.linux.guestmetrics Display Name | 意義 |
---|---|---|
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 |
每秒寫入的位元組數 |
BytesPerSecond | 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 設定。
如需有關如何取用發行至事件中樞端點之訊息的詳細資訊,請參閱相關的事件中樞文件。