メインコンテンツまでスキップ
Sumo Logic Japanese

IIS 7 アプリケーションのログの収集

この手順では、Windows サーバで Microsoft インターネット インフォメーション サービス (IIS) のログを有効にして、ログを Sumo Logic に取り込む方法について説明します。

ログ タイプ

IIS 7 のログ (IIS 7.5 ログを使用) は、ローカル ファイルとして生成され、デフォルトで C:\inetpub\Logs\LogFiles\W3SVC1 ディレクトリに書き込まれます。

Sumo Logic の FER (Field Extraction Rules) と IIS 7 アプリケーションでは、次のフィールドが含まれる W3C 形式 (https://msdn.microsoft.com/en-us/library/ms525807(v=vs.90).aspx) を想定しています。

  • Date
  • Time
  • ServerIP
  • メソッド
  • UriStem
  • UriQuery
  • Server Port
  • UserName
  • ClientIP
  • UserAgent
  • Referer
  • Protocol Status
  • Protocol Substatus
  • Win32Status
  • TimeTaken

IIS 7 のログ (IIS 7.5 ログを使用) 形式の詳細については、https://www.iis.net/learn/manage/provisioning-and-managing-iis/configure-logging-in-iis を参照してください。

前提条件

IIS 7 イベントのログの準備をするには、以下の 2 つの作業を実行します。

IIS サーバでログを有効化するには、次の手順を実行します。

  1. サーバ マネージャ コンソールを開きます。
  2. [役割] を選択します。
  3. [Web サーバ (IIS)] を選択します。
  4. IIS ログを収集するホストを選択します。
  5. 右側のペインで [ログ記録] を選択します。
  6. [ログ ファイルの作成単位] オプションで [サイト] を選択します。
  7. ログするフィールドを選択できるように、[ログ ファイル] の [形式] で [W3C] を選択します。
  8. [Select Fields (フィールドを選択)] をクリックして、以下のフィールドのチェックボックスをオンにします。 
  • Date
  • Time
  • ServerIP
  • メソッド
  • UriStem
  • UriQuery
  • Server Port
  • UserName
  • ClientIP
  • UserAgent
  • Referer
  • Protocol Status
  • Protocol Substatus
  • Win32Status
  • TimeTaken
  1. [OK] をクリックして、設定を保存します。

ログ ファイルが作成されていることを確認するには、次の手順を実行します。

  1. コマンドライン ウィンドウを開き、ディレクトリを C:\inetpub\Logs\LogFiles に変更します。これは、これらのファイルを収集する Source の設定時に入力するパスになります。
  2. \W3SVC1 ディレクトリで、.log という拡張子のファイルが 1 つ以上表示されます。ファイルが存在していれば、そのファイルを収集できます。

ステップ 1: Collector の設定

Installed Collector (Windows) を設定します。Collector は、ログがホストされるシステムにインストールすることをお勧めします。

ステップ 2: Source の設定

IIS 7 からログを収集するには、Installed Collector とローカル ファイル Source を使用します。リモート ファイル Source を設定することもできますが、設定はさらに複雑になります。Sumo Logic では、可能であればローカル ファイル Source を使用することをお勧めします。

  1. ローカル ファイル Source を設定します。
  2. ローカル ファイル Source フィールドを次のように設定します。
    1. Name (名前): 必須 (「IIS」など)
    2. Description (説明): (省略可能)
    3. File Path (ファイル パス) (必須): C:\inetpub\Logs\LogFiles\W3SVC1\*.log
    4. Collection start time (収集開始時間): ログ履歴の収集をどこまで遡って開始するかを選択します。たとえば、最終変更日が過去 7 日間に含まれるログを収集するには、7 日前を選択します。
    5. Source Host (Source ホスト): デフォルトでは、オペレーティング システムが割り当てたホスト名が使用されますが、別のホスト名を入力することもできます。
    6. Source Category (必須): たとえば、「IIS_prod」です。[Source Category] メタデータ フィールドは、Source を整理してラベル付けするための基本的な構成要素です。詳細については、「ベスト プラクティス」を参照してください。)
  3. [Advanced (詳細)] セクションを設定します。
    1. Timestamp Parsing Settings (タイムスタンプ parse 設定): 設定がログ ファイルのタイムゾーンと一致していることを確認します。
    2. Enable Timestamp Parsing (タイムスタンプ parse の有効化): [Extract timestamp information from log file entries (ログ ファイル エントリからタイムスタンプ情報を抽出する)] を選択します。
    3. Time Zone (タイム ゾーン): [Use time zone from log file (ログ ファイルのタイム ゾーンを使用)] オプションを選択します。[If none is present use (どちらも存在しない場合)]: タイムゾーンを [UTC] に設定します。
    4. Timestamp Format (タイムスタンプ形式): [Automatically detect the format (形式を自動検出)] オプションを選択します。
    5. Encoding (エンコーディング): デフォルトは UTF-8 ですが、IIS ログのエンコードが異なる場合は、メニューから他のエンコーディング形式を選択できます。
    6. Enable Multiline Processing (複数行の処理の有効化)。複数行にわたるメッセージを検出する場合は、このオプションを無効にします。IIS ログは 1 行のログ ファイルであるため、このオプションを無効にすると、収集のパフォーマンスが向上し、メッセージが正確に Sumo Logic に送信されます。
  4. [Save (保存)] をクリックします。

