IIS は、Web サイトを構築、運用するための拡張可能な Web サーバーです。 IIS の収集したアクセスログから、ページビュー、ユニークビジター、クライアント IP アドレス、不正リクエスト、送受信トラフィックといった情報を取得し、Web サイトへのアクセスをモニタリングおよび分析できます。

始める前に

  • Log Service を有効化します。
  • プロジェクトと Logstore を作成します。プロジェクトと Logstore の作成方法については、「準備」をご参照ください。

このタスクについて

ログフォーマット

ご要件に応じた構成にできるよう、ログフォーマットには W3C 拡張フォーマットを推奨します。 IIS Manager で、 フィールドを選択トグルをクリックします。 標準フィールドリストから sc-bytescs-bytesを選択します。
図 1. フィールドの選択
次のような設定になります。
logExtFileFlags="Date, Time, ClientIP, UserName, SiteName, ComputerName, ServerIP, Method, UriStem, UriQuery, HttpStatus, Win32Status, BytesSent, BytesRecv, TimeTaken, ServerPort, UserAgent, Cookie, Referer, ProtocolVersion, Host, HttpSubStatus"
  • フィールドの接頭辞
    接頭辞 説明
    s- サーバー操作
    c- クライアント操作
    cs- クライアントのサーバー操作
    sc- サーバーのクライアント操作
  • フィールド説明
    フィールド 説明
    date 操作日付
    time 操作時刻
    s-sitename クライアントの訪問したサイトのインターネットサービス名とインスタンス番号
    s-computername ログを生成するサーバーの名前
    s-ip ログを生成するサーバーの IP アドレス
    cs-method GET と POST といった HTTP リクエスト方式
    cs-uri-stem 操作対象
    cs-uri-query URI (HTTP リクエストステートメントの疑問符 (?) 以降)
    s-port クライアントの接続したサーバーのポート番号
    cs-username サーバーにアクセスした認証済みユーザーの名前 (認証済みユーザーはドメイン名\ユーザー名、匿名ユーザーはハイフン (-) を表記)
    c-ip リクエストの送信クライアントの IP アドレス
    cs-version HTTP 1.0 や HTTP 1.1 といったプロトコルのバージョン
    user-agent クライアントの使用ブラウザー
    Cookie 送信/受信された Cookie の内容 (Cookie がない場合は、ハイフン (-) を記述)
    referer 参照元サイト (ユーザーが最後に訪問したサイト)
    cs-host ホストのヘッダー名
    sc-status HTTP や FTPのステータスコード
    sc-substatus HTTP サブプロトコルのステータスコード
    sc-win32-status Windows のステータスコード
    sc-bytes サーバーの送信 Byte
    cs-bytes サーバーの受信 Byte
    time-taken 操作の所要時間 (ミリ秒単位)

