Simple Log Service (SLS) では、ログまたはクエリと分析の結果をローカルマシンにダウンロードできます。このトピックでは、ダウンロード方法と手順について説明します。
ダウンロード方法
SLS では、コンソール、Cloud Shell、SLS コマンドラインインターフェイス (CLI)、または SDK を使用して、ログやクエリと分析の結果をダウンロードできます。
-
CLI と SDK では、クエリベースのダウンロードにデータ量制限はありません。ただし、ネットワークが不安定な場合、ダウンロードが中断されることがあります。
-
圧縮ダウンロードは、コンソールでのみ可能です。
-
SQL クエリステートメントの最大長は 32 KB です。この制限を超えた場合は、クエリを複数のバッチに分割してください。
-
Logstore の課金方法が取り込みデータ量課金の場合、クエリと分析の結果 (SQL 結果) のダウンロードは無料です。詳細については、「取り込みデータ量課金」をご参照ください。
-
Logstore の課金方法が機能別課金の場合、クエリと分析の結果 (SQL 結果) のダウンロードには専用 SQL が必要となり、料金が発生します。料金の詳細については、「機能別課金の課金項目」をご参照ください。
|
比較項目 |
コンソール (推奨) |
OpenAPI |
CLI |
Cloud Shell |
SDK |
|
データ量制限 |
|
|
|
|
|
|
デプロイ |
なし |
なし |
SLS CLI を手動でインストールする必要があります。 |
自動デプロイ。初回実行時に初期化を待つ必要があります。 |
SLS SDK を手動でインストールし、カスタムコードを記述する必要があります。 |
|
認可 |
手動設定 |
自動設定 |
手動設定 |
||
|
専用 SQL |
SQL 分析結果のダウンロードに必要です。 |
SQL 分析結果のダウンロードに必要です。 |
SQL 分析結果のダウンロードに必要です。 |
SQL 分析結果のダウンロードに必要です。 |
必要に応じてパラメーターを設定します。 |
|
アウトバウンドインターネットトラフィック |
なし |
なし |
ツールをプロジェクトと同じリージョン内の ECS インスタンスにデプロイし、SLS プライベートエンドポイントを使用する場合、料金は免除されます。 |
プロジェクトが中国 (上海) リージョンにある場合、料金は免除されます。 |
ツールをプロジェクトと同じリージョン内の ECS インスタンスにデプロイし、SLS プライベートエンドポイントを使用する場合、料金は免除されます。 |
|
ネットワークアタッチトストレージ (NAS) 統合 |
なし |
なし |
必要に応じて手動で設定する必要があります。 |
自動設定 |
必要に応じて手動で設定する必要があります。 |
または、LogShipper を使用して Object Storage Service (OSS) にログを転送し、OSS からダウンロードすることもできます。ログの転送の詳細については、「OSS転送タスクの作成 (新規)」をご参照ください。
操作手順
コンソール
Simple Log Service コンソールでは、ログとクエリおよび分析結果の両方をダウンロードできます。以下の手順では、ログのダウンロードを例に説明します。クエリおよび分析結果をダウンロードするには、クエリ文を実行し、グラフ タブで ログのダウンロード をクリックします。
-
ログが単一タスクの上限を超えた場合、上限数までしかダウンロードされません。すべてのログを取得するには、時間範囲を絞り、バッチでダウンロードしてください。
-
各 Alibaba Cloud アカウントでは最大 3 つのダウンロードタスクを同時に実行できますが、ダウンロードの総数に制限はありません。この制限を超えた場合、または複数の Resource Access Management (RAM) ユーザーが同時にダウンロードを開始した場合は、実行中のタスクが終了するのを待ってから再試行してください。
-
ダウンロードレコードは 1 日後に自動的に削除されます。
-
ネットワークエラーが発生した場合やクエリが不正確な場合、システムはダウンロードタスクを自動的に再試行します。3 回再試行した後、タスクのステータスが「失敗」に変わります。
-
オンラインダウンロード ([名前を付けて保存]) とオフラインダウンロード ([タスク管理]) の違い:
-
[名前を付けて保存]:現在ページに表示されている結果をダウンロードします。小規模なデータセットに適しています。数十万行などの大量のデータをエクスポートすると、ブラウザーが応答しなくなったり、クラッシュしたりする可能性があります。このような場合は、タスク管理のオフラインダウンロード機能を使用するか、クエリの時間範囲を絞ってデータ量を減らしてください。
-
[タスク管理] (オフラインダウンロード):大規模なデータセット向けです。タスクはバックグラウンドで非同期に実行されます。タスクを作成した後はページを閉じることができ、完了後にファイルをダウンロードできます。
-
オフラインタスクでダウンロードされた実際の行数は、フロントエンドのクエリ結果に表示される行数とわずかに異なる場合があります。これは想定内の動作です。
-
ページを更新したことでコピー操作が失敗したり、オンラインダウンロードが失敗したりした場合は、手動でのコピー&ペーストではなく、ログダウンロード機能を使用してください。
-
-
オフラインダウンロードジョブには決まった所要時間はありません。ジョブにかかる時間は、ネットワークの状態、データの圧縮率、現在のシステム負荷、およびジョブが低頻度アクセスストレージまたはアーカイブストレージからデータを読み取る必要があるかどうかによって異なります。SLS は所要時間に関する SLA や、所要時間を見積もるための計算式を提供していません。そのため、ジョブが遅くても必ずしも失敗したとは限りません。ダウンロードが遅い場合、またはジョブが長時間進まない場合は、クエリの時間範囲を 1 日または 1 週間に絞り、ダウンロードジョブをバッチで作成してから、ダウンロードしたファイルをマージしてすべてのログを取得してください。バッチでダウンロードすると、ダウンロードの速度と安定性の両方が向上します。クエリ範囲に階層型ストレージの低頻度アクセスストレージまたはアーカイブストレージのデータが含まれている場合、読み取り時間は大幅に増加します。時間範囲をさらに絞るか、クエリステートメントの選択性を高めて、これらのストレージ階層から読み取られるデータ量を減らしてください。
-
オンラインダウンロードは失敗するがオフラインダウンロードは成功する場合のトラブルシューティング:
-
ネットワーク接続が安定しているか、クエリが複雑すぎないかを確認してください。
-
大容量のデータに適しており、より安定しているオフラインダウンロード ([タスク管理]) または CLI/SDK をお試しください。
-
オンラインダウンロードが引き続き失敗する場合は、時間範囲を絞り、より小さいバッチでダウンロードしてください。
-
-
ログのダウンロード ボタンがグレーアウトして利用できない場合は、以下を確認してください:
-
Rawデータ タブにいることを確認します。統計チャートなどの他のビューは、ダウンロードに対応していません。
-
クエリによって結果が返されることを確認してください。クエリ結果が空の場合、ダウンロードボタンはグレーアウトします。クエリステートメントまたは時間範囲を調整して、クエリを再実行してください。
-
RAM ユーザーに
log:CreateDownloadJobやlog:ListDownloadJobsなどのダウンロード関連の権限が付与されていることを確認してください。詳細については、このドキュメントの「ダウンロード権限の設定」セクションをご参照ください。 -
同時ダウンロードタスクの数が制限に達していないことを確認してください。各 Alibaba Cloud アカウントでは最大 3 つのダウンロードタスクを同時に実行できます。制限に達した場合は、既存のタスクが完了するのを待ってから再試行してください。
-
クエリが 20 行のみなど、非常に少ない結果しか返さない場合、フィルター条件が厳しすぎる可能性があります。時間範囲を広げるか、クエリステートメントを調整してみてください。
-
-
Simple Log Service コンソールにログインします。
-
**[プロジェクト]** セクションで、対象のプロジェクトをクリックします。
-
左側のメニューで、 を選択します。**[Logstore]** ページで、対象の Logstore をクリックします。
-
クエリステートメントを入力し、時間範囲を選択します。
-
Rawデータ タブで、 を選択します。
-
ログのダウンロード ダイアログボックスで、次のパラメーターを設定し、OK をクリックします。
パラメーター
説明
[タスク名]
ダウンロードタスクの名前。
[ログの数量]
ダウンロードするログの件数。
[データフォーマット]
CSV または JSON。
-
CSV:列名は最初の 100 ログフィールドから取得されます。後続のログの新しいフィールドは、名前のない最後の列に JSON 形式で保存されます。
-
JSON:各ログエントリは単一の JSON 行です。
[引用]
意図しないエスケープを防ぐために、特殊文字を含むフィールドを囲みます。
[不正確な結果をダウンロード]
いいえ を選択すると、クエリ結果が不正確な場合にダウンロードが失敗します。
[圧縮方法]
gzip、lz4、zstd、または圧縮なし。
圧縮により、大規模なデータセットのファイルサイズとダウンロード時間が大幅に削減されます。
-
-
ダウンロードタスク ダイアログボックスで、タスクの ステータス が 成功 に変わるまで待ち、ダウンロード をクリックしてログをローカルマシンに保存します。
または、Rawデータ タブで、 を選択して ダウンロードタスク ダイアログボックスを開き、ダウンロード履歴を表示できます。
OpenAPI
CreateDownloadJob API を呼び出し、ログダウンロードタスクを作成します。
-
ログが単一タスクの上限を超えた場合、上限数までしかダウンロードされません。すべてのログを取得するには、時間範囲を絞り、複数のバッチでダウンロードしてください。
-
各 Alibaba Cloud アカウントでは最大 3 つのダウンロードタスクを同時に実行できますが、ダウンロードの総数に制限はありません。この制限を超えた場合、または複数の RAM ユーザーが同時にダウンロードを開始した場合は、実行中のタスクが終了するのを待ってから再試行してください。
-
ダウンロードレコードは 1 日後に自動的に削除されます。
-
ネットワークエラーが発生した場合やクエリが不正確な場合、システムはダウンロードタスクを自動的に再試行します。3 回再試行した後、タスクのステータスが「失敗」に変わります。
OpenAPI バッチダウンロードに関する注意:
-
インデックス設定の要件:GetLogs API を呼び出すか SQL クエリを実行する場合、クエリ対象のフィールドが Logstore のインデックスに設定されていることを確認してください。クエリ対象のフィールドにインデックスが作成されていない場合、
ParameterInvalidエラーが返されます。詳細については、「CreateIndex」をご参照ください。 -
特定のフィールドのダウンロード:
messageなどの特定のフィールドのみをダウンロードするには、ダウンロードを実行する前に SELECT ステートメントを使用して結果を絞り込みます (例:* | SELECT message)。これにより、不要なデータ転送を削減できます。
Cloud Shell
Cloud Shell は中国 (上海) にデプロイされています。他のリージョンの Logstore からダウンロードすると、アウトバウンドのインターネットトラフィック料金が発生します。料金。
大規模なログのエクスポート:数億件などの大量のログの場合は、コンソールからバッチでダウンロードする代わりに、Cloud Shell または CLI/SDK を使用します。Cloud Shell は手動での依存関係のインストールが不要で、大規模なエクスポートタスクに適しています。
詳細な手順については、「Cloud Shell を使用したログデータのダウンロード」をご参照ください。
CLI
ログの量が多い場合は、コマンドラインインターフェイスを使用してください。
-
CLI をインストールします。詳細については、「CLI のインストール」をご参照ください。
-
アカウントの AccessKey ペアを取得します。詳細については、「AccessKey ペア」をご参照ください。
-
次のコマンドでログをダウンロードします。詳細な手順については、「get_log_all」をご参照ください。
例:次のコマンドはログをダウンロードし、作業ディレクトリの
downloaded_data.txtに保存します。aliyunlog log get_log_all --project="aliyun-test-project" --Logstore="aliyun-test-Logstore" --from_time="2024-07-01 15:33:00+8:00" --to_time="2024-07-09 15:23:00+8:00" --query="status:200|select request_method as method,COUNT(*) as pv group by method order by pv" --region-endpoint="cn-hangzhou.log.aliyuncs.com" --format-output=json --access-id="LT***CyGg" --access-key="8P***zi" >> ./downloaded_data.txt
SLS コマンドラインインターフェイス (CLI) のログダウンロードコマンドでは、現在、--compress と --query を同じコマンドで同時に使用することはできません。条件によってログをフィルタリングし、同時に大容量のデータを圧縮してダウンロードする必要がある場合は、代わりに CreateDownloadJob API を呼び出し、ダウンロードジョブを作成してください。
詳細については、「SLS CLI の使用」をご参照ください。
SDK
ログの量が多い場合は、SDK を使用します。
SDK は、ログのダウンロードとクエリの両方に同じ API を使用します。
以下は Python SDK の例です:
import os
import time
from aliyun.log import LogClient
from aliyun.log import GetLogsRequest
# Simple Log Service のエンドポイント。
endpoint = 'cn-qingdao.log.aliyuncs.com'
# この例では、環境変数から AccessKey ID と AccessKey シークレットを取得します。
accessKeyId = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
accessKey = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
# プロジェクト名。
project = 'your-project-name'
# Logstore 名。
Logstore = 'your-Logstore-name'
client = LogClient(endpoint, accessKeyId, accessKey)
request = GetLogsRequest(project, Logstore, fromTime=int(time()-3600), toTime=int(time()), topic='', query="*", line=100, offset=0, reverse=False)
# または
# request = GetLogsRequest(project, Logstore, fromTime="2018-1-1 10:10:10", toTime="2018-1-1 10:20:10", topic='', query="*", line=100, offset=0, reverse=False)
res = client.get_logs(request)
res.log_print()
詳細については、「SDK リファレンスの概要」をご参照ください。
よくある質問
コンソール経由で特定のフィールドのみをダウンロードするにはどうすればよいですか?
コンソール経由で特定のフィールドのみをダウンロードするには、まず pod_name、time、content など、目的の各フィールドについて、Logstore のインデックスでフィールドインデックスが作成され、統計が有効化されていることを確認してください。フィールドインデックスは、インデックスが作成または更新された後に書き込まれたログにのみ適用されるため、履歴ログは、フィールドでクエリや集計を行う前に再インデックス付けする必要があります。
クエリ・分析ページで、ダウンロードしたいフィールドのみを含む SQL ステートメントを実行します。ステートメントの形式は、クエリ条件 | SELECT "field1", field2 です。例:
__tag__:__container_name__: tms-prod-bp-server | SELECT "__tag__:__pod_name__", __time__, content
クエリの実行後、グラフタブでログのダウンロードをクリックし、クエリと分析結果をダウンロードします。特定のキーワードを含む結果をエクスポートし、返される行数の上限を上げるには、ステートメントに limit を追加します。例:
keyword | select content limit 999999
OpenAPI を使用して特定のフィールドをダウンロードすることもできます。このトピックの OpenAPI セクションでは、インデックス設定の要件と SELECT ステートメントの使用法について説明しています。SQL 分析結果のダウンロードには専用 SQL が使用されます。課金方法が取り込みデータ量課金の Logstore の場合、クエリと分析の結果のダウンロードは無料です。適用される課金ルールについては、このトピックの「ダウンロード方法」セクションをご参照ください。
コンソールのログリストが開かない、ページがタイムアウトする、またはオンラインダウンロードが失敗した場合はどうすればよいですか?
コンソールのログリストが開かない、ページがタイムアウトする、またはオンラインダウンロードが失敗した場合は、まずブラウザーのキャッシュをクリアし、シークレットモードでコンソールを再度開くか、Chrome または Edge に切り替えてください。また、ネットワーク接続が安定していることを確認し、Logstore のリージョンに近いネットワーク環境からコンソールにアクセスしてください。
問題が解決しない場合は、お使いの Alibaba Cloud アカウントの同時ダウンロードジョブの数が上限に達していないか確認してください。複数の RAM ユーザーが同時にダウンロードを開始した場合も上限に達します。このトピックの「コンソール」セクションにある注意書きでは、同時実行数の上限と、オンラインダウンロードが失敗するがオフラインダウンロードが成功する場合に実行するチェックについて説明しています。
コンソールのフロントエンドが正常に動作しない状態が続く場合は、代わりにコマンドラインインターフェイス (CLI)、Cloud Shell、または SDK を使用して大規模なログをエクスポートしてください。これらの方法は、ブラウザーやコンソールページに依存しません。
コンソールのログエクスポートレコードはどのくらいの期間保持され、ダウンロード履歴はどのように確認できますか?
コンソールの ダウンロードタスク リストは、直近 1 日分のエクスポートレコードのみを保持します。 1 日を超えたエクスポートレコードは自動的に削除されるため、レコードの有効期限が切れる前にファイルをダウンロードしてください。
以前のダウンロード履歴 (ダウンロードジョブを作成した API 呼び出しなど) を確認するには、ActionTrail を使用して、アカウントの管理 API 操作レコードをクエリできます。
単一のログエントリの平均サイズを計算するにはどうすればよいですか?
オフラインダウンロード機能を使用して、単一ログエントリの平均サイズを計算します。トラフィックが急増した期間と通常のトラフィックの期間を選択し、コンソールで各期間のダウンロードジョブを作成し、両方のファイルをローカルマシンにダウンロードします。次に、ファイルの合計バイト数をファイル内のログエントリ数で割ります。たとえば、Linux で wc -c を実行してファイルのバイト数を取得するか、Python スクリプトを使用して 1 回の処理でバイト数とエントリ数をカウントします。
データ量が大きい場合は、複数の時間範囲でログをダウンロードし、各範囲を個別に計算します。1 回のダウンロードは、このトピックの「ダウンロード方法」の比較表にある制限によって制約されます。分析を含まないクエリの場合、中国 (杭州)、中国 (上海)、中国 (北京)、中国 (深圳)、シンガポールのリージョンでは最大 2,000 万行、その他のリージョンでは最大 100 万行で、データ量は 20 GB 以下です。SQL 分析の場合、データ量は 2 GB 以下です。1 回のエクスポートで要件を満たせない場合は、LogShipper を使用して Object Storage Service (OSS) にログを転送し、OSS からダウンロードしてください。詳細については、「OSS転送タスクの作成 (新規)」をご参照ください。
ダウンロードダイアログボックスでタスク名と表示名が必要なのはなぜですか?
タスク名と表示名は、どちらもログダウンロードジョブを作成する CreateDownloadJob API の必須パラメーターです。タスク名は、同じプロジェクト内でダウンロードジョブを一意に識別するため、ステータスのクエリや削除の際にコンソールと API が正確に 1 つのジョブを特定できます。表示名はコンソールのリストに表示される識別子で、ダウンロードジョブの管理や後からの検索がしやすくなります。
> ログのダウンロード