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

Simple Log Service:ストアの管理

最終更新日:Mar 14, 2026

ストアは、Simple Log Service (SLS) におけるデータの保存およびクエリ実行の基本単位です。異なるデータ型をサポートするため、SLS では Logstore、Metricstore、Eventstore の 3 種類のストアが提供されています。

ストアタイプの選択方法

Simple Log Service では、Logstore、Metricstore、Eventstore の 3 種類のストアタイプがサポートされています。これらは主にデータモデルの互換性において区別されます。ご利用のデータに最も適したストアタイプを選択してください。特に要件がない場合は、デフォルトで Logstore を使用します。

ストアタイプ

利用シーン

Logstore

  • ログデータ:システムにおけるイベントや状態変化の時系列記録。ログデータは、操作とその結果から構成される順序付きコレクションであり、この広義の定義により、ほとんどのデータ型がカバーされます。そのため、Logstore はデフォルトの選択肢となります。

  • トレースデータ:単一のリクエストに対する処理情報を記録したもので、サービス呼び出しとその処理時間(持続時間)を含みます。

Metricstore

時系列データ(メトリック):一意の識別子と一連のデータポイントから構成される時系列。Metricstore を使用すると、時系列データを効率的に保存およびクエリ実行できます。

Eventstore

イベントデータ:モニタリングアラートや定期検査の結果など、重要な発生事象の記録。Eventstore を使用して、離散的かつイベントベースのデータを保存します。

Logstore

Logstore は、Simple Log Service におけるログデータの保存およびクエリ実行の基本単位です。各 Logstore はプロジェクトに所属します。同一アプリケーションから出力される異なるログタイプを分離するために、1 つのプロジェクト内に複数の Logstore を作成できます。たとえば、アプリケーション A の操作ログ、アプリケーションログ、アクセスログを収集する場合、プロジェクト名として `app-a` を指定し、そのプロジェクト内に `operation_log`、`application_log`、`access_log` という名前の Logstore をそれぞれ作成して、各ログタイプを個別に保存します。

ログの書き込み、クエリ実行、分析、処理、コンシューム、配信を行う際には、必ず Logstore を指定します。具体的な用途は以下のとおりです:

  • Logstore を収集単位としてログを収集します。

  • Logstore にログを保存し、処理・コンシューム・配信を行います。

  • Logstore 内にインデックスを作成して、ログのクエリ実行および分析を行います。

Metricstore

Metricstore は、時系列データの保存およびクエリ実行の基本単位です。各 Metricstore はプロジェクトに所属します。プロジェクトごとに複数の Metricstore を作成することで、さまざまな要件に対応できます(例:異なる種類の時系列データごとに個別の Metricstore を作成)。たとえば、基本ホスト監視データ、クラウドサービス監視データ、ビジネスアプリケーション監視データを収集する場合、プロジェクト名として `demo-monitor` を指定し、そのプロジェクト内に `host-metrics`、`cloud-service-metrics`、`app-metrics` という名前の Metricstore をそれぞれ作成して、これらのデータタイプを個別に保存します。

時系列データの書き込み、クエリ実行、分析、コンシュームを行う際には、必ず Metricstore を指定します。具体的な用途は以下のとおりです:

Eventstore

Eventstore は、イベントデータの保存およびクエリ実行の基本単位です。各 Eventstore はプロジェクトに所属します。プロジェクトごとに複数の Eventstore を作成することで、さまざまな要件に対応できます(例:異なる種類のイベントデータごとに個別の Eventstore を作成)。たとえば、インフラストラクチャの異常イベント、ビジネスアプリケーションのイベント、カスタムイベントをそれぞれ分類・保存・分析するために、個別の Eventstore を使用します。

イベントデータの書き込み、クエリ実行、分析、コンシュームを行う際には、必ず Eventstore を指定します。具体的な用途は以下のとおりです:

  • Eventstore を収集単位としてイベントデータを収集します。

  • Eventstore を保存単位としてイベントデータを保存し、コンシューム操作を実行します。

