すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:Webサイトログの照会と分析

最終更新日:Aug 26, 2024

このトピックでは、Simple Log ServiceコンソールでWebサイトログをクエリおよび分析する方法について説明します。

前提条件

Webサイトアクセスログが収集されます。 Logtail設定が作成されます。 詳細については、「サーバーからのテキストログの収集」をご参照ください。

ステップ1: インデックスの作成

インデックスを作成した後にのみ、ログをクエリおよび分析できます。 Simple Log Serviceは、フルテキストインデックスとフィールドインデックスをサポートしています。 詳細については、「インデックスの作成」をご参照ください。 このトピックでは、Webサイトアクセスログのフィールドインデックスを作成します。

  1. Simple Log Serviceコンソール.

  2. [プロジェクト] セクションで、管理するプロジェクトをクリックします。

    image

  3. 左側のナビゲーションウィンドウで、[ログストレージ] をクリックします。 Logstoreリストで、管理するLogstoreをクリックします。

    image

  4. ページの右上隅で、[インデックス属性] > [属性] を選択します。 インデックス作成機能が有効になっていない場合は、[有効にする] をクリックします。

  5. フィールドインデックスを設定し、[OK] をクリックします。 フィールドインデックスを1つずつ手動で追加するか、[自動インデックス生成] をクリックします。 Simple Log Serviceは、データ収集のプレビュー結果の最初のログに基づいて、フィールドインデックスを自動的に生成します。

    重要
    • インデックス作成機能は、インデックスを設定した後に現在のLogstoreに書き込まれるログデータにのみ適用できます。 履歴データをクエリする場合は、インデックス再作成機能を使用できます。 詳細については、「Logstoreのログの再インデックス」をご参照ください。

    • 分析のためにSELECT SQLステートメントを実行する場合は、インデックスを設定するときに分析するフィールドの分析を有効にする必要があります。

    • インデックスは、Simple Log Serviceの一部の予約フィールドに対して自動的に設定されます。 詳細については、「予約済みフィールド」をご参照ください。

    字段索引

ステップ2: ログの照会と分析

コンソールでログを照会および分析する方法の詳細については、「ログの照会および分析」をご参照ください。 分析ステートメントは、search statement | analytic statement形式の検索ステートメントと一緒に使用する必要があります。 検索文は単独で実行できます。 ただし、分析ステートメントは検索ステートメントと一緒に実行する必要があります。

重要

既定では、クエリ文を実行した後、100行のデータのみが返されます。 LIMIT句を使用して、返される行の数を変更できます。 詳細は、「LIMIT句」をご参照ください。

検索文

  • Chromeを含むログエントリを照会するには、次の検索文を実行します。

    Chrome
  • リクエスト期間が60秒を超えるログエントリを照会するには、次の検索文を実行します。

    request_time > 60
  • リクエスト期間が60秒から120秒のログエントリを照会するには、次の検索文を実行します。

    request_time in [60 120]
  • 成功したGETリクエストを記録するログエントリを照会するには (ステータスコード: 200〜299) 、次の検索文を実行します。

    request_method : GET and status in [200 299]
  • request_uriフィールドの値が /request/path-2であるログエントリを照会するには、次の検索文を実行します。

    request_uri:/request/path-2/file-2

