すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:MaxCompute へのログの転送 (レガシ)

最終更新日:Mar 26, 2026

Simple Log Service コンソールでログをリアルタイムでクエリし、ビジネスインテリジェンス (BI) 分析およびデータマイニングのために MaxCompute へ転送できます。本トピックでは、Simple Log Service から MaxCompute へログを転送する方法について説明します。

重要

この機能は廃止されています。MaxCompute へのログ転送については、「MaxCompute へのログの転送 (新規)」をご参照ください。

前提条件

MaxCompute を有効化し、テーブルを作成します。詳細については、「テーブルの作成」をご参照ください。

制限事項

  • データ転送ジョブの作成は、Alibaba Cloud アカウント (root ユーザー) のみが実行できます。RAM ユーザーはこの操作を実行できません。

  • 異なる Logstore からのデータを同一の MaxCompute テーブルに転送しないでください。稀に、この操作によりテーブル内のパーティションデータが上書きされる場合があります。

  • 14 日以上前のログは転送できません。ログの経過日数は、その__time__ 予約フィールドに基づいて判定されます。これらのログは転送プロセス中に自動的に破棄されます。

  • Simple Log Service から MaxCompute へのログ転送では、DECIMAL、DATETIME、DATE、TIMESTAMP のデータ型はサポートされていません。詳細については、「データの型 (バージョン 2.0)」をご参照ください。

  • 以下の表に、サポートされているリージョンを示します。ご利用の Simple Log Service プロジェクトが下記のリージョンにない場合は、DataWorks を使用してデータ同期を行ってください。詳細については、「Data Integration を使用した Simple Log Service からのデータ転送」をご参照ください。

    Simple Log Service プロジェクトのリージョン

    MaxCompute プロジェクトのリージョン

    中国 (青島)

    中国 (上海)

    中国 (北京)

    中国 (北京)、中国 (上海)

    中国 (張家口)

    中国 (上海)

    中国 (フフホト)

    中国 (上海)

    中国 (杭州)

    中国 (上海)

    中国 (上海)

    中国 (上海)

    中国 (深セン)

    中国 (深セン)、中国 (上海)

    中国 (香港)

    中国 (上海)

ステップ 1:データ転送ジョブの作成

  1. Simple Log Service コンソール にログインします。

  2. Projects セクションで、対象のプロジェクトをクリックします。

    image

  3. ログストレージ > Logstore タブで、管理対象の Logstore の横にある > アイコンをクリックし、データ変換 > エクスポート > MaxCompute (旧称 ODPS) を選択します。

  4. [配送を有効にする] をクリックします。

  5. 転送に関する注意事項 ダイアログボックスで、直接転送 をクリックします。

  6. MaxCompute へのデータ転送 ページで、転送ルールを構成し、OK をクリックします。

    以下の表に、主なパラメーターを示します。

    パラメーター

    説明

    リージョン

    MaxCompute プロジェクトを作成できるリージョンは、ご利用の Simple Log Service プロジェクトのリージョンによって異なります。詳細については、「制限事項」をご参照ください。

    ジョブ名

    データ転送ジョブの名称です。

    MaxCompute プロジェクト

    MaxCompute プロジェクトの名称です。

    MaxCompute テーブル

    MaxCompute テーブルの名称です。

    カラムマッピング

    左側のテキストボックスに、MaxCompute テーブルのカラムにマップするログフィールドの名称を入力します。右側のテキストボックスに、対応する MaxCompute テーブルのカラムの名称を入力します。詳細については、「データモデルのマッピング」をご参照ください。

    重要
    • Simple Log Service では、ログフィールドを MaxCompute テーブルのカラムに順番にマップすることでログを転送します。MaxCompute テーブルのカラム名を変更しても、データ転送には影響しません。ただし、MaxCompute テーブルのスキーマを変更した場合は、ログフィールドとテーブルカラム間のマッピングを再構成する必要があります。

    • 左側のテキストボックスに入力するログフィールド名には、二重引用符 ("")、一重引用符 ('')、および空白文字を含めないでください。

    • ログに request_time のように同じ名称のフィールドが 2 つ含まれている場合、Log Service ではそのうちの 1 つを request_time_0 として表示します。ただし、Log Service 内では両方のフィールドは依然として request_time として保存されます。転送ルールを構成する際には、元のフィールド名 request_time のみを使用できます。

      ログに同じ名称のフィールドが複数含まれている場合、Log Service ではランダムにいずれかのフィールドの値を転送します。ログ内に同じ名称のフィールドを含めないことを推奨します。

    パーティションキーのマッピング

    左側のテキストボックスに、MaxCompute のパーティションキー列にマップするログフィールドの名称を入力します。右側のテキストボックスに、対応する MaxCompute テーブルのパーティションキー列の名称を入力します。詳細については、「データモデルのマッピング」をご参照ください。

    説明

    パーティションキー列は最大 3 列まで設定できます。カスタムフィールドをパーティションキーとして使用する際は注意してください。各データ転送ジョブで生成されるパーティション数は 512 未満である必要があります。これを超えると、ジョブは MaxCompute テーブルへのデータ書き込みに失敗し、そのバッチ全体のデータが転送されません。

    時間パーティションのフォーマット

    時間パーティションのフォーマットです。設定例およびパラメーターの詳細については、「」および「Java SimpleDateFormat」をご参照ください。

    説明
    • パーティションフィールド__partition_time__ に設定されている場合にのみ、時間パーティションのフォーマットが有効になります。

    • 秒単位の精度を持つ日付フォーマットは使用しないでください。これにより、テーブル内のパーティション数が 60,000 の上限を超える可能性が高くなります。

    • 単一のデータ転送ジョブにおけるデータパーティション数は 512 未満である必要があります。

    インポート間隔

    新しいデータ転送ジョブを作成する間隔 (秒単位) です。デフォルト値は 1800 です。

    この間隔が経過すると、新しいデータ転送ジョブが自動的に作成されます。

    データ転送を有効化すると、通常、ログが Logstore に書き込まれてから 1 時間以内に MaxCompute にインポートされます。インポートが成功した後は、MaxCompute でログデータを確認できます。詳細については、「MaxCompute へのログ転送後にデータ整合性を確認する方法」をご参照ください。

