Log Parser StudioでIISログを解析

posted in: IIS | 0

ワダです。
現在私が担当している業務では、不具合の原因調査を行うために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に貼り付けるとしても、カンマやスペースでセルがずれるので見づらくフィルタも使えません。

(メモ)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とほぼ同じもので、実行するとログファイルから必要な情報が抽出されます。

lps_image01

ログファイルを選択

解析したいログを選択します。
新しいタブを開き、左から5番目のボタンをクリックして、ログファイルを指定しOKをクリックします。

lps_image02

Log Typeを選択

IISログを解析するので、Log Type「IISW3CLOG」を選択します。
マニュアルによると、Log ParserではIISログだけでなく、様々なソースからデータを取得できるようです。
(例 Windows イベントログ、Windows レジストリ他)
解析対象のソースに合わせたLog Typeを選択します。

クエリを実行

クエリを実行(左から2番目の「!」ボタンをクリック)します。
しばらく待つと、クエリ実行結果が表示されます。

lps_image04

クエリ実行結果がセルに表示されています。
Excelで見たい場合は、左上をクリックして全選択状態にしてからコピーしてExcelシートに貼り付ければ、レイアウトが崩れることなく見ることができます。

クエリを編集

クエリは自由に作成、編集できます。
日付範囲や時間を絞ったり、特定のIPアドレスからのリクエストに限定して表示したりすることができます。

例:特定の日の、時間帯別リクエスト数を知りたい

マニュアルによると、クエリには一般的な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_image06

バッチジョブとマルチスレッド

LPSでは、クエリの並行実行、定期実行が可能です。例えば、
日々決まった時間に特定のエラーが発生したログをCSVファイルに出力する
といった使い方ができます。
また、1つのクエリに多大な時間がかかっている場合に処理中のタブ画面が固まったりして他の解析がができなくなるのは困りますが、LPSではいくつものクエリを同時実行可能です。

まとめ

膨大な情報からノイズを取り除き必要な情報を見やすい形式にすることは、不具合の早期解決に必須ともいえます。
Log Parser、Log Parser Studio共に日本語のしっかりしたマニュアルがあるので、独学でも使いこなせそうです。

今回は以上です。ありがとうございました。

LINEで送る
Pocket