Log Service によって Logstore データを自動的に Object Storage Service (OSS) にアーカイブすることにより、ログをより活用できるようになります。

  • OSS に格納されたログのライフサイクルを長期に設定することができます。
  • OSS に格納されているデータは、作成したプログラムや E-MapReduce といった他のシステムから読み込むことができます。

機能の利点

Log Service より OSS にログを転送する場合には、次の利点があります。

  • 使いやすい: コンソールより、Log Service の Logstore データを OSS に同期させる設定を行うことができます。
  • 効率化: Log Service でログ収集することにより、複数マシンのログを一元管理することができます。各マシンのログをそれぞれ OSS にインポートする必要がなくなります。
  • 管理が容易: Log Service でグループ化したログをそのまま OSS にログ転送することができます。さまざまなプロジェクトや Logstore のログを、それぞれ別々の OSS バケットディレクトリに自動転送することができるため、OSS データの管理が容易になります。

前提条件

  1. Log Service を有効にし、プロジェクトおよび Logstore を作成しており、ログデータが収集されていること。
  2. OSS を有効にして、 Log Service プロジェクトと同じリージョンにバケットを作成していること。
  3. RAM (Resource Access Management) が有効になっていること。
  4. Log Service プロジェクトと OSS バケットが、同じリージョンにあること。なお、リージョン間のデータ転送には対応していません。

手順

ステップ 1. RAM (Resource Access Management) での権限付与

タスクを実行する前に、Log Service に OSS への書き込み権限を付与します。

RAM クイック許可ページに移動し、表示されたページで同意するをクリックします。Log Service に、OSS への書き込み権限が付与されます。

  • ポリシーを変更してアカウント間の転送タスクを設定する方法については、「OSS へのログ転送 - RAM で権限付与」をご参照ください。
  • 転送タスクを実行できるようサブアカウント (RAM ユーザー) に権限を付与する方法については、RAM ユーザーに Log Service へのアクセス権を付与をご参照ください。

ステップ 2 Log Service で OSS 転送ルールを設定

  1. Log Service コンソールにログインします。
  2. プロジェクト一覧ページでプロジェクト名をクリックします。
  3. Logstore を選択し、左側のナビゲーションメニューより LogShipper - 転送OSSをクリックします。
  4. 有効化をクリックします。OSS LogShipper を設定し、確認をクリックします。

    OSS 転送を設定する際は、下表をご参照ください。

