1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Windows]IIS コンテナのログを LogMonitor を使って docker logs で見れるようにした

Posted at

作業メモです。
Docker を動かしている OS は WindowsServer 2019 になります。

背景

IIS のコンテナを動かした所、docker logsでアクセスログなどが表示されなかった。


# 起動
docker run -d -p 8888:80 mcr.microsoft.com/windows/servercore/iis
1b1cff21fc3e7f3029c9158afe887486f3fb601fdda441179a7adb6cc71137c8

# IE を開いて http://localhost:8888 にアクセス出来ることを確認

# 何も出ない
docker logs 1b1cff21fc3e

# powershell を起動
docker exec -it 1b1cff21fc3e powershell

# アクセスログは記録あり
cd .\inetpub\logs\LogFiles\W3SVC1\
cat .\u_ex200618.log
#Software: Microsoft Internet Information Services 10.0
#Version: 1.0
#Date: 2020-06-18 00:44:25
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status
sc-substatus sc-win32-status time-taken
2020-06-18 00:44:25 172.17.224.172 GET / - 80 - 172.31.20.83 Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+rv:11.0)+
like+Gecko - 200 0 0 169
2020-06-18 00:44:25 172.17.224.172 GET /iisstart.png - 80 - 172.31.20.83 Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.
0;+rv:11.0)+like+Gecko http://localhost:8888/ 200 0 0 3
2020-06-18 00:44:25 172.17.224.172 GET /favicon.ico - 80 - 172.31.20.83 Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0
;+rv:11.0)+like+Gecko - 404 0 2 12

Docker では標準出力・標準エラー出力をコンテナのログと判断する為、上記だと検知できないよう。

これについてどうするかと調べていたら MS のドキュメントに以下を確認

Docker コンテナーログ

docker logs コマンドは、Linux アプリケーションの標準のアプリケーションログの保存場所である STDOUT/STDERR からコンテナーのログをフェッチします。 Windows アプリケーションは通常、STDOUT/STDERR には記録されません。代わりに、ETW、イベントログ、またはログファイルに記録されます。
Microsoft がサポートしているオープンソースツールであるLog Monitorは、github で入手できるようになりました。 ログモニターは、Windows アプリケーションログを STDOUT/STDERR にブリッジします。 ログモニターは、構成ファイルを使用して構成されます。

上記を試したときのメモ。

最終的に確認出来たもの

以下のような感じです。

FROM mcr.microsoft.com/windows/servercore/iis
COPY LogMonitor/ C:/LogMonitor
WORKDIR /LogMonitor
SHELL ["C:\\LogMonitor\\LogMonitor.exe", "powershell.exe"]
ENTRYPOINT C:\\ServiceMonitor.exe w3svc
LogMonitorConfig.json
{
  "LogConfig": {
    "sources": [
      {
        "type": "File",
        "directory": "c:\\inetpub\\logs",
        "filter": "*.log",
        "includeSubdirectories": true
      }
    ]
  }
}

docker build の際の構成は以下

 tree /f
Folder PATH listing
Volume serial number is E8C7-77A7
C:.
   Dockerfile

└───LogMonitor
        LogMonitor.exe
        LogMonitorConfig.json

これを docker build して確認。

設定ファイルは以下のものから抜粋

Authoring a Config File

LogMonitor.exe は以下から 1.1 をダウンロードした

microsoft /windows-container-tools

使ってみる

# 起動
docker run -d -p 8888:80 toshihirock/iis-with-log-monitor

# ブラウザからアクセス

# アクセス後、すぐではないが少し待てばログが見える
docker logs 0367ef142bc7
#Software: Microsoft Internet Information Services 10.0
#Version: 1.0
#Date: 2020-06-18 00:53:57
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken
2020-06-18 00:53:57 172.17.231.229 GET /aaaaa - 80 - 172.31.20.83 Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko - 404 0 2 128
2020-06-18 00:53:57 172.17.231.229 GET /favicon.ico - 80 - 172.31.20.83 Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko - 404 0 2 11
2020-06-18 00:54:15 172.17.231.229 GET /aaaaaaaaaa - 80 - 172.31.20.83 Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko - 404 0 2 0
2020-06-18 00:55:05 172.17.231.229 GET /aaaaaaaaaaccccc - 80 - 172.31.20.83 Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko - 404 0 2 0
PS C:\Users\Administrator\docker-iis>
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?