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

Simple Log Service:ストアの管理

最終更新日:Aug 27, 2026

ストアは、SLS におけるデータストレージおよびクエリの基本的な単位です。SLS は、さまざまなデータに対応するため、Logstore、Metricstore、Eventstore という 3 種類のストアタイプを提供しています。

ストアタイプの選択

これらのストアタイプは、基盤となるデータモデルが異なります。データ構造 (ログ、メトリック、またはイベント) に合わせてタイプを選択してください。特別な要件がない場合は、デフォルトで Logstore を使用します。

ストアタイプ

説明

Logstore

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

  • トレース:単一リクエストの処理情報を記録するもので、サービスコールや処理期間などが含まれます。

Metricstore

メトリック:一意の識別子と一連のデータポイントで構成される時系列です。時系列データを効率的に保存し、クエリするには Metricstore を使用します。

Eventstore

イベント:監視アラートや定期的な検査の結果など、重要な出来事の記録です。離散的なイベントデータを保存するには Eventstore を使用します。

Logstore、Metricstore、Eventstore は、SLS コンソールでは異なるタブにグループ化されています。Logstore は [Log Storage] タブに、Metricstore は [Time Series Storage] タブに表示されます。作成した Metricstore (たとえば、名前が aliyun-prom- で始まるもの) が Logstore のリストで見つからない場合は、[Time Series Storage] タブに切り替えて表示してください。

Logstore

Logstore は、ログデータを保存し、クエリするための基本的な単位です。各 Logstore はプロジェクトに属します。1 つのプロジェクト内に複数の Logstore を作成して、同じアプリケーションから得られるさまざまな種類のログを分離できます。たとえば、アプリ A の操作ログ、アプリケーションログ、アクセスログを収集するには、app-a という名前のプロジェクトを作成します。このプロジェクト内に、operation_logapplication_logaccess_log という名前の Logstore を作成して、各ログタイプを個別に保存します。

ログの書き込み、クエリ、分析、処理、消費、または転送を行う際は、Logstore を指定します:

  • ログを Logstore に収集して書き込みます。

  • ログを Logstore に保存して、処理、消費、または配信します。

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

Metricstore

Metricstore は、時系列データ (メトリック) を保存し、クエリするための基本的な単位です。各 Metricstore はプロジェクトに属します。1 つのプロジェクトに複数の Metricstore を作成して、さまざまな種類の時系列データを分離します。たとえば、基本的なホスト監視データ、クラウドサービス監視データ、アプリケーション監視データを収集するには、demo-monitor という名前のプロジェクトを作成します。次に、このプロジェクト内に host-metricscloud-service-metricsapp-metrics という名前の Metricstore を作成して、これらのデータタイプを個別に保存します。

時系列データの書き込み、クエリ、分析、または消費を行う際は、Metricstore を指定します:

  • 収集単位として、時系列データを Metricstore に収集します。

  • Metricstore を使用して時系列データを保存し、分析および消費します。

  • Prometheus クエリ言語 (PromQL)、SQL-92、または SQL+PromQL 構文を使用して、時系列データのクエリと分析を行います。

Eventstore

Eventstore は、イベントデータを保存し、クエリするための基本的な単位です。各 Eventstore はプロジェクトに属します。1 つのプロジェクトに複数の Eventstore を作成して、インフラストラクチャの異常イベント、ビジネスアプリケーションイベント、カスタムイベントなど、さまざまなイベントタイプを分離します。

イベントデータの書き込み、クエリ、分析、または消費を行う際は、Eventstore を指定します:

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

  • Eventstore をストレージユニットとして、イベントデータを保存し、消費操作を実行します。

関連概念

ロググループ

ロググループは、複数のログをバンドルした基本的な読み書き単位です。同じグループ内のログは、IP アドレスやソースなどのメタデータを共有します。バンドルすることで、I/O 操作が減り、効率が向上します。グループの最大サイズは 5 MB です。

Log group

ログ

ログは、システム内のイベントや変更を時系列で記録したものです。テキストファイル、システムイベント、データベースの BinLog、または時系列データを表すことができます。SLS では、ログは topic、time、content、source、tags の 5 つのフィールドを持つ半構造化モデルを使用します。次の表に、形式の要件を示します。

フィールド

説明

形式

トピック

SLS は、予約済みフィールドの __topic__ を使用してログのトピックを識別します。これによって、異なるサービス、ユーザー、またはインスタンスによって生成されたログを区別できます。たとえば、システムにフロントエンドの HTTP リクエスト処理、キャッシング、ロジック処理、およびストレージモジュールが含まれている場合、各モジュールのログにトピック (たとえば、http_modulecache_modulelogic_modulestore_module) を設定します。ログが同じ Logstore に収集された後、トピックを使用してそのソースをすばやく識別できます。ログのトピックは通常、Logtail 設定のグローバル設定で構成されます。

