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

Simple Log Service:データモデル

最終更新日:Sep 04, 2024

このトピックでは、Simple Log Serviceに送信されるログのデータモデルについて説明します。

次のセクションでは、Simple Log Serviceの基本用語について説明します。

リージョン

リージョンはAlibaba Cloudのサービスノードです。 Alibaba Cloudは複数のリージョンにサービスをデプロイします。 自分に最も近いリージョンを選択できます。 これにより、アクセスの待ち時間が短縮され、ユーザーエクスペリエンスが向上します。

プロジェクト

プロジェクトは、Simple Log Serviceの基本的な管理単位です。 リソースの分離と制御に使用されます。 プロジェクトを使用して、アプリケーションのすべてのログとログソースを管理できます。

ログストア

Logstoreは、ログの収集、保存、および消費の単位です。 各Logstoreは単一のプロジェクトに属します。 各プロジェクトは複数のLogstoreを持つことができます。 1つのプロジェクトに複数のLogstoreを作成できます。 アプリケーションのログの種類ごとにLogstoreを作成することを推奨します。 たとえば、big-gameという名前のゲームアプリケーションがあります。 サーバーでは、操作ログ、アプリケーションログ、アクセスログの3種類のログが生成されます。 この場合、big-gameという名前のプロジェクトを作成し、このプロジェクトの3種類のログのそれぞれに対してLogstoreを作成できます。 次に、Logstoreを使用してログを保存および使用できます。

ログエントリ

ログエントリは、Simple log Serviceで処理されるデータの基本単位です。 Simple Log Serviceは、半構造化データモデルを使用してログエントリを定義します。 次の表にモデルを示します。

項目

説明

要件

time

ログエントリが生成される時刻。 このフィールドは予約済みフィールドです。 ほとんどの場合、フィールド値はログエントリの時間情報に基づいて生成されます。

この値は UNIX タイムスタンプです。 1970年1月1日の00:00:00 UTCから経過した秒数を表します。

topic

ログエントリのユーザー定義フィールド。 このフィールドは、ログのグループをマークするために使用できます。 たとえば、サイトに基づいてアクセスログのトピックを指定できます。

フィールド値は、空の文字列を含む最大128バイトの文字列にすることができます。 このフィールドのデフォルト値は空の文字列です。

source

ログエントリのソース。 例えば、このパラメータの値は、ログエントリが生成されるサーバのIPアドレスとすることができる。

フィールド値は、長さが128バイトまでのUTF-8にエンコードされた文字列です。 このフィールドのデフォルト値は空の文字列です。

content

ログエントリの特定の内容。 コンテンツは、1つ以上のコンテンツアイテムからなる。 各コンテンツアイテムは、キーと値のペアです。

キーは、長さが128バイトまでのUTF-8にエンコードされた文字列です。 英数字、およびアンダースコア (_) を使用できます。 キーの先頭は数字ではなく、次のキーワードを含めることはできません。

  • __time__

  • __source__

  • __topic__

  • __partition_time__

  • __extract_others__

  • __extract_others__

値は、長さが1024 × 1024バイトまでのUTF-8にエンコードされた文字列です。

tags

ログタグには次のものがあります。

  • カスタムタグ: PutLogs操作を呼び出してデータを書き込むときに追加するタグ。

  • システムタグ: Simple Log Serviceによって追加されるタグ (__client_ip__ および __receive_time__ など) 。

フィールド値は辞書です。 キーと値はどちらも文字列です。 フィールド名の先頭には __tag __: の形式があります。

トピック

Logstore内のログは、トピックごとにグループ化できます。 Simple Log Serviceに書き込まれるログのトピックを指定できます。 次に、ログを照会するときにトピックを指定できます。 たとえば、Simple log Serviceにログを書き込むときに、ユーザーIDをログトピックとして使用できます。 このようにして、トピックごとにログを照会するときに、自分のログのみを表示できます。 Logstoreでログを分類する必要がない場合は、すべてのログに同じトピックを使用します。

説明

デフォルトのログトピックは空の文字列です。 ログの書き込みまたは照会時にログトピックを指定しない場合は、空の文字列をデフォルトトピックとして使用できます。

異なるシナリオで生成されるログの形式は異なります。 次の例では、生のNGINXアクセスログエントリをSimple log Serviceで必要なデータモデルに変換する方法を説明します。 この例では、NGINXサーバーのIPアドレスは10.10.10.1です。 次のサンプルは、このサーバーの生のログエントリです。

10.1.1.1 - - [01/Mar/2012:16:12:07 +0800] "GET /Send? AccessKeyId=82251054** HTTP/1.1" 200 5 "-" "Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2"

次の表に、生のログエントリをSimple log Serviceで必要なデータモデルに変換する方法を示します。

項目

フィールド値

説明

topic

なし

デフォルト値 (空の文字列) が使用されます。

time

1330589527

ログエントリが生成された時刻。 時間は、生のログエントリのタイムスタンプから変換されます。 単位は秒です。

source

10.10.10.1

ログエントリが収集されるサーバーのIPアドレス。

content

キーと値のペア

ログエントリの内容。

生のログコンテンツを抽出し、抽出したコンテンツをキーと値のペアに結合する方法を決定できます。 次の表に、カスタムキーと値のペアを示します。

キー

ip

10.1.1.1

method

GET

status

200

length

5

ref_url

-

browser

Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2

ログ

ログエントリのコレクション。

LogGroup

ログエントリのグループ。

LogGroupList

結果を返すために使用されるロググループのコレクション。

エンコーディングルール

次の表に、システムがサポートするコンテンツのエンコード方法を示します。 今後、より多くのエンコード方法が利用可能になります。 サポートされるエンコード方法は、RESTful APIのContent-Typeフィールドで指定されます。

説明

説明

コンテンツタイプ

Protobuf

データ・モデルは、プロトコル・バッファ (Protobuf) によって符号化される。

application/x-protobuf

Protobuf形式の詳細については、「データエンコーディング」をご参照ください。

説明

Protobuf では、キーと値のペアが一意である必要はありません。 ただし、同じキーを使用することはできません。 それ以外の場合、未定義の動作を示すエラーが発生します。

Protobufは、ログエントリ内のフィールドをエンコードするために、フィールド番号の順序に従う必要があります。 そうしないと、データの解析に失敗する可能性があります。