参考資料

LogGroup

ロググループ(LogGroup)は、複数のログをまとめた集合体であり、データの書き込みおよび読み取りの基本単位です。1 つの LogGroup 内のすべてのログは、IP アドレスやソースなど、共通のメタデータを共有します。SLS へログを書き込んだり、SLS からログを読み取ったりする際には、複数のログが LogGroup にバンドルされます。これにより、読み取りおよび書き込みの回数が削減され、効率が向上します。各 LogGroup の最大サイズは 5 MB です。

日志组

ログデータ

ログデータは、システムにおけるイベントや状態変化の時系列記録であり、特定のオブジェクトに対する操作とその結果から構成される順序付きコレクションです。広義には、テキストファイル(LogFiles)、イベント(Events)、データベースのバイナリログ(BinLogs)、時系列データ(メトリック)などが含まれます。Simple Log Service では、半構造化データモデルを用いてログを定義しており、その構成要素はトピック(Topic)、時刻(time)、コンテンツ(content)、ソース(source)、タグ(tags)の 5 つの主要なデータドメインからなります。以下の表に、各データドメインのフォーマット要件を示します。

データドメイン

説明

フォーマット

トピック(Topic)

Simple Log Service では、予約済みフィールド(__topic__)を用いてログのトピックを識別します。これにより、異なるサービス、ユーザー、またはインスタンスによって生成されたログを区別できます。たとえば、システム A がフロントエンド HTTP リクエスト処理、キャッシュ、ロジック処理、ストレージなどのモジュールを含む場合、各モジュールのログに対して `http_module`、`cache_module`、`logic_module`、`store_module` といったトピックを割り当てます。これらのログが同一の Logstore に収集された後、トピックを用いてその発生元を迅速に特定できます。トピックは、収集設定グローバル設定 で設定します。

Logstore、トピック、シャード(shards) の関係は以下のとおりです:

image

0~128 バイトの文字列(空文字列を含む)。

Logstore 内のログを区別する必要がない場合は、ログ収集時にトピックを空文字列として設定します。空文字列は有効なトピックです。

ログ時刻

予約済みフィールド(__time__)でログ時刻を識別します。詳細については、「予約済みフィールド」をご参照ください。

UNIX タイムスタンプ。

ログコンテンツ

ログの内容で、1 つ以上の Key:Value 形式のコンテンツ項目から構成されます。

シンプルモード(単一行または複数行)で Logtail を使用してログを収集する場合、Logtail はログコンテンツを解析しません。生ログ全体が content フィールドにアップロードされます。

Key:Value 形式の仕様は以下のとおりです:

  • キー(Key):フィールド名。UTF-8 文字列で、1~128 バイトの長さであり、英字、アンダースコア、数字のみを使用可能。先頭文字は数字であってはなりません。以下の予約済みフィールド名は使用できません。

    • __time__

    • __source__

    • __topic__

    • __partition_time__

    • _extract_others_

    • __extract_others__

  • 値(Value):最大サイズ 1 MB の任意の文字列。

ログソース

予約済みフィールド(__source__)でログソース(例:ログを生成したサーバーの IP アドレスなど)を識別します。

0~128 バイトの任意の文字列。

タグ

ログタグには以下の種類があります:

  • カスタムタグ:ログ書き込み時に PutLogs API オペレーションを呼び出して追加します。

  • システムタグ:Simple Log Service がログに自動的に付与するタグで、__client_ip____receive_time__ などがあります。

文字列のキーと値のペアからなる辞書。ログ内では、タグは __tag__: プレフィックス付きで表示されます。