分析ステートメント

  • Webサイトのページビュー (PV) を計算します。

    count関数を使用して、WebサイトのPVを計算します。

    * | SELECT count(*) AS PV

    访问pv

  • ウェブサイトのPVを1分で計算します。

    date_trunc関数を使用して時間を分単位で切り捨て、GROUP by句を使用して分析結果を時間単位でグループ化します。 次に、count関数を使用して1分あたりのPV数を計算し、ORDER BY句を使用して分析結果を時間でソートします。

    * | SELECT count(*) as PV, date_trunc('minute', __time__) as time GROUP BY time ORDER BY time

    网站PV

  • 各リクエストメソッドのリクエスト数を5分で計算します。

    __time__ - __time__ % 300を使用して時間を5分切り捨て、GROUP by句を使用して分析結果を時間ごとにグループ化します。 次に、count関数を使用して5分ごとにリクエスト数を計算し、ORDER BY句を使用して分析結果を時間でソートします。

    * | SELECT request_method, count(*) as count, __time__ - __time__ %300 as time GROUP BY time, request_method ORDER BY time

    请求次数

  • 今週のPV数と前週のPV数を比較します。

    PVの総数を計算するには、count関数を使用します。 次に、ts_compare関数を使用して、先週のPVに対する現在の週のPVの比率を取得します。 次のクエリステートメントでは、website_logはLogstore名です。

    * | SELECT diff[1] as this_week, diff[2] as last_week, time FROM (SELECT ts_compare(pv, 604800) as diff, time FROM (SELECT COUNT(*) as pv, date_trunc('week', __time__) as time FROM website_log GROUP BY time ORDER BY time) GROUP BY time)

    环比上周PV

  • クライアントIPアドレスの分布統計を収集します。

    ip_to_province関数を使用してIPアドレスが属する州を取得し、GROUP BY句を使用して分析結果を州ごとにグループ化します。 次に、count関数を使用して各IPアドレスの発生回数を計算し、ORDER BY句を使用して分析結果を発生回数でソートします。

    * | SELECT count(*) as count, ip_to_province(client_ip) as address GROUP BY address ORDER BY count DESC

    客户端分布

  • アクセスしたリクエストURIの上位10個を計算します。

    GROUP BY句を使用して、分析結果をリクエストURIごとにグループ化します。 count関数を使用して、各URIのアクセス要求数を計算します。 次に、ORDER BY句を使用して、分析結果をアクセス要求の数でソートします。

    * | SELECT count(*) as PV, request_uri as PATH GROUP BY PATH ORDER BY PV DESC LIMIT 10

    请求路径

  • request_uriフィールドの値が % file-7で終わるログエントリを照会します。

    重要

    クエリ文では、ワイルドカード文字のアスタリスク (*) と疑問符 (?) があいまい検索に使用されます。 ワイルドカード文字は、単語の中央または末尾に使用する必要があります。 特定の文字で終わるフィールドをクエリする場合は、分析ステートメントでLIKE演算子を使用できます。

    * | select * from website_log where request_uri like '%file-7'

    上記のクエリステートメントのwebsite_logはLogstore名です。

    模糊查询

  • アクセスされたリクエストURIの統計を計算します。

    regexp_extract関数を使用して、request_uriフィールドからファイルパーツを抽出します。 次に、count関数を使用して、各URIのアクセス要求数を計算します。

    * | SELECT regexp_extract(request_uri, '.*\/(file.*)', 1) file, count(*) as count group by file

    分析uri

  • request_uriフィールドの値に % abc % が含まれるログエントリを照会します。

    * | SELECT * where request_uri like '%/%abc/%%' escape '/'

    模糊查询

Webサイトアクセスログのサンプル

__tag__:__client_ip__:192.0.2.0
__tag__:__receive_time__:1609985755
__source__:198.51.100.0
__topic__:website_access_log
body_bytes_sent:4512
client_ip:198.51.100.10
host:example.com
http_host:example.com
http_user_agent:Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; ja-jp) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27
http_x_forwarded_for:198.51.100.1
instance_id:i-02
instance_name:instance-01
network_type:vlan
owner_id:%abc%-01
referer:example.com
region:cn-shanghai
remote_addr:203.0.113.0
remote_user:neb
request_length:4103
request_method:POST
request_time:69
request_uri:/request/path-1/file-0
scheme:https
server_protocol:HTTP/2.0
slbid:slb-02
status:200
time_local:07/Jan/2021:02:15:53
upstream_addr:203.0.113.10
upstream_response_time:43
upstream_status:200
user_agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.33 (KHTML, like Gecko) Ubuntu/9.10 Chromium/13.0.752.0 Chrome/13.0.752.0 Safari/534.33
vip_addr:192.0.2.2
vpc_id:3db327b1****82df19818a72