Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

Azure 仮想マシン(Windows)の診断機能を有効にする

Windows が実行されているAzure仮想マシンの診断機能(Azure Diagnostics)を有効にするための方法についてです。有効にするにはいくつか方法があって、

  • 新ポータルから
  • Azure PowerShell コマンドレットから
  • Visual Studio の Azure Toolsから

の3つの方法があります。

新ポータルから

従来の完全ポータルでも拡張機能のインストールは可能ですが、診断機能は有効にできません。新規作成時はもちろん、既存の仮想マシンに対しても設定を有効にできます。

f:id:StateMachine:20150514132654p:plain

基本的な設定はできますが、詳細な指定はできません。例えば、ログ転送間隔、パフォーマンスカウンタ、カスタムログ転送の設定などは、別途PowerShellなどを通して行う必要があります。

PowerShellから

PowerShellからは、Set-AzureVMDiagnosticsExtension コマンドで設定できます。診断機能に利用するストレージは、ストレージコンテキストオブジェクトとして渡す必要があります。そして、設定ファイルはXMLで渡す必要があり、これらのスキーマは Azure Diagnostics 1.2 Configuration Schema で解説されています。

$ctx = New-AzureStorageContext -StorageAccountName $account -StorageAccountKey $key

Get-AzureVM -ServiceName $name -Name $name | 
Set-AzureVMDiagnosticsExtension  -DiagnosticsConfigurationPath C:\temp\diag.xml -StorageContext $ctx -Version "1.*" | 
Update-AzureVM

このXMLファイルをゼロから手書きするのは少し難儀でしょうから、あまりこの方法での設定はお勧めできない感じです。ただし、同一の設定を複数仮想マシンに展開するようなシナリオならば、逆にこちらをお勧めします。

既存の仮想マシンから診断機能の設定を取得するには、前エントリの以下の方法で実現できます。

statemachine.hatenablog.com

Visual Studio から

Visual Studio からの設定がGUIベースでできて、多分一番楽です。Azure 関連のツールをインストールしてあれば、サーバーエクスプローラからAzure仮想マシン一覧が表示されます。ダブルクリックすると、プロパティが開くので、拡張機能のところから、「Microsoft Monitoring Agent Diagnostics」を選び追加します。

f:id:StateMachine:20150515175317p:plain

追加すると、各ログの設定がGUIでできます。最終的にはXMLになって更新されるのでしょう。

f:id:StateMachine:20150515175604p:plain f:id:StateMachine:20150515175641p:plain f:id:StateMachine:20150515175652p:plain f:id:StateMachine:20150515175709p:plain f:id:StateMachine:20150515175716p:plain f:id:StateMachine:20150515175725p:plain f:id:StateMachine:20150515175733p:plain f:id:StateMachine:20150515175737p:plain

VSからインストールした時に少しきになるのは、

  • 拡張機能のバージョンが、この時点で"1.4"と固定されてしまいます。PowerShell経由だと、バージョン固定も、1.* 的なインストールもできて(管理ポータルだと勝手に1.* 的なインストールになる)、拡張機能のVLがあがると勝手に更新されるみたいです。
  • PowerShellから入れた診断機能が、VS側から構成変更できないです。たぶん、VS側のプラグインに不具合だとは思うのですが、微妙に不便です。

まとめ

現状、いくつかインストール方法があるなかで、これといった決めてが無いかんじです。管理ポータル、PowerShell ←→VS 間でシームレスに構成変更できればいいのですが、ここが最大のネックです。テスト環境でVSからXMLの構成ファイルVSから作って、それを元にPowerShellで本環境に展開とかのほうが良い感じいはします。