Logstore、トピック、シャードの関係は次のとおりです:

image

0 バイトから 128 バイトまでの文字列で、空の文字列も含まれます。

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

Time

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

UNIX タイムスタンプ。

Content

ログのコンテンツであり、1 つ以上の Key:Value ペアで構成されます。

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

Key:Value 形式については、以下で説明します。

  • キー:1 バイトから 128 バイトまでの UTF-8 文字列で、文字、数字、アンダースコア (_) で構成されます。数字で始めることはできません。以下の予約済みフィールド名は使用できません。

    • __time__

    • __source__

    • __topic__

    • __partition_time__

    • _extract_others_

    • __extract_others__

  • 値:最大 1 MB の任意の文字列。

Source

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

0 バイトから 128 バイトまでの文字列。

Tags

ログタグには、以下が含まれます:

  • カスタムタグ:PutLogs API を呼び出してログを書き込むときに追加できるタグです。

  • システムタグ:SLS がログに追加するタグで、__client_ip____receive_time__ が含まれます。

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

次の例では、Web サイトのアクセスログを使用して、生ログと SLS のデータモデルとのマッピングを示します。

  • 生ログ

    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 フィールドに保存されます。

    __source__:192.xxx.xxx.35
    __tag__:__hostname__:iZxxxxxxxxxxxxxxkw0Z
    __tag__:__path__:/opt/log.txt
    __tag__:__receive_time__:1620639668
    __topic__:
    content: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.xxx.xxx.6 Safari/537.36
  • 正規表現モードで収集されたログ。ログコンテンツは、設定された正規表現に基づいて複数のキーと値のペアに抽出され、構造化されます。

    解析された Nginx アクセスログの例には、次のキーと値のペアが含まれています:

    • remote_addr127.0.0.1

    • request_methodGET

    • request_uri/index.html

    • request__protocolHTTP/1.1

    • status200

    • body_bytes_sent612

    • http_user_agent:Mozilla/5.0 ブラウザー情報

    • http_referer-

    • time_local01/Mar/2021:12:36:49 +0800

    • __source__:ログソース IP

    • __tag__:__path__/opt/log.txt

メトリック

時系列データは、メトリック識別子とデータポイントで構成されます。同じ識別子を持つポイントが時系列を形成します。SLS モデルは、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="") を書き込まないでください。空の値のラベルは Prometheus データモデルでは無効であり、PromQL の集計中にエラーを引き起こします。

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

__time_nano__

タイムスタンプは複数の精度 (s、ms、us、ns) をサポートしますが、一貫した計算のためにクエリ結果では常にマイクロ秒 (us) に正規化されます。

1585727297293000

__value__

値。

36.0

説明

トピック、ソース、Tags などのカスタムフィールドは、SDK 経由で書き込まれると Metricstore には保存されません。詳細については、「SDK によるメトリックの送信」をご参照ください。

次の例は、指定された時間範囲内の process_resident_memory_bytes メトリックのすべての生時系列データをクエリする例です。

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

クエリ結果には、__name__ (メトリック名)、__labels__ (クラスター、インスタンス、ジョブ、名前空間、ノードなどのキーと値のペアを含むラベル情報)、__time_nano__ (タイムスタンプ)、__value__ (メトリック値) の 4 つの列が含まれます。

イベント

イベントは、重要なデータレコード (監視アラートや定期的な検査ジョブの結果など) です。SLS のイベントデータは、CloudEvents 仕様に準拠しており、次の表で説明します。

フィールドタイプ

フィールド名

必須

データ形式

説明

プロトコル

specversion

はい

文字列

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

id

はい

文字列

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

source

はい

文字列

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

type

はい

文字列

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

subject

いいえ

文字列

source フィールドに追加情報 (イベントをトリガーしたオブジェクトなど) を提供します。

datacontenttype

いいえ

文字列

data 値のコンテンツタイプ。デフォルトは 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"
}

トレース

トレースは、単一リクエストのエンドツーエンドの処理を記録するもので、すべてのサービスコールとその所要時間が含まれます。トレースは、分散システムを介したトランザクションまたはプロセスの実行パスを表します。OpenTracing 標準に従い、トレースはスパンの有向非巡回グラフ (DAG) であり、各スパンは、名前が付けられ、時間が計測された、連続的な実行セグメントを表します。完全なデータ構造は、トレースデータ形式で定義されています。