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. 詳細オプション (オプション)
    構成項目 詳細
    ローカルキャッシュ ローカルキャッシュを有効にするかどうかを選択します。 この機能を有効にすると、ログサービスが利用できないときにログがマシンのローカルディレクトリにキャッシュされ、サービスの復旧後にログサービスに引き続き送信されます。 デフォルトでは、最大で1GBのログをキャッシュできます。
    オリジナルログのアップロード オリジナルログをアップロードするかどうかを選択します。有効にすると、デフォルトで新しいフィールドが追加され、オリジナルログがアップロードされます。
    トピック生成モード
    • Null - トピックを生成しない:デフォルトオプションであり、トピックをヌル文字列として設定し、トピックを入力せずにログを照会できることを示します。
    • マシングループのトピック属性:異なるフロントエンドサーバーで生成されたログデータを明確に区別するために使用されます。
    • ファイルパスレギュラー:このオプションを選択すると、正規表現を使用してパスからコンテンツをトピックとして抽出するには、カスタム正規表現を入力する必要があります。 ユーザーとインスタンスによって生成されたログデータを区別するために使用されます。 ユーザーとインスタンスによって生成されたログデータを区別するために使用されます。
    カスタム正規表現 トピック生成モードとしてファイルパスレギュラーを選択すると、カスタム正規表現を入力する必要があります。
    ログファイルエンコーディング
    • utf8: UTF-8エンコーディングを使用。
    • gbk: GBKエンコーディングを使用
    最大モニターディレクトリの深さ ログソースからログを収集するときに監視するディレクトリの最大深度を指定します。要するに、最大でモニターできるログレベルを指定します。 範囲は0~1000で、0を指定した場合は、現行ディレクトリレベルのみをモニターすることになります。
    タイムアウト 指定された時間内に更新がない場合、ログファイルはタイムアウトします。 タイムアウトの次の設定を構成できます。
    • タイムアウトにならない:すべてのログファイルを永続的にモニターし、ログファイルがタイムアウトしないように指定します。
    • 30分のタイムアウト:ログファイルが30分以内に更新がないければタイムアウトになり、モニターされなくなります。
    フィルター構成 フィルター条件に完全に準拠したログのみ、収集できます。
    たとえば:
    • 条件に一致するログを収集します:Key: level Regex:WARNING|ERRORは、レベルがWARNINGまたはERRORのログのみを収集することを示します。
    • 条件に適合しないログをフィルターします
      • Key:level Regex:^(?!. *(INFO|DEBUG))、INFOまたはDEBUGレベルのログを収集しないことを示します。
      • Key:url Regex:. *^(?!.*(healthcheck)). *、urlにヘルスチェックを含むログをフィルターすることを示します。 keyがurlでvalueが/inner/healthcheck/jiankong.htmlのログなどは収集されません。
    同様の事例についてはregex-exclude-wordregex-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