Linux Diagnostic Extension 4.0 を使用して、メトリックとログを監視する

注意

この記事では、間もなくサポート終了 (EOL) 状態になる Linux ディストリビューションである CentOS について説明します。 適宜、使用と計画を検討してください。 詳細については、「CentOS のサポート終了に関するガイダンス」を参照してください。

この記事では、Linux 診断拡張機能 (LAD) の最新バージョンについて説明します。

重要

バージョン 3.x の詳細については、「Linux Diagnostic Extension 3.0 を使用して、メトリックとログを監視する」を参照してください。 バージョン 2.3 以前の詳細については、Linux VM のパフォーマンスと診断データの監視に関する記事を参照してください。

Linux 診断拡張機能は、Microsoft Azure 上の Linux VM の正常性を監視するのに役立ちます。 次の機能が用意されています。

データ ソース カスタマイズ オプション 必須の宛先 省略可能な宛先
メトリック カウンター、集計、サンプル レート、指定子 Azure Table Storage EventHub、Azure Blob Storage (JSON 形式)、Azure Monitor (LAD 4.0 の新機能)
syslog ファシリティ、重大度レベル Azure Table Storage EventHub、Azure Blob Storage (JSON 形式)
ファイル ログ パス、宛先テーブル Azure Table Storage EventHub、Azure Blob Storage (JSON 形式)

この拡張機能は、Azure Resource Manager とクラシックの両方の 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 Diagnostic Extension には、Python 2 が必要です。 お使いの仮想マシンで使用されているディストリビューションに Python 2 が含まれていない場合は、それをインストールします。

注意

現在、Linux Diagnostic Extensions (LAD) のすべてのバージョンを、Python 3 を既にサポートしている新しい Azure Monitoring Agent と収束する予定です。 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
    

拡張機能をインストールする

VM および仮想マシン スケール セット用のこの拡張機能は、Azure PowerShell コマンドレット、Azure CLI スクリプト、Azure Resource Manager テンプレート (ARM テンプレート)、Azure portal のいずれかを使用して有効にできます。 詳細については、「Linux 用の仮想マシンの拡張機能とその機能」を参照してください。

Note

Linux Diagnostic VM 拡張機能の一部のコンポーネントは、Log Analytics VM 拡張機能にも付属しています。 両方の拡張機能が同じ ARM テンプレートでインスタンス化されると、競合が発生する場合があります。

インストール時の競合を回避するには、dependsOn ディレクティブを使用して、拡張機能を順番にインストールします。 拡張機能は、どちらの順序でもインストールできます。

インストール手順とダウンロード可能なサンプル構成を使用して、LAD 4.0 を次のように構成します。

  • LAD バージョン 2.3 および 3.x で提供されていたのと同じメトリックをキャプチャして保存します。
  • Azure Storage への通常のシンクと共に Azure Monitor シンクにメトリックを送信します。 この機能は LAD 4.0 での新機能です。
  • LAD 3.0 と同じように、便利な一連のファイル システム メトリックをキャプチャします。
  • LAD 2.3 で有効になっている既定の syslog コレクションをキャプチャします。
  • Azure portal エクスペリエンスを使用して、VM メトリックのチャート作成とアラート通知を行います。

ダウンロード可能な構成は単なる例です。 ニーズに合うように変更してください。

インストール

LAD 4.0 は、Azure CLI または Azure PowerShell でインストールおよび構成できます。

保護された設定が 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 Resource Management モードを使用していることを前提としています。 クラシック デプロイ モデルの 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 と内容は変更される場合があります。

Note

以降のサンプルでは、コードを実行する前に、最初のセクションの変数に適切な値を入力します。

ほとんどの場合、ポータル設定の JSON ファイルのコピーをダウンロードし、必要に応じてカスタマイズする必要があります。 URL から毎回ダウンロードするのではなく、テンプレートまたは独自の自動化を使用して、カスタマイズされたバージョンの構成ファイルを使用します。

新しい Azure Monitor シンクを有効にする場合は、管理サービス ID (MSI) 認証トークンを生成するため、VM でシステム割り当ての ID を有効にする必要があります。 これらの設定は、VM の作成中または作成後に追加できます。 Azure portal、Azure CLI、PowerShell、Azure Resource Manager の手順については、マネージド ID の構成に関するページを参照してください。

インストールのサンプル - 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

Virtual Machine Scale Sets のインストールのサンプル - 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 Monitor シンクにメトリックを送信するための、システム割り当て ID とシンクの更新された構成が含まれます。

