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 サーバでログを有効化するには、次の手順を実行します。
- サーバ マネージャ コンソールを開きます。
- [役割] を選択します。
- [Web サーバ (IIS)] を選択します。
- IIS ログを収集するホストを選択します。
- 右側のペインで [ログ記録] を選択します。
- [ログ ファイルの作成単位] オプションで [サイト] を選択します。
- ログするフィールドを選択できるように、[ログ ファイル] の [形式] で [W3C] を選択します。
- [Select Fields (フィールドを選択)] をクリックして、以下のフィールドのチェックボックスをオンにします。
- Date
- Time
- ServerIP
- メソッド
- UriStem
- UriQuery
- Server Port
- UserName
- ClientIP
- UserAgent
- Referer
- Protocol Status
- Protocol Substatus
- Win32Status
- TimeTaken
- [OK] をクリックして、設定を保存します。
ログ ファイルが作成されていることを確認するには、次の手順を実行します。
- コマンドライン ウィンドウを開き、ディレクトリを
C:\inetpub\Logs\LogFiles
に変更します。これは、これらのファイルを収集する Source の設定時に入力するパスになります。 \W3SVC1
ディレクトリで、.log
という拡張子のファイルが 1 つ以上表示されます。ファイルが存在していれば、そのファイルを収集できます。
ステップ 1: Collector の設定
Installed Collector (Windows) を設定します。Collector は、ログがホストされるシステムにインストールすることをお勧めします。
ステップ 2: Source の設定
IIS 7 からログを収集するには、Installed Collector とローカル ファイル Source を使用します。リモート ファイル Source を設定することもできますが、設定はさらに複雑になります。Sumo Logic では、可能であればローカル ファイル Source を使用することをお勧めします。
- ローカル ファイル Source を設定します。
- ローカル ファイル Source フィールドを次のように設定します。
- Name (名前): 必須 (「IIS」など)
- Description (説明): (省略可能)
- File Path (ファイル パス) (必須):
C:\inetpub\Logs\LogFiles\W3SVC1\*.log
- Collection start time (収集開始時間): ログ履歴の収集をどこまで遡って開始するかを選択します。たとえば、最終変更日が過去 7 日間に含まれるログを収集するには、7 日前を選択します。
- Source Host (Source ホスト): デフォルトでは、オペレーティング システムが割り当てたホスト名が使用されますが、別のホスト名を入力することもできます。
- Source Category (必須): たとえば、「IIS_prod」です。[Source Category] メタデータ フィールドは、Source を整理してラベル付けするための基本的な構成要素です。詳細については、「ベスト プラクティス」を参照してください。)
- [Advanced (詳細)] セクションを設定します。
- Timestamp Parsing Settings (タイムスタンプ parse 設定): 設定がログ ファイルのタイムゾーンと一致していることを確認します。
- Enable Timestamp Parsing (タイムスタンプ parse の有効化): [Extract timestamp information from log file entries (ログ ファイル エントリからタイムスタンプ情報を抽出する)] を選択します。
- Time Zone (タイム ゾーン): [Use time zone from log file (ログ ファイルのタイム ゾーンを使用)] オプションを選択します。[If none is present use (どちらも存在しない場合)]: タイムゾーンを [UTC] に設定します。
- Timestamp Format (タイムスタンプ形式): [Automatically detect the format (形式を自動検出)] オプションを選択します。
- Encoding (エンコーディング): デフォルトは UTF-8 ですが、IIS ログのエンコードが異なる場合は、メニューから他のエンコーディング形式を選択できます。
- Enable Multiline Processing (複数行の処理の有効化)。複数行にわたるメッセージを検出する場合は、このオプションを無効にします。IIS ログは 1 行のログ ファイルであるため、このオプションを無効にすると、収集のパフォーマンスが向上し、メッセージが正確に Sumo Logic に送信されます。
- [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 *