ステップ 2:MaxCompute でのデータの確認

データが転送された後、MaxCompute でそのデータを確認できます。以下の出力はデータサンプルを示しています。BI 分析およびデータマイニングのためのデータ活用には、MaxCompute と統合されたビッグデータ開発ツール Data IDE を使用できます。

| log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status |
+------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+
| 10.10.*.* | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 |
+------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+

Simple Log Service への権限付与

DataWorks でテーブルを削除して再作成すると、Simple Log Service に対する権限付与が取り消されます。この場合、必要な権限を手動で再度付与する必要があります。

  1. DataWorksコンソールにログインします。

  2. ページの左上隅で、リージョンを選択します。

  3. 左側のナビゲーションウィンドウで、ワークスペース をクリックします。

  4. ワークスペース ページで、対象のワークスペースの ショートカット セクションにカーソルを合わせ、データ開発 をクリックします。

  5. ワークフローを作成します。

    1. データ開発 ページで、作成 > ワークフローの作成 を選択します。

    2. ワークフローの作成 ダイアログボックスで、ワークフロー名 パラメーターを構成し、作成 をクリックします。

  6. ノードを作成します。

    1. データ開発 ページで、作成 > ノードの作成 > ODPS SQL を選択します。

    2. ノードの作成 ダイアログボックスで、名前 および パス パラメーターを構成し、コミット をクリックします。

      パス パラメーターは、ステップ 5 で作成したワークフローに設定します。

  7. ノードエディターで、以下のコマンドを実行して必要な権限を付与します。

    授权

    コマンド

    説明

    ADD USER aliyun$shennong_open@aliyun.com;

    MaxCompute プロジェクトにユーザーを追加します。

    shennong_open@aliyun.com は Simple Log Service の固定アカウントであり、変更できません。

    GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com;

    ユーザーに MaxCompute プロジェクト内のリソースを読み取るおよび一覧表示する権限を付与します。

    {ODPS_PROJECT_NAME} は MaxCompute プロジェクトの名称です。このプレースホルダーを実際のプロジェクト名に置き換えてください。

    GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com;

    ユーザーに Describe、Alter、Update の各権限を付与します。

    {ODPS_TABLE_NAME} は MaxCompute テーブルの名称です。このプレースホルダーを実際のテーブル名に置き換えてください。

    SHOW GRANTS FOR aliyun$shennong_open@aliyun.com;

    権限付与が正常に完了したかどうかを検証します。

    コマンドの出力が以下の内容の場合、権限付与は成功しています。

    A       projects/{ODPS_PROJECT_NAME}: List | Read
    A       projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

関連操作