数分後、新しい Source が Collector に伝達され、Sumo Logic サービスへの IIS ログ ファイルの送信が開始されます。

FER (Field Extraction Rules)

  • Name (名前): Microsoft IIS ログ
  • Scope (範囲): 上記で設定した Source Category (「IIS_prod」など) を使用
  • Parse Expression (parse 式):
parse regex "^[^#].*?(?<s_ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) (?<cs_method>\S+?)
(?<cs_uri_stem>\S+?) (?<cs_uri_query>\S+?) (?<s_port>\d+?) (?<cs_username>\S+?)
(?<c_ip>.+?) (?<cs_User_Agent>\S+?) (?<cs_Referer>\S+?) (?<sc_status>\d+?)
(?<sc_substatus>\d+?) (?<sc_win32_status>\d+?) (?<time_taken>\d+?)$"

ログ メッセージのサンプル

2016-11-17 22:34:34 10.0.0.167 GET /favicon.ico - 80 - 12.177.21.34 Mozilla/5.0+(Macintosh;+Intel+Mac+OS+X+10_7_5)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/27.0.1453.110+Safari/537.36 404 0 2 1405 547 78
2016-11-17 22:34:34 10.0.0.98 GET /Trade/Images/VS-ConfigWeb.png - 80 - 156.74.250.7 Mozilla/5.0+(Windows+NT+6.1;+WOW64;+rv:14.0)+Gecko/20100101+Firefox/14.0.1 304 0 0 209 748 7

クエリのサンプル

以下のクエリ例は、IIS 7 アプリケーションから引用されています。 

経時的なアプリケーション別のリクエスト

次のクエリは、[IIS 7 Traffic Insights - App Requests (IIS 7 トラフィック インサイト - アプリケーション リクエスト)] ダッシュボードの [Requests by App Over Time (経時的なアプリケーション別のリクエスト)] パネルから引用されています。

_sourceCategory=IIS* 
| parse regex "\d+-\d+-\d+ \d+:\d+:\d+ (?<server_ip>\S+) (?<method>\S+) (?<cs_uri_stem>/\S+?) " 
| parse regex field=cs_uri_stem "/(?<app>[^\./]+)/" nodrop
| if (isNull(app) || app="","Others",app) as app
| timeslice 1m 
| count by app,_timeslice  
| transpose row _timeslice column app
オペレーティング システム (OS) とブラウザ

次のクエリは、[IIS 7 Traffic Insights - Content and Client Platform (IIS 7 トラフィック インサイト - コンテンツおよびクライアント プラットフォーム)] ダッシュボードの [オペレーティング システム (OS) とブラウザ] パネルから引用されています。

_sourceCategory=IIS* 
| parse regex "\d+-\d+-\d+ \d+:\d+:\d+ (?<server_ip>\S+) (?<method>\S+) (?<cs_uri_stem>/\S+?) \S+ \d+ (?<user>\S+) (?<client_ip>[\.\d]+) (?<agent>\S+) " 
| if ((agent matches "*Windows NT*") or (agent matches "*Windows+NT*") or (agent matches "*Windows *") or (agent matches "*Win32*") or (agent matches "*Win64*"), "Windows", "Other") as OS |
if (agent matches "*Macintosh*","MacOS",OS) as OS |
if ((agent matches "*Windows Phone*") or (agent matches "*Windows+Phone*"),"Windows Phone",OS) as OS |
if (agent matches "*Linux*","Linux",OS) as OS |
if (agent matches "*iPad*","iPad",OS) as OS |
if (agent matches "*iPhone*","iPhone",OS) as OS |
if (agent matches "*Android*","Android",OS) as OS |
if (agent matches "*Darwin*","Darwin",OS) as OS |
if (agent matches "*CrOS*","Google Chrome",OS) as OS |
if (agent matches "*MSIE*","Internet Explorer","Other") as Browser |
if (agent matches "Internet Explorer","Internet Explorer", Browser) as Browser |
if (agent matches "*Trident*","Internet Explorer", Browser) as Browser |
if (agent matches "*Firefox*","Firefox",Browser) as Browser |
if (agent matches "*Safari*","Safari", Browser) as Browser | 
if (agent matches "*Chrome*","Chrome", Browser) as Browser |
if (agent matches "Opera*","Opera", Browser) as Browser | 
if (agent matches "Dolphin*","Dolphin", Browser) as Browser
| count(agent) by OS,Browser 
| transpose row os column browser as *