(仮) ブログ

主にWeb Apps や、Azure PaaS サービス を使う際に役立ちそうなことを書こうと思っています。

Web Apps (Linux) でログファイルを取得してくる

Web Apps on Linux でコンテナの起動に失敗したときは、ブラウザ上にエラーが出ますが、詳細なエラーはログ ファイルに記録されます。 ウェブ上で見ることもできますが、手元に保存してからの方がより簡単ですよね。 そのやり方がよくわからないという方向けの記事です。 ※ 今回はWeb App for Containers は当てはまりません。

目次

ログ ファイルを有効化する

まずは、stdout、stderr をログに出力するように設定を行いましょう。これができてないと Docker コンテナの起動しか記録されません。

f:id:yoshioblog:20180325092354p:plain

Kudu サイトに行く

Web Apps の管理サイトである Kudu サイトに行きましょう。Azure ポータルから、Web Apps を選択したあと、[高度なツール] から移動することができます。 もしくは、https://yourwebapp.scm.azurewebsites.net からも移動可能です。(yourwebapp は自分の Web Apps 名)

Web Apps (Linux) はコンテナ上で動作するアプリケーションですが、Kudu も別コンテナ上で動作するアプリケーションとなります。 このため、アプリケーションが動作しているコンテナ内のプロセス情報などを見るには、WebSSH で、Kudu からアプリケーションが動作しているコンテナへ接続する必要があります。

なお、Kudu からしSSH 接続はできず、クライアント PC から SSH でコンテナへの接続はできませんので注意してください。

/home/LogFiles へ移動する

画面上部の [Debug console] -> [Bash] から Bash コンソールへ移動しましょう。/home/LogFiles 以下にログ ファイルが保存されています。

f:id:yoshioblog:20180325092722p:plain

cat コマンドでログ ファイルを見ることができるのですが、正直わかりづらい、、

f:id:yoshioblog:20180325092810p:plain

ということで手元にダウンロードしましょう。

ログ ファイルを ZIP でダウンロード

Web Apps の管理サイトである Kudu サイトにはいくつか便利な API が用意されています。 その中でも重宝しているのが、 特定のディレクトリやファイルを ZIP でダウンロードしてくる API

github.com

ログ ファイルが保存されているディレクトリを ZIP でダウンロードする場合はこんな感じ。ブラウザに入力するだけでダウンロードできます。

https://yourwebapp.scm.azurewebsites.net/api/zip/LogFiles

ダウンロードしてきた、ログ ファイルを好きなエディタで読みましょう。

f:id:yoshioblog:20180325093044p:plain

Visual Studio Code の拡張機能である、Log File Highlighter を入れると便利です。

f:id:yoshioblog:20180325101201p:plain

おわりに

Web Apps on Linux では /home/LogFiles 以下にログを出力するようにあらかじめ設定がされています。 一方で、Web App for Containers は自分で Docker イメージを作る必要があるので、今回の方法ではログファイルを出力することはできません。 Web App for Containers の場合は自分で頑張って設定しましょう。

Web Apps on Linux と Web App for Containers の違いはここで説明されています。

azure.microsoft.com

ちなみに、Web Apps on Linux の場合、DockerFile や各言語のスクリプトの中身は実は Azure App Service · GitHub で公開されています。