データ転送ジョブを作成した後は、MaxCompute (旧称 ODPS) 転送管理 ページから、転送構成の変更、ジョブの無効化、ジョブのステータスおよびエラーメッセージの確認、失敗したジョブの再試行などが可能です。

  • 配送構成を変更する

    転送構成 をクリックし、転送構成を変更します。パラメーターの詳細については、「ステップ 1:データ転送ジョブの作成」をご参照ください。新しいカラムを追加する場合は、MaxCompute の送信先テーブルのカラム情報を変更できます。

  • データ転送ジョブの無効化

    転送の無効化 をクリックして、データ転送ジョブを無効化します。

  • データ転送ジョブのステータスおよびエラーメッセージの確認

    Simple Log Service では、過去 2 日間に実行されたすべてのデータ転送ジョブのステータスを確認できます。

    • ジョブのステータス

      ステータス

      説明

      成功

      データ転送ジョブが正常に完了しました。

      実行中

      データ転送ジョブが進行中です。後ほどステータスを確認してください。

      失敗

      互換性のない MaxCompute テーブルスキーマや権限不足などの理由により、自動再試行ができないエラーが発生したため、ジョブが失敗しました。

      Simple Log Service では、過去 2 日間に失敗したすべてのジョブを再試行できます。

    • エラーメッセージ

      データ転送ジョブが失敗した場合、コンソールに該当するエラーメッセージが表示されます。

      エラーメッセージ

      推奨される解決方法

      MaxCompute プロジェクトが存在しません。

      MaxCompute コンソールで、構成済みの MaxCompute プロジェクトが存在するかどうかを確認してください。存在しない場合は、プロジェクトを作成してください。このエラーにより失敗したジョブは、Simple Log Service で自動的に再試行されません。問題を解決した後は、手動でジョブを再試行する必要があります。

      MaxCompute テーブルが存在しません。

      MaxCompute コンソールで、構成済みの MaxCompute テーブルが存在するかどうかを確認してください。存在しない場合は、テーブルを作成してください。このエラーにより失敗したジョブは、Simple Log Service で自動的に再試行されません。問題を解決した後は、手動でジョブを再試行する必要があります。

      Simple Log Service に MaxCompute プロジェクトまたはテーブルへのアクセス権限が付与されていません。

      MaxCompute コンソールで、Simple Log Service アカウントに権限が付与されているかどうかを確認してください。付与されていない場合は、再度権限を付与してください。詳細については、「Simple Log Service への権限付与」をご参照ください。このエラーにより失敗したジョブは、Simple Log Service で自動的に再試行されません。問題を解決した後は、手動でジョブを再試行する必要があります。

      MaxCompute エラーが発生しました。

      このエラーメッセージは、データ転送ジョブが MaxCompute からエラーを受け取ったことを示しています。詳細については、関連する MaxCompute のドキュメントをご参照いただくか、MaxCompute チームにお問い合わせください。Simple Log Service では、過去 2 日間に失敗したジョブを自動的に再試行します。

      Simple Log Service のインポートフィールド構成が MaxCompute テーブルのカラムと一致していません。

      MaxCompute テーブルのカラムと Simple Log Service のログフィールド間のマッピングを再構成してください。問題を解決した後は、手動でジョブを再試行する必要があります。

    • ジョブの再試行

      内部エラーの場合、Simple Log Service では事前定義されたポリシーに基づく自動再試行がサポートされています。その他のケースでは、手動で再試行する必要があります。自動再試行の最小間隔は 30 分です。ジョブが失敗した場合、30 分待ってから再試行してください。Simple Log Service では、過去 2 日間に失敗したすべてのジョブを再試行できます。

      失敗したジョブを即座に再試行する必要がある場合は、すべての失敗タスクを再試行 をクリックしてください。また、API または SDK を使用して特定のジョブを再試行することもできます。

