実運用を想定したAlibaba CloudのLogService構成を考えてみる~ログ検索編③~
今回は、Alibaba Cloudの【LogService】の検索編③を投稿します。
本記事では、前回の記事で触れなかったログのダウンロード機能について、ご紹介していきます。
ログのダウンロード
LogServiceにて収集したログは、ダウンロードし、手元のテキストエディタ等で参照することが可能です。
本記事では、GUIでのダウンロードとCLIを使用したダウンロードをご紹介致します。
GUIでのダウンロード
AlibabaCloudのコンソール画面にてログのダウンロードを実施します。
LogServiceでは、収集したログ
とクエリ発行後の集計結果
の2種類がダウンロード可能となりますので、
それぞれのダウンロード方法について、記載していきます。
まずは、以下の手順にてログの閲覧画面まで遷移します。
次項で、ログのダウンロードを実施します。
収集したログのダウンロード
GUI上でログのダウンロードを実施します。
検索対象のログファイルは、サーバIPアドレス172.16.12.83
の中の/var/log/httpd/access_log
を対象とします。
なお、GUIでのログダウンロードについては、画面上に表示されているログのみがダウンロード対象となります。
1度に画面上に表示できる行数はデフォルト20
行、最大100
行のため、100行以上のログをダウンロードする場合は、
次のページ
をクリックし、次頁に遷移して続きのログのダウンロードを実施、または、後述するCLI
でのダウンロードを実施して下さい。
以下、手順です。
ログの検索期間を
1週(相対)
にします。ログの検索を実施します。
検索は、こちらの記事の【ログの検索】を参考にログを検索します。
※クエリを手動で入力する場合は、下記クエリを入力後検索と分析
をクリック、もしくはエンター
を押下します。
* and source: 172.16.12.83 and __tag__:__path__: /var/log/httpd/access_log
3. 検索したログが表示されたことを確認します。
4. 1ページあたりのログ
が20
であるため、デフォルトでは、ダウンロードできるログは画面上に表示されている20行のみです。
6. ログのダウンロード用のポップアップが表示されたらこのページのログをダウンロードします。
を選択します。
9. CSVファイルには、以下のような形式でログが保存されます。
なお、デフォルトの場合は、20
行以上のログは表示されません。
10. ログの表示行数は下記を変更することによって、1ページあたり100行
に変更することが可能です。
集計結果のダウンロード
LogServiceを使用して集計した結果をGUI上からダウンロードします。
以下、手順です。
ログを集計します。 集計は、こちらの記事の【アクセス元をstatusで絞って集計】を参考に実施します。
ここでは、/var/log/httpd/access_log
にて収集したログの中からstatus
が200
のものをアクセス元
毎に上位順に集計しております。クエリを手動で入力する場合は、下記クエリを入力後
検索と分析
をクリック、もしくはエンター
を押下します。
* and status : 200 | with_pack_meta | select "remote_addr" , pv, pv *1.0/sum(pv) over() as percentage from( select count(1) as pv , "remote_addr" from (select "remote_addr" from log limit 100000) group by "remote_addr" order by pv desc) order by pv desc limit 10
4. ログのダウンロード用のポップアップが表示されたらこのページのログをダウンロードします。
を選択します。
7. CSVファイルには、以下のような形式で集計結果が保存されます。
CLIでのダウンロード
LogServiceでは、【AlibabaCloudCLI】ではなく、
【aliyun-log-cli】を使用してLogService内の操作を行います。 【aliyun-log-cli】とは、LogService専用のCLIであり、Logstore等の作成/参照/更新/削除のCRUD操作がCLIから可能となります。 また、GUIでのログダウンロードの上限が最大`100行`でしたが、CLIを使用することにより、`100行以上`のログをダウンロードすることが可能となります。下記にECS(CentOS7.6 64bit)へのaliyun-log-cliのインストール手順を記載します。
- こちらを参考に、`AccessKeyId`と`AccessKeySecret`を作成します。
作業対象のECSへログインし、下記のコマンドを投入します。
pip install aliyun-log-cli
3. 下記のメッセージが表示され、エラーなくインストールができることを確認します。
Successfully installed
4. 項番1
にて取得した、AccessKeyId
とAccessKeySecret
を用いて、aliyun-log-cliのprofileを作成します。
下記のコマンドを投入します。
aliyunlog configure <AccessKeyId> <AccessKeySecret> <endpoint>
※endpoint
はこちらをご参照の上、環境に合わせて入力して下さい。
なお、本記事では、クラシックネットワークエンドポイント
の東京 (日本)リージョンap-northeast-1-intranet.log.aliyuncs.com
を
指定しております。
パブリックネットワークエンドポイント
を使用する場合は、CLIを発行するECSにてインターネットアクセスが必要となります。
5. 下記のコマンドにて、profileが作成されていることを確認します。
# cat /root/.aliyunlogcli
[main]access-id = XXXXXXXXXXaccess-key = XXXXXXXXXXXXXregion-endpoint = ap-northeast-1-intranet.log.aliyuncs.com
aliyun-log-cliの初期設定は以上です。
次項より、ログのダウンロードを実施します。
収集したログのダウンロード
検索対象のログファイルについては、GUIでのログダウンロードと同様に
サーバIPアドレス172.16.12.83
の中の/var/log/httpd/access_log
を対象とします。
以下、手順です。
ログのダウンロード用のポップアップが表示されたら
コマンドラインツールからすべてのログをダウンロードする。
を選択します。CLIにて使用できるコマンドが表示されます。
コマンドのコピー
を押下し、クリップボードにコピーした後、テキストエディタに貼り付けます。キャンセル
をクリックし、ポップアップを閉じます。
なお、OKをクリックした場合は、aliyun-log-cliのドキュメントページへ遷移します。
コマンドの編集を行います。
編集前のコマンドは以下の通りです。
aliyunlog log get_log_all --project="webserver-project-01" --logstore="web1-logstore" --query="* and source: 172.16.12.83 and __tag__:__path__ : /var/log/httpd/access_log" --from_time="2019-08-22 17:25:39+09:00" --to_time="2019-08-29 17:25:39+09:00" --region-endpoint="ap-northeast-1-intranet.log.aliyuncs.com" --format-output=no_escape --jmes-filter="join('\n', map(&to_string(@), @))" --access-id="【ステップ 2 のアクセス ID】" --access-key="【ステップ 2 のアクセスキー】" >> /downloaded_data.txt
7. ログの抽出時間帯を任意の時間帯に修正します。
--from_time="2019-08-22 00:00:00+09:00" --to_time="2019-08-30 00:00:00+09:00"
8. 本記事では、profileの設定にて下記3つの値
は設定済みであるため、削除します。
--region-endpoint=XXXXX--access-id=XXXXX--access-key=XXXXX
9. ログの出力先を任意のファイルパスに変更します。
本記事では、/tmp/
配下に出力とし、任意のファイル名に変更し、拡張子をcsv
とします。
>> /tmp/172.16.12.83-access_log-test.csv
10. 編集後のコマンドは以下の通りです。
このコマンドをaliyun-log-cliが使用できる環境のECSで実行します。
aliyunlog log get_log_all --project="webserver-project-01" --logstore="web1-logstore" --query="* and source: 172.16.12.83 and __tag__:__path__ : /var/log/httpd/access_log" --from_time="2019-08-22 00:00:00+09:00" --to_time="2019-08-30 00:00:00+09:00" --format-output=no_escape --jmes-filter="join('\n', map(&to_string(@), @))" >> /tmp/172.16.12.83-access_log-test.csv
集計結果のダウンロード
GUIでの集計と同様に/var/log/httpd/access_log
にて収集したログの中からstatus
が200
のものをアクセス元
毎に上位順に集計します。
以下、手順です。
ログのダウンロード用のポップアップが表示されたら
コマンドラインツールからすべてのログをダウンロードする。
を選択します。CLIにて使用できるコマンドが表示されます。
クエリ内にてselect文にて集計されていることが確認できます。コマンドのコピー
を押下し、クリップボードにコピーした後、テキストエディタに貼り付けます。ログダウンロード時と同様にコマンドを編集します。
編集前のコマンドは以下の通りです。
aliyunlog log get_log_all --project="webserver-project-01" --logstore="web1-logstore" --query="* and __tag__:__path__ : /var/log/httpd/access_log | with_pack_meta | select \"remote_addr\" , pv, pv *1.0/sum(pv) over() as percentage from( select count(1) as pv , \"remote_addr\" from (select \"remote_addr\" from log limit 100000) group by \"remote_addr\" order by pv desc) order by pv desc limit 10" --from_time="2019-08-23 10:56:51+09:00" --to_time="2019-08-30 10:56:51+09:00" --region-endpoint="ap-northeast-1.log.aliyuncs.com" --format-output=no_escape --jmes-filter="join('\n', map(&to_string(@), @))" --access-id="【ステップ 2 のアクセス ID】" --access-key="【ステップ 2 のアクセスキー】" >> /downloaded_data.txt
7. 編集内容は以下の通りです。
●ログの抽出時間帯を任意の時間帯に修正します。
--from_time="2019-08-22 00:00:00+09:00" --to_time="2019-08-30 00:00:00+09:00"
●下記3つのkeyとvalueを削除します。
--region-endpoint=XXXXX--access-id=XXXXX--access-key=XXXXX
●ログの出力先を任意のファイルパスに変更します。
/tmp/172.16.12.83-access_log-test_aggregate.csv
8. 編集後のコマンドは以下の通りです。
このコマンドをaliyun-log-cliが使用できる環境のECSで実行します。
aliyunlog log get_log_all --project="webserver-project-01" --logstore="web1-logstore" --query="* and __tag__:__path__ : /var/log/httpd/access_log | with_pack_meta | select \"remote_addr\" , pv, pv *1.0/sum(pv) over() as percentage from( select count(1) as pv , \"remote_addr\" from (select \"remote_addr\" from log limit 100000) group by \"remote_addr\" order by pv desc) order by pv desc limit 10" --from_time="2019-08-22 00:00:00+09:00" --to_time="2019-08-30 00:00:00+09:00" --format-output=no_escape --jmes-filter="join('\n', map(&to_string(@), @))" >> /tmp/172.16.12.83-access_log-test_aggregate.csv
9. CSVファイルの出力内容は以下のような形式となります。
まとめ
今回は、LogServiceにて出力したログのダウンロード方法をご紹介しました。
次回は、ダッシュボードの作成を交えて様々なグラフ作成をご紹介致します。
ありがとうございました。