設定項目 説明 指定可能な値
OSS 転送名 OSS 転送の名前 名前は 3〜63 字で、英小文字、数字、ハイフン(-) 、アンダースコア (_) を含めることができ、先頭および末尾は英小文字または数字にする必要があります。
OSS Bucket OSS バケット名 既存のバケット名 (Log Service プロジェクトと同じリージョンにある OSS バケットを指定)
OSS 接頭辞 OSS の接頭辞 (Log Service から OSS に同期転送されたデータを格納するバケットディレクトリ) 既存の OSS 接頭辞
パーティション形式 LogShipper タスクによって生成されるパーティション名の形式は、%Y、%m、%d、%H、%M を用いて指定します。OSS に書き込まれるオブジェクトファイルのディレクトリ階層の定義です。スラッシュ (/) がルートディレクトリです。OSS 接頭辞およびパーティション形式を用いて OSS に格納されるパーティションファイルのファイルパスを定義する方法は下表のとおりです。 書式の詳細は、「Strptime API」を参照
RAM ロール ロールの Arn およびロール名 (RAM ロールはアクセス制御に使用されます。OSS バケット所有者がロールの ID を作成します。RAM ロールの ARN は、該当 RAM ロールの基本情報で確認できます。) 例: acs:ram::45643:role/aliyunlogdefaultrole
転送サイズ 圧縮されていない状態での OSS オブジェクトの最大サイズを設定 (LogShipper タスクの生成間隔は自動調整されます。) 5 〜 256 (単位: MB)
ストレージ形式 OSS に転送するログデータの保存形式 JSON 形式Parquet 形式CSV 形式の 3 つのいずれか
圧縮 OSS データストレージの圧縮の有効化/無効化
  • 圧縮しない: raw データは圧縮されません。
  • 圧縮 (snappy): snappy(https://google.github.io/snappy/)アルゴリズムでデータを圧縮し、OSS バケットストレージスペースの使用を減らします。
転送時間 LogShipper タスクの間隔 300 〜 900 (単位: 秒、初期値: 300)
図 1. ログの転送
図 2. ロールの arn
Log Service はバックエンドで、データを転送して各シャードに並行して書き込みます。転送するデータのサイズと時間を基に、データ転送タスクの生成される頻度は決定されます。設定されている条件に合致した場合に、転送タスクは生成されます。

パーティション形式

各 LogShipper タスクは、oss:// OSS-BUCKET/OSS-PREFIX/PARTITION-FORMAT_RANDOM-IDのパス形式で OSS ファイルに書き込まれます。2017-01-20 19:50:43 に生成された LogShipper タスクを例に、パーティション形式の使用方法を説明します。
OSS バケット OSS 接頭辞 パーティション形式 OSS ファイルパス
test-bucket test-table %Y/%m/%d/%H/%M oss://test-bucket/test-table/2017/01/20/19/50/43_1484913043351525351_2850008
test-bucket log_ship_oss_example year=%Y/mon=%m/day=%d/log_%H%M%s oss://test-bucket/log_ship_oss_example/year=2017/mon=01/day=20/log_195043_1484913043351525351_2850008.parquet
test-bucket log_ship_oss_example ds=%Y%m%d/%H oss://test-bucket/log_ship_oss_example/ds=20170120/19_1484913043351525351_2850008.snappy
test-bucket log_ship_oss_example %Y%m%d/ oss://test-bucket/log_ship_oss_example/20170120/_1484913043351525351_2850008
test-bucket log_ship_oss_example %Y%m%d%H oss://test-bucket/log_ship_oss_example/2017012019_1484913043351525351_2850008

OSS データは、Hive や MaxCompute といったビッグデータプラットフォームで分析します。パーティションデータを使用するには、ディレクトリの各階層を「キー=値」の形式にして指定します (Hive 形式の パーティション)。

たとえば、「oss://test-bucket/log_ship_oss_example/year=2017/mon=01/day=20/log_195043_1484913043351525351_2850008」。

Parquet は、3 つのcolumns (year、month、day)による3段階のパーティションに設定できます

LogShipper タスク管理

LogShipper 機能を有効にすると、Log Service は定期的にバックエンドの LogShipper タスクを開始します。コンソールに LogShipper タスクのステータスはコンソールに表示されます。LogShipper のタスク管理では、以下が行えます。

  • 過去 2 日間の LogShipper タスクをすべて表示し、ステータスを確認します。 LogShipper タスクのステータスは、 Success 、 Failed 、 Running です。 ステータス Failed は、LogShipper タスクが外部の理由でエラーが発生したため、再試行できないことを示します。 この場合、手動で問題を解決する必要があります。
  • 2 日以内に作成された LogShipper タスクで失敗したものについては、障害の外部要因をタスクリストに表示できます。外部エラーを修正したら、その失敗タスクをそれぞれ、またはバッチで再試行できます。
手順
  1. Log Service コンソールにログインします。
  2. プロジェクト一覧ページでプロジェクト名をクリックします。
  3. Logstore を選択し、左側のナビゲーションメニューより LogShipper - 転送OSS を順にクリックします。

    タスクの開始時間、タスクの終了時間、ログの受信時間、データ行、タスクのステータスといった情報を表示します。

    LogShipper タスクが失敗すると、そのエラーメッセージがコンソールに表示されます。デフォルトでは、ポリシーに基づいてタスクが再試行されます。 タスクを手動で再試行することもできます。

タスクを再試行

一般に、ログデータは Logstore に書き込まれてから 30 分以内に OSS に同期されます。

Log Service はアニーリングポリシーに基づき、デフォルトでは、過去 2 日間のタスクを再試行します。再試行の最小間隔は 15 分です。1 度失敗したタスクは 15 分後に再試行され、2 度失敗したタスクは 30 分後 (2 x 15 分) に再試行され、 3 度失敗したタスクは 60 分後に再試行されます (2 x 30 分)。

失敗したタスクをただちに再試行するには、コンソールよりすべての失敗したタスクを再試行をクリックするか、タスクを指定して API/SDK で再試行します。

失敗したタスクのエラー

タスクの失敗は引き起こす次の一般的なエラーを参照してください。
エラーメッセージ エラー原因 対処法
UnAuthorized 権限がない 以下を確認します。
  • OSS ユーザーがロールを作成していること
  • ロールの説明のアカウント ID が正しいこと
  • ロールに OSS バケットへの書き込み権限があること
  • role-arn が正しく設定されていること
ConfigNotExist 設定情報がない 本エラーは、通常、転送ルールが削除されている場合に発生します。転送ルールを設定し直し、再度タスクを実行します。
InvalidOssBucket 存在しない OSS バケット 以下を確認します。
  • OSS バケットと Log Service プロジェクトが同じリージョンにあること
  • バケット名が正しく設定されていること
InternalServerError Log Service の内部エラー タスクを再試行します。

OSS データストレージ

コンソールまたは API/SDK を使用して、OSS データにアクセスできます。

コンソールより OSS データにアクセスするには、OSS コンソールにログインし、左側のナビゲーションメニューよりバケット名をクリックします。

OSS の詳細については、OSS のドキュメントをご参照ください。

オブジェクトのアドレス

oss:// OSS-BUCKET/OSS-PREFIX/PARTITION-FROMAT_RANDOM-ID
  • パスの説明
    • OSS-BUCKET には OSS バケット、OSS-PREFIX はそれぞれ、指定した OSS バケットおよびディレクトリ接頭辞です。INCREMENTID は、 システムによって追加される乱数です。
    • PARTITION-FORMAT は、%Y/%m/%d/%H/%%M と定義されています。%Y、%m、%d、%H、および %M は、それぞれ年、月、日、時、および分を示します。Log Service の LogShipper タスクが生成される時間は、strptime API を用いて算出されます。
    • RANDOM-ID は LogShipper タスクの一意の識別子です。
  • ディレクトリ時間

    OSS データディレクトリは、LogShipper タスクが生成された時間に設定されます。5 分ごとにデータが OSS に転送されると仮定します。「2016-06-23 00:00:00」に作成された LogShipper タスクは、「2016-06-22 23:55」以降に Log Service に書き込まれたデータを転送します。「2016-06-22」の終日のログを分析するには、2016/06/23/00に含まれるすべてのオブジェクトに加え、2016/06/23/00ディレクトリの最初の 10 分間に「2016-06-22」のログが含まれているかどうかを確認する必要があります。

オブジェクトのストレージフォーマット