Log Service では、ワンストップで Apache ログ収集、データインポートウィザードでインデックス作成を行うことができます。デフォルトのダッシュボード、またはクエリ分析ステートメントで、Web サイトアクセス情報をリアルタイム分析できます。

始める前に

  • Log Service の有効化
  • プロジェクトおよび Logstore の作成

Apache は Web サイトの構築に Web 管理者の多くが利用するサーバーです。Web 管理者は、Web アクセス状況を把握するために、Apache アクセスログを解析して PV、UV、IP アドレスのリージョン分布、クライアント情報、参照元サイトといった情報を取得します。

Log Service では、ワンストップで Apache ログ収集、データインポートウィザードでインデックス作成を行うことができます。また、デフォルトで Apache ログ用のアクセス解析ダッシュボードが自動生成されます。

分析シナリオに合わせて、Apache ログの設定を次のようにすることを推奨します。
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %f %k %p %q %R %T %I %O" customized
ログコンテンツに、%t%{User-Agent}i%{Referer}iといったスペースを含むフィールドがないかどうかを確認します。 スペースを含むフィールドがある場合は、\”で囲むと問題なくログ分析されます。

各フィールドの意味は次のとおりです。

フィールド フィールド名 説明
%h remote_addr クライアント IP アドレス
%l remote_ident identd のクライアント側のログ名。
%u remote_user クライアントユーザー名
%t time_local サーバーの時間
%r request メソッド名、IP アドレス、および http プロトコルを含むリクエストコンテンツ
%>s status 応答 http ステータスコード
%b response_size_bytes 応答のサイズ
%{Rererer}i http\u0008_referer リファラー (参照元)
%{User-Agent}i http_user_agent クライアント情報
%D request_time_msec リクエスト時間 (ミリ秒単位)
%f filename リクエストファイル名 (パスを含む)
%k keep_alive keep-alive リクエスト数
%p remote_port サーバーのポート番号
%q request_query クエリ文字列 (クエリ文字列がない場合は空文字列)
%R response_handler サーバー応答のハンドラー
%T request_time_sec リクエスト時間 (秒単位)
%I bytes_received サーバーの受信 Byte 数 (要 mod_logio モジュールの有効化)
%O bytes_sent サーバの送信した Byte 数 (要 mod_logio モジュールの有効化)