新しい拡張機能をインストールするときに、マイナー バージョンの自動アップグレードを有効にします。

  • 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 を使用します。 Azure Germany、Azure Government、または、21Vianet によって運営される Microsoft Azure でストレージ アカウントを使用する場合は、この値を必ず設定します。
storageAccountSasToken BLOB およびテーブル サービス (ss='bt') のアカウント SAS トークン。 このトークンは、コンテナーとオブジェクト (srt='co') に適用されます。 これにより、追加、作成、一覧表示、更新、書き込みのアクセス許可が付与されます (sp='acluw')。 先頭の疑問符 (?) を含めないでください。
mdsdHttpProxy (省略可能) 指定されたストレージ アカウントとエンドポイントに拡張機能が接続するために必要な HTTP プロキシ情報。
sinksConfig (省略可能) メトリックとイベントの配信が可能な代替宛先の詳細。 以下のセクションでは、拡張機能によってサポートされる各データ シンクについて詳しく説明します。

ARM テンプレート内の SAS トークンを取得するには、listAccountSas 関数を使用します。 テンプレートの例については、List 関数の例を参照してください。

必要な Shared Access Signature トークンを Azure portal で作成できます。

  1. 拡張機能の書き込み先となる汎用ストレージ アカウントを選択します。
  2. 左側のメニューの [セキュリティとネットワーク] で、[Shared Access Signature] を選択します。
  3. 前に説明したように、選択を行います。
  4. [SAS と接続文字列を生成する] を選択します。

[Shared Access Signature] ページを示すスクリーンショット。このページに [SAS と接続文字列を生成する] があります。

生成された Shared Access Signature を storageAccountSasToken フィールドにコピーします。 先頭の疑問符 (?) を削除します。

sinksConfig

Note

パブリックと保護の両方の設定には、省略可能な sinksConfig セクションがあります。 "保護された" 設定の sinksConfig セクションでは、sasURL のようなシークレットが含まれているため、EventHub および JsonBlob シンク構成のみが保持されます。 AzMonSink シンク構成を保護された設定に "含めることはできません"。

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

省略可能な sinksConfig セクションでは、収集された情報が拡張機能によって送信される送信先をさらに定義します。 "sink" 配列には、追加のデータ シンクごとのオブジェクトが含まれています。 "type" 属性によって、オブジェクトの他の属性が決まります。

要素
name このシンクを拡張機能構成の他の場所で参照するために使用される文字列。
type 定義されているシンクの型。 この型のインスタンス内のその他の値 (存在する場合) を決定します。

Linux Diagnostic Extension 4.0 では、EventHubJsonBlob という 2 つの保護されたシンクの種類がサポートされています。

EventHub シンク

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

"sasURL" エントリには、データの発行先となるイベント ハブの完全な URL (Shared Access Signature トークンを含む) が含まれています。 LAD には、送信要求を有効にするポリシーに名前を付ける Shared Access Signature が必要です。 次に例を示します。

  • contosohub という名前の Event Hubs 名前空間を作成します。
  • syslogmsgs という名前のイベント ハブを名前空間に作成します。
  • 送信要求を有効にする writer という名前の共有アクセス ポリシーをイベント ハブに作成します。

2018 年 1 月 1 日午前 0 時 UTC まで有効な SAS を作成した場合、sasURL の値は次の例のようになります。

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

Event Hubs 用の SAS トークンでの情報の生成と取得の詳細については、「SAS トークンを生成する」を参照してください。

JsonBlob シンク

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

JsonBlob シンクに転送されたデータは、Azure Storage 内の BLOB に格納されます。 LAD の各インスタンスは、各シンク名に対して 1 時間ごとに BLOB を作成します。 各 BLOB には、オブジェクトの構文的に有効な JSON 配列が必ず含まれています。 新しいエントリは、配列にアトミックに追加されます。

BLOB はシンクと同じ名前のコンテナーに格納されます。 BLOB コンテナー名に対する Azure Storage のルールが、JsonBlob シンクの名前に適用されます。 名前は 3 から 63 文字で、小文字の ASCII 英数字またはダッシュを使用します。

Public 設定

パブリック設定構造体には、拡張機能によって収集された情報を制御するさまざまな設定ブロックが含まれています。 各設定 (ladCfg を除く) は省略可能です。 ladCfg にメトリックまたは syslog の収集を指定する場合、StorageAccount も指定する必要があります。 LAD 4.0 からのメトリック用に Azure Monitor シンクを有効にするには、sinksConfig 要素を指定する必要があります。