リファレンス

  • __partition_time__

    MaxCompute でデータをフィルター処理する一般的な方法として、ログ時刻をパーティションフィールドとして使用し、時刻に基づいてデータをフィルター処理することが挙げられます。

    • フォーマット

      __partition_time__ フィールドの値は、Simple Log Service の __time__ フィールドの値に基づいて計算され、パーティション時刻のフォーマットに従って切り捨てられます。日付パーティションキー列の値は、転送間隔に基づいて整列され、単一テーブル内のパーティション数が MaxCompute の上限を超えないようにします。

      たとえば、Simple Log Service のログ時刻が 27/Jan/2016 20:50:13 +0800 の場合、Simple Log Service では __time__ 予約フィールドの値が UNIX タイムスタンプ 1453899013 として計算されます。以下の表に、さまざまな構成における時間パーティションキー列の値を示します。

      出荷間隔

      パーティション時刻のフォーマット

      __partition_time__

      1800

      yyyy_MM_dd_HH_mm_00

      2016_01_27_20_30_00

      1800

      yyyy-MM-dd HH:mm

      2016-01-27 20:30

      1800

      yyyyMMdd

      20160127

      3600

      yyyyMMddHHmm

      201601272000

      3600

      yyyy_MM_dd_HH

      2016_01_27_20

    • 使用方法

      __partition_time__ フィールドを使用してデータをフィルター処理することで、フルテーブルスキャンを回避できます。たとえば、2016 年 1 月 26 日のログデータをクエリするには、以下のクエリ文を使用します。

      select * from {ODPS_TABLE_NAME} where log_partition_time >= "2015_01_26" and log_partition_time < "2016_01_27";
  • __extract_others__

    __extract_others__ は JSON 文字列です。たとえば、このフィールドから user-agent の内容を取得するには、以下のクエリ文を使用します。

    select get_json_object(sls_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10;
    説明
    • get_json_object は MaxCompute が提供する標準 UDF です。この標準 UDF を使用する権限を取得するには、MaxCompute チームにお問い合わせください。詳細については、「MaxCompute が提供する標準 UDF」をご参照ください。

    • この例は参考用です。公式の MaxCompute ドキュメントが優先されます。

  • データモデルのマッピング

    Simple Log Service から MaxCompute へのログ転送では、両サービス間のデータモデルマッピングが関係します。以下に、補足情報および例を示します。

    • MaxCompute テーブルには、少なくとも 1 つのデータカラムと 1 つのパーティションキー列が必要です。

    • Simple Log Service の以下の予約フィールドの使用を推奨します:__partition_time____source__、および __topic__

    • MaxCompute テーブルのパーティション数の上限は 60,000 です。この上限を超えると、テーブルへのデータ書き込みができなくなります。

    • データ転送ジョブはバッチ単位で実行されます。パーティションキー列およびその型を設定する際は注意してください。単一のデータ転送ジョブで処理されるデータパーティション数が 512 未満になるよう、十分に配慮してください。これを超えると、そのバッチ全体のデータを MaxCompute に書き込めません。

    • システム予約フィールド __extract_others__ には、レガシ名 _extract_others_ もサポートされています。

    • MaxCompute のパーティションキー列の値は、MaxCompute の予約語またはキーワードであってはなりません。詳細については、「予約語およびキーワード」をご参照ください。

    • MaxCompute のパーティションキー列の値は空であってはなりません。したがって、パーティションキー列にマップされるフィールドは、予約フィールドまたはログフィールドである必要があります。文字列型フィールドの値を対応するパーティションキー列のデータ型に CAST 演算子で変換できることを確認してください。パーティションキー値が空になるログは、転送時に破棄されます。

    • Simple Log Service では、1 つのログフィールドを MaxCompute テーブルの 1 つのカラム (データカラムまたはパーティションキー列) にのみマップできます。同一のログフィールドを 2 番目のカラムにマップした場合、そのカラムにおける値は null になります。null 値がパーティションキー列に現れた場合、データは転送されません。

    以下の表に、MaxCompute カラムと Simple Log Service フィールド間のマッピング関係の例を示します。Simple Log Service の予約フィールドの詳細については、「予約フィールド」をご参照ください。

    MaxCompute カラムの種類

    MaxCompute カラム

    MaxCompute の型

    SLS フィールド

    SLS フィールドの型

    説明

    データカラム

    log_source

    string

    __source__

    予約フィールド

    ログのソースです。

    log_time

    bigint

    __time__

    予約フィールド

    ログの UNIX タイムスタンプです。これは、1970 年 1 月 1 日 00:00:00 UTC からの経過秒数です。このフィールドは、データモデルの Time フィールドに対応します。

    log_topic

    string

    __topic__

    予約フィールド

    ログの Topic です。

    time

    string

    time

    ログコンテンツフィールド

    Logtail によって収集されたデータの場合、コンテンツフィールド time の値は、予約フィールド __time__ の値と一致することが多いです。

    ip

    string

    ip

    ログコンテンツフィールド

    このフィールドはログコンテンツから解析されます。

    thread

    string

    thread

    ログコンテンツフィールド

    このフィールドはログコンテンツから解析されます。

    log_extract_others

    string

    __extract_others__

    予約フィールド

    構成でマップされていないその他のログフィールドは、キーと値のペアの JSON 文字列としてシリアル化されます。この JSON 文字列は単一レベルの構造であり、そのフィールド内にネストされた JSON オブジェクトはサポートされません。

    パーティションキー列

    log_partition_time

    string

    __partition_time__

    予約フィールド

    このフィールドは、ログの __time__ フィールドの値を基準に計算されます。パーティションの粒度は構成可能です。

    status

    string

    status

    ログコンテンツフィールド

    このフィールドはログコンテンツから解析されます。このフィールドの値は列挙をサポートしており、パーティション数が上限を超えないように保証します。