Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Log Parserでログを統合的に扱い運用保守に役立てる(実践編)

IISのログの整形/アプリケーションログの自動監視を行う

  • LINEで送る
  • このエントリーをはてなブックマークに追加

本稿では、そのままでは見にくいログファイルから見栄えの良いグラフやHTMLを生成する方法について紹介します。また、危険度の高いエラーが出力されたときに自動的にメールを送信する方法についても紹介します。

目次

はじめに

 Webサーバやアプリケーションから重要なログが出力されていたとしても、そのログの情報を見落としてしまうことがあります。そこで、本稿では、そのままでは見にくいログファイルから見栄えの良いグラフやHTMLを生成したり、危険度の高いエラーが出力されたときに自動でメールを送信する方法について紹介します。

 本稿は、別稿『Log Parserでログを統合的に扱い運用保守に役立てる(基本編)』の続編となっています。Log Parserに関する概要およびインストール方法については、別稿の内容を参照してください。

対象読者

 Windows、Windows Serverで開発や運用を行っている方を対象としています。

必要な環境

 本稿の内容ならびにダウンロードファイルのクエリを実行するためには、Log Parserをインストールする必要があります。

ダウンロードファイルの概要

 ダウンロードファイルには、Log Parserを実行するバッチファイルと、そのクエリを動かすためのサンプルログファイルが含まれています。本稿で解説している例を動かしたい場合は、ダウンロードファイルを解凍し、Log Parserをインストールしたフォルダ(既定では「C:\Program Files\Log Parser 2.2」)に配置してください。

例3:IISのアクセスログからチャートを生成

 基本編の例1と例2に引き続き、応用としてIISで運用しているWebサイトの分析を行い、チャート(グラフ)を生成してみましょう。

IISのログ設定

 まず、最初にIISのログの説明をしておきます。IISでログを出力するには管理ツールである[インターネット インフォメーション サービス]-[既定のWebサイトのプロパティ]-[Webサイト]タグで設定を行います。

 

 切替タイミングと出力先は、[ログ収集を有効にする]横の[プロパティ]ウィンドウで設定します。

 

 さらに出力する項目は、[拡張プロパティ]タグで設定します。

 

 このW3C拡張ログファイル形式で出力されるログは次のようなイメージになります。

W3C拡張ログファイル形式のログ
#Software: Microsoft Internet Information Services 5.1
#Version: 1.0
#Fields: time c-ip cs-method cs-uri-stem sc-status
18:06:05 127.0.0.1 GET /iishelp/Default.htm 200
18:06:12 127.0.0.1 GET /iishelp/iis/misc/default.asp 200
18:06:12 127.0.0.1 GET /iishelp/iis/misc/contents.asp 200
18:06:12 127.0.0.1 GET /iishelp/iis/misc/navbar.asp 200
18:06:12 127.0.0.1 GET /iishelp/iis/htm/core/iiwltop.htm 200
                 (以下略)

クエリの実行

 ここでは、IISのログファイルからアクセス数の多いページをチャートとして生成してみます。

IISのログからチャートを生成
LogParser -i:IISW3C -o:CHART "SELECT TOP 10 cs-uri-stem AS uri,
 COUNT(*) AS view INTO PageView.gif FROM ex060221.log
 GROUP BY uri ORDER BY view DESC" -chartType:Column3D -groupSize:1024x768

 このクエリを実行すると、INTOで指定した画像「PageView.gif」が生成されます。

 

 なお、チャートを生成するためには「Office WEBコンポーネント」が必要になります。このコンポーネントは、通常、Office 2000(XP/2003)とともにインストールされますが、Webサイトからダウンロードすることも可能です。

IISのログファイルのチェック(IISW3C)

 IISから「W3C拡張ログファイル形式」のログを出力しているため、入力形式に「-i:IISW3C」を指定します。IISW3C形式の場合、主に次の列名を指定することができます。

W3CのIISログ入力形式(-i:IISW3C)の主な列名
名前 説明
LogFilename STRING ログファイルのフルパス
LogRow INTEGER 行番号
date TIMESTAMP 日付(世界協定時刻(UTC))
time TIMESTAMP 時刻(世界協定時刻(UTC))
c-ip STRING クライアントのIPアドレス
cs-username STRING ユーザーの名前(匿名ユーザーの場合はNULL)
s-sitename STRING IISサービス名(サイトインスタンス番号)
s-computername STRING サーバーの名前
s-ip STRING サーバーのIPアドレス
s-port INTEGER サーバーのポート番号
cs-method STRING HTTP命令(またはFTP操作)
cs-uri-stem STRING HTTPのURI(またはFTP操作の対象)
cs-uri-query STRING HTTPのURIクエリ(クエリがない場合はNULL)
sc-status INTEGER HTTP(またはFTP)のステータスコード
sc-win32-status INTEGER ステータスコードに関連付けられたWindowsのステータスコード
sc-bytes INTEGER サーバーから送信した応答バイト数
cs-bytes INTEGER クライアントから送信した要求バイト数
time-taken INTEGER サーバーが要求を受信してから最終応答するまでの経過時間(ミリ秒)
cs-version STRING クライアント要求のHTTPバージョン
cs-host STRING クライアント要求のホストヘッダ
cs(User-Agent) STRING クライアント要求のユーザーエージェントヘッダ
cs(Cookie) STRING クライアント要求のCookieヘッダ
cs(Referer) STRING クライアント要求の参照元ヘッダ

 IISの拡張プロパティでログ出力するように設定した列名を選択してください。

列の別名

 なお、クエリでは列に別名をつけることができます。ここでは、「cs-uri-stem」に「uri」という別名を、「COUNT(*)」に「view」という別名を指定しています。別名をつけるには「SELECT cs-uri-stem AS uri, COUNT(*) AS view ~」というように「AS」で指定します。

GROUP BYと集計関数

 特定の列で集計処理を行いたい場合には「GROUP BY」を利用します。ここでは、「cs-uri-stem」を集計して、ページ毎のビューを計算しています。なお、COUNT(*)のように、集計した項目を計算して一つの値を返す関数を「集計関数」と呼びます。

 Log Parserでは、COUNT以外にも、次のような集計関数が用意されています。

Log Parserの集計関数一覧
集合関数名 説明
COUNT 項目数
SUM 合計
AVG 平均
MAX 最大値
MIN 最小値
PROPCOUNT COUNTの結果の比率
PROPSUM SUMの結果の比率

チャート出力形式(-o:CHART)の設定

 チャートを生成する「-o:CHART」出力形式では、チャート化する列の指定方法に特徴があります。まず最初の列に「表示する名前」を設定します。今回の場合は「uri(ページ名)」を指定しています。次に、2番目の列に「数」を設定します。今回の場合は「view(アクセス数)」を指定しています。

チャート出力形式(-o:CHART)のパラメータ

 さらに、チャート専用のパラメータを2つ設定しています。ひとつはチャートの形を表す「-chartType:」で、ここでは立体的な柱型の「Column3D」を設定しています。もうひとつは、サイズを表す「-groupSize:」で「1024x768」を設定しています。

 この設定をすることで、IISのログファイルから、直感的に分かりやすいチャートを生成することができます。なお、IISのログ解析に役立つクエリについては、eXperts ConnectionのLogParserフォーラムに情報がありますので参考にすると良いでしょう。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 青木 淳夫 (株式会社ネクストスケープ)(アオキ アツオ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:Log Parserでログを統合的に扱い運用保守に役立てる
All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5