ワダです。
現在私が担当している業務では、不具合の原因調査を行うためにIISログを渡されることがあります。
IISログは情報量が多いため、そのままの状態では調査に時間がかかります。そのためツールの使用が得策だと思います。
ツールは「Log Parser」が使いやすいようです。
セットアップ方法、使用方法など、試してみたことを書きます。
IISについて
IISは、Microsoft Windowsの標準Webサーバー(アプリケーションサーバー)ソフトです。
(参照:https://ja.wikipedia.org/wiki/Internet_Information_Services )
(参照:http://e-words.jp/w/IIS.html )
※余談ですが、こちらのサイトで、自分の新人時代はIISの正式名称は「Internet Information Server」であったことを思い出しました。現在は「Internet Information Service」ですね(略称は変化なし)。時のたつのは早いものです。。
IISログの出力場所は、デフォルトでは以下の場所です。
%SystemDrive%\inetpub\logs\LogFiles
IISマネージャーを起動し、「ログ記録」から確認できます。
IISログに出力される内容
IISのログには、下記のようにいろいろな情報が出力されています。
情報量が多く、このまま読むのはとっても大変です。
Excelに貼り付けるとしても、カンマやスペースでセルがずれるので見づらくフィルタも使えません。
1
2
3
4
5
6
7
8
9
|
#Software: Microsoft Internet Information Services 10.0
#Version: 1.0
#Date: 2019-04-10 00:19:12
#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
2019-04-10 00:19:12 ::1 GET / - 80 - ::1 Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko - 200 0 0 1222
2019-04-10 00:19:12 ::1 GET /iisstart.png - 80 - ::1 Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko http://localhost/ 200 0 0 4
2019-04-10 00:19:12 ::1 GET /favicon.ico - 80 - ::1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64;+Trident/7.0;+rv:11.0)+like+Gecko - 404 0 2 2
2019-04-10 00:20:49 ::1 GET /windowopen - 80 - ::1 Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko - 404 0 2 0
・・・・
|
(メモ)IISログの各フィールドの意味
名前 | 意味 | 例 |
---|---|---|
date | リクエストを受信した日付 | 2019-04-10 |
time | リクエストを受信した時刻 | 00:19:12 |
s-ip | サーバーのIPアドレス | ::1 |
cs-method | 使用されたHTTPメソッド | GET、POST |
cs-uri-stem | 操作のターゲット | /iisstart.png |
cs-uri-query | ターゲットのクエリ―情報 | |
s-port | サーバーのポート | 80 |
cs-username | ユーザー名 | |
c-ip | クライアントのIPアドレス | |
cs(User-Agent) | クライアントが使用したブラウザーの種類 | Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko |
cs(Referer) | ユーザーが直前にアクセスしたサイト | |
sc-status | HTTP状態コード | 200、404、500 |
sc-substatus | HTTPの副状態コード | |
sc-win32-status | Windowsの状態コード | |
time-taken | リクエストの処理に要した時間(ミリ秒) | 1222 |
Log Parserのダウンロード
https://www.microsoft.com/ja-jp/download/details.aspx?id=24659
「Log Parser 2.2 日本語版」をダウンロードします。ダウンロード後、「LogParser.msi」を実行してインストールします。
Log Parser Studio(LPS)のダウンロード
GUIで操作を行え、ライブラリ当便利な機能も含まれている「Log Parser Studio」もインストールします。
https://docs.microsoft.com/ja-jp/archive/blogs/exchange_jp/log-parser-studio
「英語版」から「LPSV2.D2.zip」をダウンロードし、任意の場所で解凍します。
LPSを起動
「LPSV2.D1」フォルダにある「LPS.exe」を起動します。
すると次のような画面が立ち上がります。
「Library」というタブがあり、LPSにあらかじめ登録されているクエリのタイトルが一覧に表示されています。
クエリは一般的なSQLとほぼ同じもので、実行するとログファイルから必要な情報が抽出されます。
ログファイルを選択
解析したいログを選択します。
新しいタブを開き、左から5番目のボタンをクリックして、ログファイルを指定しOKをクリックします。
Log Typeを選択
IISログを解析するので、Log Type「IISW3CLOG」を選択します。
マニュアルによると、Log ParserではIISログだけでなく、様々なソースからデータを取得できるようです。
(例 Windows イベントログ、Windows レジストリ他)
解析対象のソースに合わせたLog Typeを選択します。
クエリを実行
クエリを実行(左から2番目の「!」ボタンをクリック)します。
しばらく待つと、クエリ実行結果が表示されます。
クエリ実行結果がセルに表示されています。
Excelで見たい場合は、左上をクリックして全選択状態にしてからコピーしてExcelシートに貼り付ければ、レイアウトが崩れることなく見ることができます。
クエリを編集
クエリは自由に作成、編集できます。
日付範囲や時間を絞ったり、特定のIPアドレスからのリクエストに限定して表示したりすることができます。
例:特定の日の、時間帯別リクエスト数を知りたい
1
2
3
4
|
SELECT SUBSTR(TO_STRING(time,'hh:mm:ss'),0,2) as [時間帯],
COUNT(SUBSTR(TO_STRING(time,'hh:mm:ss'),0,2)) as [リクエスト数]
FROM '[LOGFILEPATH]'
GROUP BY SUBSTR(TO_STRING(time,'hh:mm:ss'),0,2)
|
マニュアルによると、クエリには一般的なSQL句(SELECT、WHERE、GROUP BY、HAVING、ORDER BY)、集計関数(SUM、COUNT、AVG、MAX、MIN)、その他の関数(SUBSTR、CASE、COALESCE、REVERSEDNS など) を使用できるようです。
グラフ
出力結果をグラフにすることもできます。
左から8番目のアイコン(マウスカーソルをあてると「Create chart from active result grid」のツールチップが出る)をクリックするだけで、簡単に作成可能です。
バッチジョブとマルチスレッド
LPSでは、クエリの並行実行、定期実行が可能です。例えば、
日々決まった時間に特定のエラーが発生したログをCSVファイルに出力する
といった使い方ができます。
また、1つのクエリに多大な時間がかかっている場合に処理中のタブ画面が固まったりして他の解析がができなくなるのは困りますが、LPSではいくつものクエリを同時実行可能です。
まとめ
膨大な情報からノイズを取り除き必要な情報を見やすい形式にすることは、不具合の早期解決に必須ともいえます。
Log Parser、Log Parser Studio共に日本語のしっかりしたマニュアルがあるので、独学でも使いこなせそうです。
今回は以上です。ありがとうございました。