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

f:id:sbc_ali99:20190903123256p:plain

こんにちは! エンジニアのYです。

今回は、Alibaba Cloudの【LogService】の検索編②を投稿します。
前回の記事では、シンプルモードで収集したログをECSのIPアドレスログファイルパス文字列で検索するところまで実施しました。
本記事では、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毎での集計や数値として定義されているデータの集計が可能です。
なお、集計を実施するためには、インデックスを設定する必要があります。
そのため、本記事では、ログ確認インデックス設定ログの集計の順に実施します。

ログ確認

  1. Alibaba Cloudのコンソール画面へログインし、【LogService】画面を開きます。
    f:id:sbc_ali99:20190724150628p:plain

  2. 確認対象のProjectをクリックします。
    ここでは、webserver-projectをクリックします。 f:id:sbc_ali99:20190724150645p:plain

  3. Logstoreの一覧が表示されます。
    この中から確認対象のLogstoreを選択します。
    ここでは、web1-logstoreログ使用モード配下にある検索をクリックします。
    f:id:sbc_ali99:20190724151054p:plain

  4. ログ検索画面内に収集したログが表示されます。
    Apache設定にて収集した場合は、大きく分けて生ログログ収集元ホスト情報Logtailconfigにて設定したApacheキーにて生ログから抽出した値が表示されます。
    f:id:sbc_ali99:20190823150323p:plain
    Apacheキー名は、LogtailConfig作成時に定義しておりますので、過去記事のApacheログフォーマットでの収集の項番3をご参照下さい。
    (参考)
    f:id:sbc_ali99:20190823150344p:plain

インデックスの設定

LogServiceにて取得したログの集計を行う場合は、インデックスの設定を実施する必要があります。
ここでは、Apacheキー名で抽出した値を集計するためにApacheキーをインデックスとして設定します。
インデックスについての詳細な説明はこちらの公式ドキュメントをご参照下さい。

以下、手順です。

  1. Logstore画面にて、インデックス属性変更の順にクリックします。
    f:id:sbc_ali99:20190823150402p:plain

  2. 検索と分析画面にて、キーの下にある+ボタンをクリックします。
    f:id:sbc_ali99:20190823150543p:plain

  3. キーの入力行が表示されます。
    f:id:sbc_ali99:20190823150557p:plain

  4. 集計したいキー名を入力します。
    ここでは、下記の値を入力します。
    __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

  5. キーに対するデータ型を入力します。
    ここでは、数値として取り扱う可能性があるものをlongそれ以外をtextとしました。

  6. クエリ発行時に ④ で定義したキーを別名で検索したい場合にします。
    本記事では、使用しません。

  7. 大文字と小文字を区別したい場合に使用します。
    本記事では、使用しません。

  8. ログ収集時、トークン内の値でログを区切って収集することが可能です。
    デフォルト設定では、下記のトークンで区切られます。
    , '";=()[]{}?@&<>/:\n\t
    なお、本記事では不要のため、空白とします。

  9. 取得した値を集計し、カウントしたい場合は、有効にします。
    本記事では、有効とします。

  10. 設定値の入力が完了後、OKをクリックします。
    f:id:sbc_ali99:20190823150614p:plain

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

  12. Rawデータクイック解析の箇所に設定したキーが表示されていることを確認します。

  13. こちらボタンをクリックすることによって、インデックス設定後に収集したログに対して、キー毎での集計が可能となります。
    f:id:sbc_ali99:20190823150645p:plain

ログの集計

インデックスにて設定したキー毎にログの集計を実施します。
ここでは、過去1週間アクセス元毎での集計を例に手順を記載していきます。

アクセス元のみを集計

インデックスの設定後、数日間ログを流し続け、ログを正常に受信していることを確認した後、集計を実施します。

以下、手順です。

  1. Logstore画面にて、検索対象とする時間帯を選択します。
    ここでは、1週(相対)とします。

  2. アクセス元を集計するため、remote_addr右のボタンをクリックします。
    f:id:sbc_ali99:20190823164832p:plain

  3. 生ログに記載されているアクセス元のグローバルIPアドレスが自動で集計されて表示されます。

  4. GUI上では、パーセンテージでアクセス元の割合が表示されております。
    〇〇%の箇所もしくはバーにマウスを合わせるとアクセス数が表示されます。

  5. 下部のボタンをクリックするとクエリが発行され、グラフ画面に遷移します。
    f:id:sbc_ali99:20190823150720p:plain

  6. クエリが自動生成されます。

  7. 発行されたクエリの全量がデータソースタブに反映されます。

  8. グラフタブに自動で遷移します。

  9. グラフの種類の中からチャートプレビューが自動選択されます。

  10. クエリ結果が表示されます。
    ここでは、アクセス元毎のpv数およびpercentageが表示されます。
    f:id:sbc_ali99:20190823150734p:plain

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

  12. 円グラフを選択した場合は、下記の表示結果となります。
    f:id:sbc_ali99:20190823170606p:plain

  13. グラフについては、ダッシュボード化することも可能です。
    ダッシュボード化については、次回以降に記載します。

  14. ログのダウンロードについては、画面上に出力されているクエリの結果をダウンロードすることや
    生ログをダウンロードすることが可能です。
    ログをダウンロードについても、次回以降に記載します。
    f:id:sbc_ali99:20190823170619p:plain

アクセス元をstatusで絞って集計

ここでは、アクセス元をstatusで絞って集計します。

以下、手順です。

  1. アクセス元を集計するため、status右のボタンをクリックします。

  2. status200で絞るため、値をクリックします。

  3. クエリが自動生成されます。

  4. status200でログが絞りこまれることを確認します。
    f:id:sbc_ali99:20190823150817p:plain

  5. 再度remote_addr右をクリックし、status200で絞り込んだアクセス元を表示します。

  6. 下部のボタンをクリックし、クエリを実施します。
    f:id:sbc_ali99:20190823150833p:plain

  7. クエリが自動発行されます。

  8. クエリの全量がデータソースタブに反映されます。

  9. statusで絞り込まれた集計結果が表示されます。
    このように、あらかじめ検索条件を絞り込んで集計・グラフ化することも可能です。
    f:id:sbc_ali99:20190823150847p:plain

まとめ

今回は、インデックスを使用した基本的な集計やグラフ化機能をご紹介しました。
次回は、LogServiceにて収集したログのダウンロードについて、ご紹介致します。
ありがとうございました。