以下の例では、Web サイトのアクセスログを用いて、生ログと Simple Log Service のデータモデルとの対応関係を示します。

  • 生ログ

    127.0.0.1 - - [01/Mar/2021:12:36:49  0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
  • シンプルモードで収集されたログ。生ログ全体が content フィールドに保存されます。

    日志样例

  • 正規表現モードで収集されたログ。構成された正規表現に基づき、ログコンテンツが複数のキーと値のペアに分割されて構造化されます。

    日志样例

時系列データ(メトリック)

時系列データは、時系列識別子とデータポイントから構成されます。同一の識別子を持つデータポイントは、1 つの時系列を形成します。Simple Log Service の時系列データ型は、Prometheus データモデル と互換性があります。Metricstore 内のすべてのデータは、時系列データとして保存されます。

image

時系列識別子

各時系列は、メトリック名および一連のラベルによって一意に識別されます。

  • メトリック名は、メトリックの種類を識別する文字列です。正規表現 [a-zA-Z_:][a-zA-Z0-9_:]* に一致する必要があります。たとえば、http_request_total は、受信した HTTP リクエストの合計数を表します。

  • ラベルは、メトリックの属性を識別するキーと値のペアの集合です。キーは正規表現 [a-zA-Z_][a-zA-Z0-9_]* に一致する必要があります。値には縦棒(|)を含めることはできません。たとえば、methodPOSTURL/api/v1/get です。

データポイント

データポイントは、特定の時刻における時系列の値を表します。各データポイントはタイムスタンプと値から構成されます。タイムスタンプはナノ秒単位の精度を持ち、値は double 型です。

データ構造

時系列データの書き込みプロトコルは、ログと同じものであり、Protobuf の データエンコーディング 方法を使用します。時系列識別子およびデータポイントは、以下の表に示すように content フィールドに格納されます。

フィールド

説明

__name__

メトリック名。

nginx_ingress_controller_response_size

__labels__

ラベル情報。フォーマットは {key}#$#{value}|{key}#$#{value}|{key}#$#{value} です。

説明
  • ラベルのキーはアルファベット順に並べ替える必要があります。

  • 空の値を持つラベルは書き込まないでください。たとえば、app#$#|controller_class#$#nginx の `app` キーは空の値を持ちます。このようなラベルを Metricstore に書き込むと、PromQL 集約時にエラーが発生する可能性があります。

app#$#ingress-nginx|controller_class#$#nginx|controller_namespace#$#kube-system|controller_pod#$#nginx-ingress-controller-589877c6b7-hw9cj

__time_nano__

タイムスタンプ。秒(s)、ミリ秒(ms)、マイクロ秒(us)、ナノ秒(ns)など、さまざまな精度でタイムスタンプを書き込むことができます。SQL クエリを実行する際には、出力内のすべてのタイムスタンプがマイクロ秒(us)精度に標準化され、一貫した時間計算が保証されます。

1585727297293000

__value__

値。

36.0

指定された期間内における `process_resident_memory_bytes` メトリックのすべての生時系列データをクエリ実行します。

* | select * from "sls-mall-k8s-metrics.prom" where __name__ = 'process_resident_memory_bytes' limit all

image

イベントデータ

イベントとは、モニタリングアラートや定期検査ジョブの結果など、重要なデータ記録を指します。Simple Log Service のイベントデータは、以下の表に示すとおり、CloudEvents 仕様に準拠しています。

フィールドタイプ

フィールド名

必須

データフォーマット

説明

プロトコルフィールド

specversion

はい

文字列

デフォルト値は 1.0 であり、CloudEvents 仕様に準拠しています。

id

はい

文字列

イベント ID。イベントを一意に識別するには、source+id を使用できます。

source

はい

文字列

イベントが発生したコンテキスト(例:イベントソースやイベントを公開したインスタンスなど)。

type

はい

文字列

イベントタイプ(例:sls.alert)。

subject

いいえ

文字列

イベントの件名。このフィールドは、source フィールドを補足する追加情報を提供し、イベントをトリガーしたオブジェクトなどを示します。

datacontenttype

いいえ

文字列

イベントタイプ。デフォルト値は application/cloudevents+json です。

dataschema

いいえ

URI

data フィールドが準拠すべきスキーマ。デフォルト値は空です。

data

いいえ

JSON

特定のイベントコンテンツ。フォーマットは、イベントのソースおよびタイプに応じて異なります。

time

はい

タイムスタンプ

イベント時間。フォーマットの詳細については、RFC 3339 をご参照ください。例:2022-10-17T11:20:45.984+0800

拡張フィールド

title

はい

文字列

イベントタイトル。

message

はい

文字列

イベントの説明。

status

はい

文字列

イベントステータス。有効な値は以下のとおりです:

  • ok

  • info

  • warning

  • error

以下の例は、アラートイベントのデータを示しています:

{
    "specversion": "1.0",
    "id": "af****6c",
    "source": "acs:sls",
    "type": "sls.alert",
    "subject": "https://sls.console.alibabacloud.com/lognext/project/demo-alert-chengdu/logsearch/nginx-access-log?encode=base64&endTime=1684312259&queryString=c3RhdHVzID49IDQwMCB8IHNlbGVjdCByZXF1ZXN0X21ldGhvZCwgY291bnQoKikgYXMgY250IGdyb3VwIGJ5IHJlcXVlc3RfbWV0aG9kIA%3D%3D&queryTimeType=99&startTime=1684311959",
    "datacontenttype": "application/cloudevents+json",
    "data": {
        "aliuid": "16****50",
        "region": "cn-chengdu",
        "project": "demo-alert-chengdu",
        "alert_id": "alert-16****96-247190",
        "alert_name": "Nginx Access Error",
        "alert_instance_id": "77****e4-1aad9f7",
        "alert_type": "sls_alert",
        "next_eval_interval": 300,
        "fire_time": 1684299959,
        "alert_time": 1684312259,
        "resolve_time": 0,
        "status": "firing",
        "severity": 10,
        "labels": {
            "request_method": "GET"
        },
        "annotations": {
            "__count__": "1",
            "cnt": "49",
            "desc": "Nginx has had 49 GET request errors in the last five minutes",
            "title": "Nginx Access Error Alert Triggered"
        },
        "results": [
            {
                "region": "cn-chengdu",
                "project": "demo-alert-chengdu",
                "store": "nginx-access-log",
                "store_type": "log",
                "role_arn": "",
                "query": "status >= 400 | select request_method, count(*) as cnt group by request_method ",
                "start_time": 1684311959,
                "end_time": 1684312259,
                "fire_result": {
                    "cnt": "49",
                    "request_method": "GET"
                },
                "raw_results": [
                    {
                        "cnt": "49",
                        "request_method": "GET"
                    },
                    {
                        "cnt": "3",
                        "request_method": "DELETE"
                    },
                    {
                        "cnt": "7",
                        "request_method": "POST"
                    },
                    {
                        "cnt": "6",
                        "request_method": "PUT"
                    }
                ],
                "raw_result_count": 4,
                "truncated": false,
                "dashboard_id": "",
                "chart_title": "",
                "is_complete": true,
                "power_sql_mode": "auto"
            }
        ],
        "fire_results": [
            {
                "cnt": "49",
                "request_method": "GET"
            }
        ],
        "fire_results_count": 1,
        "condition": "Count:[1] > 0; Condition:[49] > 20",
        "raw_condition": "Count:__count__ > 0; Condition:cnt > 20"
    },
    "time": "2023-05-17T08:30:59Z",
    "title": "Nginx Access Error Alert Triggered",
    "message": "Nginx has had 49 GET request errors in the last five minutes",
    "status": "error"
}

トレースデータ

トレースデータは、単一のリクエストに対するエンドツーエンドの処理を記録したもので、すべてのサービス呼び出しとその持続時間(処理時間)を含みます。各トレースデータは 1 つのトレースに対応します。トレースとは、分散システムを通じたトランザクションまたはプロセスの実行パスを表します。OpenTracing 標準によると、トレースはスパン(Spans)から構成される有向非循環グラフ(DAG)です。各スパンは、トレース内における名前付き・時刻付き・連続的な実行セグメントを表します。詳細については、「トレースデータのフォーマット」をご参照ください。