{
    "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

"metrics": {
    "resourceId": "/subscriptions/...",
    "metricAggregation" : [
        { "scheduledTransferPeriod" : "PT1H" },
        { "scheduledTransferPeriod" : "PT5M" }
    ]
}
要素
resourceId VM または VM が所属する仮想マシン スケール セットの Azure Resource Manager リソース ID。 また、構成でいずれかの JsonBlob シンクを使用する場合は、この設定も指定します。
scheduledTransferPeriod 集計メトリックが計算され、Azure Monitor メトリックに転送される頻度。 頻度は、IS 8601 の時間間隔として表されます。 最小の転送間隔は 60 秒、つまり、PT1M です。 少なくとも 1 つの 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 portal のグラフ作成およびアラート通知機能のようなメトリックのコンシューマーでは、メトリックまたはメトリックのインスタンスを識別するキーとして counterSpecifier が使用されます。

builtin メトリックの場合、/builtin/ で始まる counterSpecifier 値をお勧めします。 メトリックの特定のインスタンスを収集するには、counterSpecifier 値にインスタンスの識別子を添付します。 次に例をいくつか示します。

  • /builtin/Processor/PercentIdleTime すべての vCPU の平均アイドル時間
  • /builtin/Disk/FreeSpace(/mnt) /mnt ファイル システム用の空き領域
  • /builtin/Disk/FreeSpace マウントされたすべてのファイル システムの平均空き領域

LAD でも Azure portal でも、counterSpecifier の値がいずれかのパターンに一致することは期待されていません。 counterSpecifier 値の構成は一貫した方法で行ってください。

performanceCounters を指定すると、LAD では常に Azure Storage のテーブルにデータが書き込まれます。 同じデータを JSON BLOB と Event Hubs のどちらか一方または両方に書き込むことができます。 テーブルへのデータの格納を無効にすることはできません。

同じストレージ アカウント名とエンドポイントが使用される LAD のすべてのインスタンスでは、メトリックとログが同じテーブルに追加されます。 同じテーブル パーティションに書き込みを行う VM が多すぎる場合、Azure によってそのパーティションへの書き込みが抑えられることがあります。

eventVolume の設定によって、エントリは 1 (小)、10 (中)、100 (大) のパーティションに分散されます。 通常、トラフィックの調整を回避するには、中パーティションで十分です。

Azure portal の Azure Monitor メトリック機能では、このテーブルのデータを使用して、グラフを生成したり、アラートをトリガーしたりします。 テーブル名は、次の文字列を連結したものです。

  • WADMetrics
  • テーブルに格納されている集計値の "scheduledTransferPeriod"
  • P10DV2S
  • 10 日ごとに変更される YYYYMMDD 形式の日付

例は、WADMetricsPT1HP10DV2S20170410WADMetricsPT1MP10DV2S20170609 のようになります。

syslogEvents

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

省略可能な syslogEvents セクションでは、syslog からのログ イベントの収集を制御します。 このセクションを省略すると、syslog イベントはまったくキャプチャされません。

syslogEventConfiguration コレクションには、対象の syslog ファシリティごとに 1 つのエントリがあります。 特定のファシリティで minSeverity"NONE" の場合、またはそのファシリティが要素にまったく表示されない場合、そのファシリティからのイベントはキャプチャされません。

要素
sinks 個々のログ イベントの発行先となるシンクの名前をコンマで区切ったリスト。 syslogEventConfiguration の制限に一致するすべてのログ イベントが、リストされている各シンクに発行されます。 例: "EHforsyslog"
facilityName syslog ファシリティの名前 ("LOG_USER""LOG_LOCAL0" など)。 詳細については、syslog のマニュアル ページの「Values for facility」を参照してください。
minSeverity syslog の重大度レベル ("LOG_ERR""LOG_INFO" など)。 詳細については、syslog のマニュアル ページの「Values for level」を参照してください。 拡張機能は、指定されたレベル以上のファシリティに送信されるイベントをキャプチャします。

syslogEvents を指定すると、LAD では常に Azure Storage のテーブルにデータが書き込まれます。 同じデータを JSON BLOB と Event Hubs のどちらか一方または両方に書き込むことができます。 テーブルへのデータの格納を無効にすることはできません。

このテーブルのパーティション分割動作は、performanceCounters についての説明と同じです。 テーブル名は、次の文字列を連結したものです。

  • LinuxSyslog
  • 10 日ごとに変更される YYYYMMDD 形式の日付

例は、LinuxSyslog20170410LinuxSyslog20170609 のようになります。

sinksConfig

省略可能なパブリック sinksConfig セクションでは、ストレージ アカウントと既定のゲスト メトリック ビューに加えて、Azure Monitor シンクへのメトリックの送信を有効にします。

Note

パブリックと保護の両方の設定には、省略可能な sinksConfig セクションがあります。 "パブリック" 設定の sinksConfig セクションには、AzMonSink シンク構成のみが保持され ます。 EventHub および JsonBlob シンク構成をパブリック設定に "含めることはできません"。

Note

sinksConfig セクションでは、VM または仮想マシンス ケール セットでシステム割り当て ID を有効にする必要があります。 Azure portal、CLI、PowerShell、または Azure Resource Manager を使用して、システムによってシステム割り当て ID を有効にすることができます。 詳細な手順に従うか、この記事の前のインストールのサンプルを参照してください。

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

fileLogs

fileLogs セクションでは、ログ ファイルのキャプチャを制御します。 LAD では、このファイルに書き込まれる新しいテキスト行がキャプチャされます。 テーブル行や、指定されたシンク (JsonBlobEventHub など) にそれらを書き込みます。

Note

fileLogsomsagent という名前の LAD のサブコンポーネントによってキャプチャされます。 fileLogs を収集するには、omsagent ユーザーが指定したファイルに対する読み取りアクセス許可を持っていることを確認します。 また、そのファイルへのパス内のすべてのディレクトリに対する実行アクセス許可も必要です。 LAD がインストールされたら、アクセス許可を確認するために sudo su omsagent -c 'cat /path/to/file' を実行します。

"fileLogs": [
    {
        "file": "/var/log/mydaemonlog",
        "table": "MyDaemonEvents",
        "sinks": ""
    }
]
要素
file 監視され、取得されるログ ファイルの完全なパス。 パスでディレクトリを指定したり、ワイルドカード文字を含めたりすることはできません。 omsagent ユーザー アカウントには、ファイル パスの読み取りアクセス権が必要です。
table (省略可能) Azure Storage テーブル。ファイルの "末尾" から新しい行が書き込まれます。 テーブルは、保護された構成で指定されている、指定されたストレージ アカウント内に存在する必要があります。
sinks (省略可能) ログ行が送信される追加のシンクの名前をコンマで区切ったリスト。

"table""sinks" のいずれか一方または両方を指定する必要があります。

組み込みプロバイダーでサポートされているメトリック

LAD でサポートされる既定のメトリックは、すべてのファイルシステム、ディスク、または名前にわたって集計されます。 集計されないメトリックについては、新しい Azure Monitor シンク メトリックのサポートを参照してください。

Note

各メトリックの表示名は、それが属しているメトリックの名前空間によって異なります。

  • Guest (classic) ストレージ アカウントから設定: performanceCounters セクションに指定された displayName、または Azure portal に表示される既定の表示名。 VM の場合、[監視]>[診断設定] で、[メトリック] タブを選択します。
  • azure.vm.linux.guestmetrics 構成されている場合は AzMonSink から設定: 次の表で指定されている "azure.vm.linux.guestmetrics表示名"。

Guest (classic)azure.vm.linux.guestmetrics のバージョンの間のメトリック値は異なります。 クラシック メトリックにはエージェントに特定の集計が適用されていますが、新しいメトリックは集計されていないカウンターであるため、お客様は表示/アラート時に必要に応じて柔軟に集計を行うことができます。

builtin メトリック プロバイダーは、幅広いユーザーにとって最も興味深いメトリックのソースです。 これらのメトリックは、大きく 5 つのクラスに分類されます。

  • プロセッサ
  • メモリ
  • ネットワーク
  • ファイル システム
  • ディスク

"プロセッサ" クラスの組み込みのメトリック

"プロセッサ" クラスのメトリックは、VM のプロセッサ使用率に関する情報を提供します。 パーセンテージが集計されると、結果はすべての CPU の平均になります。

2 vCPU の VM では、1 つの vCPU が 100% ビジーで、もう一方が 100% アイドル状態の場合、報告される PercentIdleTime は 50 です。 各 vCPU が同じ期間に 50% ビジーだった場合、報告される結果はやはり 50 になります。 4 vCPU の VM では、1 つの vCPU が 100% ビジー状態で、その他がアイドル状態になると、報告される PercentIdleTime は 75 になります。

カウンタ azure.vm.linux.guestmetrics 表示名 意味
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 非アイドル時間のうち、特権 (カーネル) モードで消費された割合

最初の 4 つのカウンターの合計は 100% となる必要があります。 最後の 3 つのカウンターの合計も 100% となります。 これら 3 つのカウンターで、PercentProcessorTimePercentIOWaitTimePercentInterruptTime の合計が分割されます。

"メモリ" クラスの組み込みのメトリック

"メモリ" クラスのメトリックでは、メモリの使用率、ページング、スワップに関する情報が提供されます。

カウンタ azure.vm.linux.guestmetrics 表示名 意味
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 合計スワップに対する使用中のスワップ領域の割合

このメトリックのクラスには、1 つのインスタンスしかありません。 "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 起動後にネットワーク ポートによって報告された競合の数

ファイル システム クラスの組み込みメトリック

"ファイル システム" クラスのメトリックでは、ファイル システムの使用状況に関する情報が提供されます。 絶対値と割合の値は、ルートではなく、通常のユーザーに表示されるように報告されます。

カウンタ 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 1 秒あたりの読み取りバイト数
BytesWrittenPerSecond filesystem write bytes/sec 1 秒あたりの書き込みバイト数
BytesPerSecond filesystem bytes/sec 1 秒あたりの読み取りまたは書き込みバイト数
ReadsPerSecond filesystem reads/sec 1 秒あたりの読み取り操作
WritesPerSecond filesystem writes/sec 1 秒あたりの書き込み操作
TransfersPerSecond filesystem transfers/sec 1 秒あたりの読み取りまたは書き込み操作

"ディスク" クラスの組み込みメトリック

"ディスク" クラスのメトリックは、ディスク デバイスの使用状況に関する情報を提供します。 これらの統計情報は、ドライブ全体に適用されます。

デバイスに複数のファイル システムが存在する場合、そのデバイスのカウンターは、実際にはすべてのファイル システムについて集計されます。

カウンタ azure.vm.linux.guestmetrics 表示名 意味
ReadsPerSecond disk reads 1 秒あたりの読み取り操作
WritesPerSecond disk writes 1 秒あたりの書き込み操作
TransfersPerSecond disk transfers 1 秒あたりの合計操作数
AverageReadTime disk read time 読み取り操作あたりの平均秒数
AverageWriteTime disk write time 書き込み操作あたりの平均秒数
AverageTransferTime disk transfer time 操作あたりの平均秒数
AverageDiskQueueLength disk queue length キューに登録済みのディスク操作数の平均値
ReadBytesPerSecond disk read guest os 1 秒あたりの読み取りバイト数
WriteBytesPerSecond disk write guest os 1 秒あたりの書き込みバイト数
BytesPerSecond disk total bytes 1 秒あたりの読み取りまたは書き込みバイト数

LAD 4.0 の構成例

前述の定義に基づき、このセクションでは LAD 4.0 拡張機能の構成例を示して説明します。 この例を適用するには、独自のストレージ アカウント名、アカウントの Shared Access Signature トークン、Event Hubs SAS トークンを使用します。

注意

公開設定と保護された設定を提供する方法は、LAD のインストールに Azure CLI または Azure PowerShell のいずれを使用するかによって異なります。

  • Azure CLI を使用する場合、前のサンプル コマンドを使用するには、次の設定を ProtectedSettings.jsonPublicSettings.json に保存します。
  • PowerShell を使用する場合、$protectedSettings = '{ ... }'$publicSettings = '{ ... }' を実行して、$protectedSettings$publicSettings に次の設定を保存します。

保護された設定の構成

保護された設定では次が構成されます。

  • ストレージ アカウントです。
  • 一致するアカウントの Shared Access Signature トークン。
  • 複数のシンク: JsonBlob または EventHub と SAS トークン。
{
  "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 Storage です。 コンテナー名は、JsonBlob シンクで定義されているとおりです。
  • EventHub シンクで指定されている Event Hubs エンドポイント。
{
  "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 ポータルを使用して、パフォーマンス データを表示したり、アラートを設定したりします。

Azure portal の [メトリック] ページで [可用性] が選択されているスクリーンショット。

performanceCounters データは常に Azure Storage テーブルに格納されます。 Azure Storage API は、さまざまな言語とプラットフォームで利用できます。

JsonBlob シンクに送信されるデータは、保護された設定で指定されたストレージ アカウント内の BLOB に格納されます。 すべての Azure Blob Storage API で BLOB データを使用できます。

次の UI ツールを使用して、Azure Storage のデータにアクセスすることもできます。

Azure Storage Explorer セッションの次のスクリーンショットでは、テスト VM 上で正しく構成された LAD 4.0 拡張機能から生成された Azure Storage テーブルとコンテナーが示されています。 画像は サンプル LAD 4.0 構成と正確には一致しません。

スクリーンショットに Azure Storage Explorer が示されています。

Event Hubs エンドポイントに発行されたメッセージを使用する方法の詳細については、関連する Event Hubs のドキュメントを参照してください。

次のステップ