手順

  1. データインポートウィザードを開始します。
    1. Log Service コンソールのホームページでプロジェクト名をクリックし、Logsore リストのページに移動します。
    2. プロジェクトのデータインポートウィザード列のアイコンをクリックします。
  2. 手順 1 のデータソース選択には、サードパーティー製のソフトウェアIIS ACCESS LOGを選択します。
  3. データソースを設定します。
    1. 構成名ログパスを入力します。
      ログパスは IIS Manager で確認できます。
  4. ログフォーマットを選択します。
    IIS アクセスログフォーマットを選択します。
    • IIS: Microsoft IIS ログファイルフォーマット
    • NCSA: NCSA 共通ログファイルフォーマット
    • W3C: W3C 拡張ログファイルフォーマット
  5. IIS ログフォーマット設定フィールドに入力します。
    • Microsoft IIS および NCSA 共通フォーマットの場合は、固定構成があります。
    • IISアクセスログをW3C フォーマットに設定する手順は、次のとおりです。
    1. IIS 設定ファイルを開きます。
      • IIS5 設定ファイルのデフォルトパス: C:\WINNT\system32\inetsrv\MetaBase.bin
      • IIS6 設定ファイルのデフォルトパス: C:\WINDOWS\system32\inetsrv\MetaBase.xml
      • IIS7 設定ファイルのデフォルトパス: C:\Windows\System32\inetsrv\config\applicationHost.config
      図 2. 設定ファイルの表示
    2. 図3のように、logFile logExtFileFlagsフィールドの引用符で囲まれたテキストをコピーします。
    3. コピーしたテキストをコンソールのIIS ログフォーマット設定フィールドに貼り付けます。
      図 3. データソースの設定
  6. キー名を確認します。
    IIS ログサービスにより、キー名が自動的に抽出されます。
    図 4. IIS キー名
  7. 詳細オプション (オプション)
    パラメーター 説明
    生ログのアップロード 生ログをアップロードするかどうかを指定します。 このスイッチをオンにすると、未処理のログコンテンツが _raw__ フィールドとしてアップロードされ、解析されたログコンテンツが表示されます。
    トピック生成モード
    • Null - トピックを生成しない:トピックが null 文字列に設定されるように指定するデフォルト値。 トピックを入力せずにログを照会できます。
    • マシン グループ トピック属性:異なるフロントエンド サーバーで生成されたログデータと区別するために、マシン グループに基づいてトピックを設定します。
    • ファイル パス正規表現カスタム正規表現を使用して、ログパスの一部をトピックとして抽出します。 ユーザーとインスタンスによって生成されたログデータを区別するために使用されるモードです。
    カスタム正規表現 トピック生成モードを [ファイルパスの正規表現] に設定する場合、カスタム正規表現を入力する必要があります。
    ログファイルエンコーディング
    • utf8:UTF-8 エンコーディングを指定します。
    • gbk:GBK エンコーディングを指定します。
    監視ディレクトリの最大深度 ログソースからログを収集するときの監視ディレクトリの最大深度つまり、管理対象のディレクトリのレベルの最大数 有効値: [0, 1000] 0 は、現在のディレクトリのみが監視されていることを示します。
    Timeout 指定した期間内にファイルの更新がないときに、ログファイルがタイムアウトしたとシステムが考慮するかどうかを指定します。 Timeout は以下のように設定できます。
    • タイムアウトにならない:すべてのログファイルはタイムアウトなしで監視が継続されるように指定します。
    • 30 分タイムアウト:ログファイルが 30 分以内に更新されない場合、ログファイルがタイムアウトしたと見なし、ファイルの監視を停止するように指定します。
    フィルター設定 収集前にログが 完全に満たす 必要のあるフィルター条件
    例:
    • 条件を満たすログの収集Key:level Regex:WARNING|ERROR は、レベルが「WARNING」または「ERROR」のログのみを収集することを表します。
    • 条件に適合しないログをフィルターします
      • Key:level Regex:^(?!.*(INFO|DEBUG)).* は、レベルが「INFO」または「DEBUG」のログが収集されていないことを表します。
      • Set a condition Key:url Regex:.*^(?!.*(healthcheck)).* は、url に heartcheck のあるログは収集されないことを表します。 たとえば、key が url、value が /inner/healthcheck/jiankong.html のログは収集されません。
    その他の例については、「 regex-exclude-word」 と 「 regex-exclude-pattern」をご参照ください。
    設定情報を確認して、 次へをクリックします。
  8. マシングループに設定を適用します。
    設定を適用するマシングループを選択します。ページの右下の マシングループに適用をクリックします。

    マシングループをまだ作成していなければ、マシングループの作成をクリックして作成します。

  9. 検索、分析、可視化を設定します (オプション)。
    マシングループの「ハートビート」が正常ステータスであれば、プレビューをクリックしてログデータを表示できます。
    図 5. ログのプレビュー

    作業中のページのインデックス属性を確認して、収集したログデータを表示および分析します。 開くをクリックしてキー/値のインデックス属性を表示します。

    キー名のマッピングを構成します。 キー名は、プレビューされたデータに基づいて生成され、デフォルトのキー名に対応しています。

    図 6. キー/値インデックス属性
    デフォルトで LogstoreName-iis-dashboardダッシュボードが用意されています。 上記を設定したら、ダッシュボードにリアルタイムデータを表示できます (クライアント IP 分布、HTTP ステータスの割合など)。
    図 7. ダッシュボード
    • クライアント IP 分布を取得するステートメントは、次のとおりです。
      | select ip_to_geo("c-ip") as country, count(1) as c group by ip_to_geo("c-ip") limit 100
      図 8. クライアント IP 分布
    • ページビューおよびユニークビジターを確認するステートメントは、次のとおりです。
      *| select approx_distinct("c-ip") as uv ,count(1) as pv , date_format(date_trunc('hour', __time__), '%m-%d %H:%i') as time group by date_format(date_trunc('hour', __time__), '%m-%d %H:%i') order by time limit 1000
      図 9. ページビューおよびユニークビジター
    • HTTPステータスの割合を取得するステートメントは、次のとおりです。
      *| select count(1) as pv ,"sc-status" group by "sc-status"
      図 10. HTTP ステータスの割合
    • 送受信トラフィックを表示するステートメントは、次のとおりです。
      *| select sum("sc-bytes") as net_out, sum("cs-bytes") as net_in ,date_format(date_trunc('hour', time), '%m-%d %H:%i') as time group by date_format(date_trunc('hour', time), '%m-%d %H:%i') order by time limit 10000
      図 11. 送受信トラフィック
    • HTTP リクエストメソッドの割合を取得するステートメントは、次のとおりです。
      *| select count(1) as pv ,"cs-method" group by "cs-method"
      図 12. HTTP リクエストメソッドの割合
    • 使用ブラウザー比率を取得するステートメントは、次のとおりです。
      *| select count(1) as pv, case when "user-agent" like '%Chrome%' then 'Chrome' when "user-agent" like '%Firefox%' then 'Firefox' when "user-agent" like '%Safari%' then 'Safari' else 'unKnown' end as "user-agent" group by case when "user-agent" like '%Chrome%' then 'Chrome' when "user-agent" like '%Firefox%' then 'Firefox' when "user-agent" like '%Safari%' then 'Safari' else 'unKnown' end order by pv desc limit 10
      図 13. 使用ブラウザー比率
    • 訪問数の多い URI トップ 10を表示するステートメントは、次のとおりです。
      *| select count(1) as pv, split_part("cs-uri-stem",'?',1) as path group by split_part("cs-uri-stem",'?',1) order by pv desc limit 10
      図 14. 訪問数の多い URI トップ 10