Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる:Azure ハイッ! ここ大事!(3/3 ページ)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう。
Kudu――デプロイ&管理ツール
前ページでは、開発ツールに用意されているコンソール画面を利用しましたが、オンプレミスや仮想マシンのWindows OS上のコマンドプロンプトと違って、できることにはかなり制限がありますし、使い勝手もよくありません。これ以外にも幾つかCUIのツールを使える機能(CMDやPowerShell、Bashシェルなど)がありますので、それらを使う方がいいかもしれません。
次は「Kudu(クーズー)」というツールを使ってみたいと思います。Kuduは、Azure Webサイトのためのデプロイエンジンプロジェクトです。GitやOneDrive、Dropbox、Visual Studio Team Services、Visual Studio、FTPなど、さまざまなリポジトリやツールなどからWeb Appsに対してコンテンツをデプロイしたり、更新、後処理などを行ったりします。このデプロイ機能については次回触れます。
- KuduプロジェクトのWebページ[英語](GitHub)
Kuduは、主にデプロイのためのエンジンですが、それ以外にもWeb Apps環境を管理したり、Azure管理画面の機能を拡張したりすることもできます。そのうちの1つがCUIで操作するデバッグ用のコンソール画面ツールです。CMD(コマンドプロンプト)もしくはPowerShellで操作できます。
Kuduツールを起動するには、Web Appsの[開発ツール]メニューから[高度なツール]を起動します。
Kuduの起動画面
KuduはWeb Appsのデプロイや環境の管理などを行うための、Azureの拡張機能の1つです。これを使うとWeb Appsの動作環境がどうなっているかを簡単に知ることができます。
(1)実行環境の概要。
(2)REST APIでも操作できます。
このページにはWeb Apps環境の概要が表示されています(KuduツールはWeb Appsごとに起動して利用します)。
上部にある[Environment]メニューを実行すると、実行中のWeb Appsの環境の詳細を確認できます。
システム情報の一覧
sysinfo32コマンドは権限の問題で動かないようですが、代わりにこの情報が使えそうです。
(1)OS環境などの設定です。普通のWindows OSと同じようです。
(2)アプリケーションの設定。以下、Webサーバの設定や接続文字列、環境変数の情報などが表示されます。
[Debug console]メニューから[CMD]を選択すると、Kuduのデバッグ用コンソール画面(コマンドプロンプト)が表示されます。
[CMD]を起動すると次のようになります。デバッグコンソール画面はファイルのブラウズ機能も兼ねていて、コマンドプロンプト上でcdを使ってフォルダを変更すると、上側にあるファイルの一覧リストの内容も自動的に変更されます。ファイルを新規作成/削除したり、アップロード/ダウンロードが行えたりします。
CMDデバッグコンソール画面
CMDは、コマンドプロンプトと同様に使えるデバッグコンソールです。
(1)ホーム(D:\home)へ移動します。
(2)サイトのルート(D:\local)へ移動します。
(3)システムドライブ(D:\)へ移動します。
(4)現在のフォルダ中のファイルの一覧。上の移動アイコンや、cdコマンドと連動しています。
(5)dirのようなコマンドでも操作できます。
トップにあるメニューから[Process Explorer]を選ぶと、Web Appsの中で動作しているプロセスの一覧が確認できます。
プロセスの一覧の確認
Process Explorerを使うと、現在サンドボックス中で実行されているプロセスの一覧を確認できます。Windows OSのタスクマネージャーと違って、サンドボックス外のプロセスは見えません。
(1)このメニューを実行します。
(2)実行されているプロセスの1つ。w3wp.exeはIISのワーカーププロセス。
(3)ワーカープロセスから起動されている、PHPのプロセス。
(4)cmd.exeもワーカープロセスのサブプロセスとして動作しています。
(5)プロセスの詳細情報(メモリサイズ、使用ハンドル数、DLL、スレッド、環境変数など)を確認できます。
「w3wp.exe」はWindows OSのIISでよく見掛ける「ワーカープロセス」です。Web Appsでは、これがWeb Appsを構成するプロセスのルートとなっていて、その下でWordPressのPHPやMySQLのプロセスが動作していることが分かります。IISのプロセスやその他のOSのプロセスはこのWeb Appsのサンドボックス内からは見えませんし、ユーザーが管理・操作することはできません(PaaSだから当然ですね)。
GUIではなく、PowerShellを使えばCUIでも確認できます。そのためには[Debug Console]メニューで[PowerShell]を選択して起動し、例えば「Get-Process」とすれば、より詳しい情報を確認できます。先ほどの[開発ツール]の[コンソール]と違い、PowerShellならかなりいろいろな操作ができそうです。
※KuduでPowerShellコンソールを使ってみる
PS D:\home> get-process ……プロセスの一覧の取得
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
649 29 487832 1012 604 3.08 8380 mysqld
10253 24 38848 2764 189 3.20 12064 node
342 24 43132 18364 211 7.34 13684 powershell
810 51 36860 5056 256 2.80 5600 w3wp
1665 112 413008 17888 834 90.83 13056 w3wp
PS D:\home> get-process | fl * ……詳細の確認
__NounName : Process
Name : mysqld
Handles : 649
VM : 633622528
WS : 1036288
PM : 499539968
NPM : 29648
Path : D:\Program Files
(x86)\mysql\5.7.9.0\bin\mysqld.exe
Company :
CPU : 3.078125
FileVersion : 5.7.9.0
ProductVersion : 5.7.9.0
……(以下省略)……
Cloud ShellでAzureを管理する
Azureではもう1つ、「Cloud Shell」という管理コンソール画面も利用できます(2017年第2四半期から利用できるようになりました)。
これはAzureのリソースを管理するための、Webブラウザベースのシェル(UbuntuのBashシェル。PowerShellは今後実装予定)です。ただし実行中のWeb Appsなどとは別に作られた、独立したVM上で動作するツールであり、Web Appsのプロセスとは特に連携はしていません。Azureファイル共有で接続したファイルを操作するためのツールです。
Azure Cloud Shell
Azure Cloud ShellはAzureのリソースをCUIで管理するための、ブラウザベースのシェル(Bash)です。Azureファイル共有で接続したファイルを操作、管理できます。
(1)Cloud Shellを起動するにはこれをクリックします。
(2)起動したシェル。このシェルは独立したVM上で動作しています。Azureファイル共有でリソースに接続して操作します。
今回はCUIのコンソール画面ツールなどを使って、Web Appsのプロセスの様子を見てみました。サンドボックスの仕組みを使って、他のアプリから実行環境を隔離し、さらに移動なども簡単に行えるようになっているようです。
Web Appsを使うだけなら、このような仕組みを知らなくても構わないと思いますが、中を知って、ちょっと親しみが沸いてきました。Azureの他のサービスもこうやって中身をのぞいてみたいですね。
次回はWeb Appsのデプロイについて見ていきます。
Copyright© Digital Advantage Corp. All Rights Reserved.