実運用を想定したAlibaba CloudのLogService構成を考えてみる~ログ検索編②~
実運用を想定したAlibaba CloudのLogService構成を考えてみる~ログ検索編②~

今回は、Alibaba Cloudの【LogService】の検索編②を投稿します。
本記事では、Apache設定で収集したログを閲覧・検索していきます。
Apacheのアクセスログについて
Apacheのアクセスログはhttpd.confにてLogFormatをデフォルト設定のまま使用している場合は、下記のような形式で出力されます。
111.1.1.1 - -[02/Jul/2019:16:42:49 +0800] "POST /web/jsrpc.php?output=json-rpc HTTP/1.1" 200 63 "http://47.1.1.1/web" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
収集したログの検索については、シンプルモードでの検索と同様の手順で実施可能です。
LogtailConfigで定義したApache設定を使用すると、このようなログに対して、
アクセス元、status毎での集計や数値として定義されているデータの集計が可能です。 なお、集計を実施するためには、インデックスを設定する必要があります。 そのため、本記事では、ログ確認⇒インデックス設定⇒ログの集計の順に実施します。ログ確認
Alibaba Cloudのコンソール画面へログインし、【LogService】画面を開きます。

確認対象の
Projectをクリックします。
ここでは、webserver-projectをクリックします。
Logstoreの一覧が表示されます。
この中から確認対象のLogstoreを選択します。
ここでは、web1-logstoreのログ使用モード配下にある検索をクリックします。

ログ検索画面内に収集したログが表示されます。
(参考)
Apache設定にて収集した場合は、大きく分けて生ログ、ログ収集元ホスト情報、Logtailconfigにて設定したApacheキーにて生ログから抽出した値が表示されます。

Apacheキー名は、LogtailConfig作成時に定義しております。
インデックスの設定
LogServiceにて取得したログの集計を行う場合は、インデックスの設定を実施する必要があります。
ここでは、Apacheキー名で抽出した値を集計するためにApacheキーをインデックスとして設定します。
インデックスについての詳細な説明はこちらの公式ドキュメントをご参照下さい。
以下、手順です。
Logstore画面にて、
インデックス属性⇒変更の順にクリックします。

検索と分析画面にて、
キーの下にある+ボタンをクリックします。

キーの入力行が表示されます。

集計したい
キー名を入力します。
ここでは、下記の値を入力します。
__source__
__tag__:__hostname__
__tag__:__path__
__tag__:__user_defined_id__
__topic__
http_user_agent
remote_addr
request_method
request_protocol
request_uri
response_size_bytes
status
time_localキーに対する
データ型を入力します。
ここでは、数値として取り扱う可能性があるものをlongそれ以外をtextとしました。クエリ発行時に ④ で定義した
本記事では、使用しません。キーを別名で検索したい場合にします。大文字と小文字を区別したい場合に使用します。
本記事では、使用しません。ログ収集時、トークン内の値でログを区切って収集することが可能です。
デフォルト設定では、下記のトークンで区切られます。
, '";=()[]{}?@&<>/:\n\t
なお、本記事では不要のため、空白とします。取得した値を集計し、カウントしたい場合は、有効にします。
本記事では、有効とします。設定値の入力が完了後、
OKをクリックします。

下記のポップアップが表示されたら
OKをクリックします。
設定反映後に取得したログから集計が可能となります。
※インデックス設定前に取得したログについては、集計の対象外となります。

Rawデータのクイック解析の箇所に設定したキーが表示されていることを確認します。こちらボタンをクリックすることによって、インデックス設定後に収集したログに対して、
キー毎での集計が可能となります。

ログの集計
インデックスにて設定したキー毎にログの集計を実施します。
ここでは、過去1週間のアクセス元毎での集計を例に手順を記載していきます。
アクセス元のみを集計
インデックスの設定後、数日間ログを流し続け、ログを正常に受信していることを確認した後、集計を実施します。
以下、手順です。
Logstore画面にて、検索対象とする時間帯を選択します。
ここでは、1週(相対)とします。アクセス元を集計するため、
remote_addr右のボタンをクリックします。

生ログに記載されているアクセス元のグローバルIPアドレスが自動で集計されて表示されます。
GUI上では、
パーセンテージでアクセス元の割合が表示されております。
〇〇%の箇所もしくはバーにマウスを合わせるとアクセス数が表示されます。下部のボタンをクリックすると
クエリが発行され、グラフ画面に遷移します。

クエリが自動生成されます。発行されたクエリの全量がデータソースタブに反映されます。
グラフタブに自動で遷移します。グラフの種類の中から
チャートプレビューが自動選択されます。クエリ結果が表示されます。
ここでは、アクセス元毎のpv数およびpercentageが表示されます。

グラフは、様々な形式で使用することが可能です。
使用可能なグラフの全量については、こちらの公式ドキュメントをご参照下さい。
下記の画面は、横棒グラフを選択した場合の表示結果です。

円グラフを選択した場合は、下記の表示結果となります。

グラフについては、ダッシュボード化することも可能です。
ダッシュボード化については、次回以降に記載します。ログのダウンロードについては、画面上に出力されているクエリの結果をダウンロードすることや
生ログをダウンロードすることが可能です。
ログをダウンロードについても、次回以降に記載します。

アクセス元をstatusで絞って集計
ここでは、アクセス元をstatusで絞って集計します。
以下、手順です。
アクセス元を集計するため、
status右のボタンをクリックします。status
200で絞るため、値をクリックします。クエリが自動生成されます。status
200でログが絞りこまれることを確認します。

再度
remote_addr右をクリックし、status200で絞り込んだアクセス元を表示します。下部のボタンをクリックし、
クエリを実施します。

クエリが自動発行されます。
クエリの全量がデータソースタブに反映されます。
statusで絞り込まれた集計結果が表示されます。
このように、あらかじめ検索条件を絞り込んで集計・グラフ化することも可能です。

