Share via


Azure Log Collector で Virtual Machines のトラブルシューティングを簡略化

このポストは、3 月 9 日に投稿された Simplifying Virtual Machine Troubleshooting using Azure Log Collector の翻訳です。

Virtual Machines や Cloud Services のアプリケーションで何らかの問題が発生し、そのトラブルシューティングのために複数のロールや Virtual Machines のインスタンスからログを収集することが必要になった経験はありませんか? このとき、もし Virtual Machines に接続できなかったら、どのようにしてログを収集すればよいのでしょうか。

このような場合、Azure カスタマー サポート チームがリリースした Azure Log Collector 拡張機能を使用すると、リモートから Virtual Machines にログインしなくても Cloud Services インスタンスVirtual Machines のログを収集し、アップロードすることができます。これらのログは自動的に Azure Storage にアップロードされるため、Azure サポート チームやトラブルシューティングの担当者と簡単に共有することができます。なお、VM 拡張機能についてあまり詳しくない方は、こちらの MSDN ドキュメント ページで詳細をご確認いただけます。

注: Log Collector は現在 Windows VM のみをサポートしています。今後近いうちに Linux VM もサポートする予定です。

Log Collector が必要な理由

Azure の PaaS または IaaS のプラットフォームにデプロイされているアプリケーションのトラブルシューティングを行う際、問題が発生した瞬間の診断データを Virtual Machines から収集する必要があります。このデータは、自社サービスや Azure VM エージェントなどの Azure コンポーネントで生成されます。しかし、正しいデータを見つけ出して収集するには、Azure 環境に対する詳細な知識が必要とされます。Azure Log Collector では以下がサポートされており、この手順を簡略化することができます。

  • カスタマイズに対応したシンプルなログ収集用コマンド ライン インターフェイス。
  • リモート接続によるアクセスが不要。リモート アクセスが不可能な場合、または何らかの理由で停止した場合にも診断データの収集が続行されます。
  • Service Management REST API または Azure PowerShell コマンドレットにより、どこからでも拡張機能を有効化できます。
  • 自社の Cloud Services に多数のロール インスタンスが存在する場合、1 つずつコマンドを実行してすべての Virtual Machines からログ データを取得する場合と比べて大幅に作業時間が短縮されます。
  • 詳細なデータ ファイルを収集する Virtual Machines の場所をカスタマイズして指定できます。
  • Virtual Machines と Cloud Services の両方のサービスで利用できます。

Log Collector で収集されるログファイルの種類

Azure Log Collector がサポートしている収集モードは次のとおりです。

種類

収集されるログ

Azure プラットフォームのログ

Azure ゲスト エージェントおよびその他の Azure コンポーネントに関連するログがすべて収集されます。

すべてのログ

  • Azure プラットフォームのログ
  • システムおよびアプリケーションのイベント ログ
  • HTTP エラー ログ
  • IIS のログ
  • セットアップ ログ
  • その他のシステム ログ

詳細ログ

収集対象のログ フォルダーをカスタマイズできます。

上記のモードの構成については、VM 拡張機能に関する MSDN ドキュメント (英語) をご確認ください。また、Log Collector で収集されるファイルの説明については、こちらのブログ記事 (英語) を参照してください。

Log Collector の使用方法

こちらの MSDN ドキュメント (英語) には「SetAzureServiceLogCollector.ps1」と「SetAzureVMLogCollector.ps1」という 2 種類の PowerShell スクリプトのサンプルが掲載されていますが、これはトラブルシューティングの対象が Azure Cloud Services であるか、Azure Virtual Machines で実行されているアプリケーションであるかによって使い分ける必要があります。これらのスクリプトをコピーし、ドキュメントの指示に従ってローカルで実行します。すると、下記のように簡単にログを収集できます。

Azure Virtual Machines での使用例

 # Cloud Services 名を指定
$ServiceName = 'YourServiceName'

#拡張機能をインストールし、有効化するインスタンスを指定。全インスタンスを指定する場合はワイルドカード (*) を使用
$VMName = "YourVMName"

#詳細なデータ収集フォルダーと設定を指定
$AdditionalDataList = @()

#収集モードを "Full" と "GA" のいずれかに指定
$mode = "Full"
 $StorageAccountName = 'Your Azure Storage Account Name'
$StorageAccountKey = 'Your Storage Key'
 .\SetAzureServiceLogCollector.ps1 -ServiceName YourCloudServiceName  -Roles $roles  -Instances $instances –Mode $mode -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey -AdditionDataLocationList $AdditionalDataList

Azure Cloud Services での使用例

 .\SetAzureServiceLogCollector.ps1 -ServiceName YourCloudServiceName  -Roles $roles  -Instances $instances –Mode $mode -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey -AdditionDataLocationList $AdditionalDataList

注: 上記の 2 つのスクリプトは、こちらの MSDN ドキュメント ページ (英語) からコピーできます。複数のログを収集する際は、コマンドを繰り返して実行します。ログと VM のサイズによっては、Storage アカウントへのログのアップロードに数分かかる場合があります。

ログを収集した後の作業

Storage アカウントにログがアップロードされたら、こちらの記事 (英語) に記載されている手順に従ってトラブルシューティングのための調査を実施するか、または Azure サポート チームに送信してサポート インシデントかどうかの判断を依頼します。Log Collector が不要になったら、MSDN ドキュメントの手順に従ってアンインストールすることもできます。例として、IaaS プラットフォームで動作する Virtual Machines の場合のサンプル コードを記載します。

IaaS の場合

 Get-AzureVM -ServiceName $ServiceName -Name $VMName | Set-AzureVMExtension -Publisher Microsoft.WindowsAzure.Compute -ExtensionName "AzureLogCollector" -Version 1.0 -Uninstall | Update-AzureVM -Verbose

Log Collector が皆様のお役に立てれば幸いです。Linux バージョンのリリース、および Log Collector を追加するカスタム コマンドレットのサポートも予定していますので、どうぞお楽しみに!