手順

  1. Log Service コンソールにログインし、プロジェクト名をクリックします。
  2. Logstore リストページで該当 Logstore のデータインポートウィザードアイコンをクリックします。
  3. データソースにAPACHE アクセスログを選択します。
  4. データソースを設定します。
    1. 設定の名前を入力します。
    2. ログパスを入力します。
    3. ログフォーマットを選択します。
      ログフォーマットには、Apache ログ設定ファイルに指定されているフォーマットを選択します。容易にログデータを照会/分析するには、Apache ログフォーマットのカスタム化を推奨します。
    4. Apache のログフォーマット設定を入力します。
      ログフォーマット共通 または 混合 を指定した場合は、設定が自動入力されます。カスタムログフォーマットを指定した場合は、設定を入力します。上記 Log Service の設定を入力されることを推奨します。

    5. APACHE キー名を確認します。
      Log Service は APACHE キー名を自動的に解決します。キー名は Web ページで確認できます。
      %r より、request_methodrequest_uriおよびrequest_protocolの 3 つのキーが抽出されます。


    6. オプション: オプション: 詳細オプションを設定し、[次へ] をクリックします。
      設定項目 詳細説明
      ローカルキャッシュ ローカルキャッシュの有効化/無効化。有効化すると、Log Service が利用不可となった場合、ログはマシンのローカルディレクトリにキャッシュされ、Log Service 回復したら送信されます。 デフォルトでは、最大 1GB がキャッシュされます。
      オリジナルログのアップロード オリジナルログのアップロードの有効化/無効化。有効化すると、デフォルトでオリジナルログに新規フィールドが追加されます。
      トピック生成モード
      • NULL - Topic を生成しない: 初期値。トピックには空文字列が設定されています。ログを照会する際にトピックの入力は必要ありません。
      • マシングループトピック属性: フロントエンドサーバーごとにログデータを区別する場合に適用します。
      • ファイルパスの正規表現: 本オプションを選択する場合は、カスタム正規表現の設定が必須です。正規表現パスからトピックが抽出されます。 ユーザーやインスタンスごとにログを分ける場合に使用します。
      カスタム正規表現 トピック生成モードにファイルパスの正規表現を選択した場合、正規表現を入力します。
      ログファイルのエンコード形式
      • 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 に「healthcheck」を含むログは収集されません。たとえば、key が「url」で、値が/inner/healthcheck/jiankong.htmlのログは収集されません。
      その他の例については、「regex-exclude-word」、「regex-exclude-pattern」をご参照ください。
  5. マシングループに設定を適用します。
    設定を適用するマシングループを選択します。右下隅のマシングループへ適用をクリックします。

    マシングループをまだ作成していない場合は、マシングループの作成をクリックしてマシングループを作成します。

  6. (オプション) クエリ、分析及び可視化を設定します。
    ログのマシングループのハートビートが正常ステータスであれば、プリビューボタンをクリックして収集データを表示します。

    Log Service の収集するログデータをリアルタイムに照会/分析する必要がある場合は、インデックス属性の設定を確認します。展開をクリックして、キー値のインデックス属性を表示します。

    デフォルトでLogstoreName-apache-dashboard ダッシュボードが設定されています。設定が完了すると、ダッシュボードページで送信元 IP アドレスのリージョン分布、リクエストステータス比率が動的にリアルタイム表示されます。

    • 送信元 IP アドレス分布 (ip_distribution): 送信元 IP アドレスのリージョン分布が表示されます。ステートメントは次のとおりです。
      * | select ip_to_province(remote_addr) as address,
                  count(1) as c
                  group by address limit 100


    • リクエストステータス比率 (http_status_percentage): 前日の各 HTTP ステータスコードの比率が算出されます。ステートメントは次のとおりです。
      status>0 | select status,
                      count(1) as pv 
                      group by status


    • リクエストメソッド比率 (http_method_percentage): 前日のリクエストメソッドの比率が算出されます。ステートメントは次のとおりです。
      * | select request_method,
                  count(1) as pv 
                  group by request_method


    • PV / UV 統計 (pv_uv): 前日の PV 数と UV 数が算出されます。ステートメントは次のとおりです。
      * | select date_format(date_trunc('hour', __time__), '%m-%d %H:%i')  as time,
                  count(1) as pv,
                  approx_distinct(remote_addr) as uv
                  group by time
                  order by time
                  limit 1000


    • 受信トラフィック/送信トラフィック (net_in_net_out): 送受信トラフィックが算出されます。ステートメントは次のとおりです。
      * | select date_format(date_trunc('hour', __time__), '%m-%d %H:%i') as time, 
                  sum(bytes_sent) as net_out, 
                  sum(bytes_received) as net_in 
                  group by time 
                  order by time 
                  limit 10000mit 10


    • リクエスト UA の割合 (http_user_agent_percentage): 前日のクライアント使用ブラウザーの割合が算出されます。 ステートメントは次のとおりです。
      * | select  case when http_user_agent like '%Chrome%' then 'Chrome' 
                  when http_user_agent like '%Firefox%' then 'Firefox' 
                  when http_user_agent like '%Safari%' then 'Safari'
                  else 'unKnown' end as http_user_agent,count(1) as pv
                  group by  http_user_agent
                  order by pv desc
                  limit 10


    • リファラートップ 10 (top_10_referer): 前日の 上位 10 リファラーが算出されます。 ステートメントは次のとおりです。
      * | select  http_referer, 
                  count(1) as pv 
                  group by http_referer 
                  order by pv desc limit 10


    • アクセス数トップ 10 のページ(top_page): 前日の PV の多かった上位 10 ページが算出されます。 ステートメントは次のとおりです。
      * | select split_part(request_uri,'?',1) as path, 
                  count(1) as pv  
                  group by path
                  order by pv desc limit 10


    • リクエストの応答待ち時間の多い URI トップ 10 (top_10_latency_request_uri): 前日のリクエストの応答待ち時間が長かった上位 10 URI が算出されます。 ステートメントは次のとおりです。
      * | select request_uri as top_latency_request_uri,
                  request_time_sec 
                  order by request_time_sec desc limit 10 10