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

Simple Log Service:Simple Log Service Node.js SDK クイックスタート

最終更新日:Jul 18, 2026

Simple Log Service Node.js SDK を使用して、プロジェクトおよび Logstore の作成、ログの書き込み、およびログのクエリを行います。

前提条件

注意事項

この例では中国 (杭州) リージョンのパブリックエンドポイント https://cn-hangzhou.log.aliyuncs.com を使用します。同一リージョン内の他の Alibaba Cloud サービスから Simple Log Service にアクセスする場合は、内部エンドポイント https://cn-hangzhou-intranet.log.aliyuncs.com を使用してください。サポートされているリージョンとエンドポイントの詳細については、「エンドポイント」をご参照ください。

パラメーター

createProject

リクエストパラメーター

パラメーター

タイプ

必須

説明

projectName

String

はい

プロジェクトの名前。名前はグローバルに一意である必要があります。作成後に名前を変更することはできません。

名前は以下の要件を満たす必要があります。

  • 小文字、数字、ハイフン (-) を含めることができます。

  • 小文字で始まり、小文字または数字で終わる必要があります。

  • 長さは 3~63 文字である必要があります。

description

String

はい

プロジェクトの説明。説明は最大 64 文字まで指定でき、山括弧 (<>)、アポストロフィ (' )、バックスラッシュ (\)、二重引用符 (")、連続する 2 つのバックスラッシュ (\\) を含めることはできません。

resourceGroupId

String

いいえ

リソースグループの ID。このパラメーターを省略した場合、デフォルトのリソースグループが使用されます。詳細については、「リソースグループの作成」をご参照ください。

dataRedundancyType

String

いいえ

データ冗長タイプ。デフォルトはローカル冗長ストレージです。一部のリージョンでは、ローカル冗長ストレージとゾーン冗長ストレージの両方がサポートされています。プロジェクト作成後はデータ冗長タイプを変更できません。詳細については、「ストレージ冗長」をご参照ください。

  • LRS:ローカル冗長ストレージ

  • ZRS:ゾーン冗長ストレージ

レスポンスパラメーター

レスポンスパラメーターの詳細については、「CreateProject」をご参照ください。

createLogStore

リクエストパラメーター

パラメーター

タイプ

必須

説明

projectName

String

はい

プロジェクトの名前。Simple Log Service のプロジェクトは、異なるユーザーのリソースを分離し、特定のリソースへのアクセスを制御するために使用されます。「プロジェクトの管理」をご参照ください。

logstoreName

String

はい

Logstore の名前。名前はグローバルに一意である必要があります。作成後に名前を変更することはできません。

名前は以下の要件を満たす必要があります。

  • 小文字、数字、ハイフン (-)、アンダースコア (_) を含めることができます。

  • 小文字で始まり、小文字または数字で終わる必要があります。

  • 長さは 3~63 文字である必要があります。

ttl

int

いいえ

Data Retention Period(日数)。値は 1~3,650 の整数である必要があります。3,650 を指定すると、データは永久に保存されます。指定された保持期間が経過すると、ログは削除されます。

データ保持期間 (ttl) は以下の期間の合計です。

  • ホットストレージ期間 (hotTtl)

  • 低頻度アクセスストレージ期間 (infrequentAccessTtl)

  • アーカイブストレージ期間

shardCount

int

いいえ

シャード数。有効値:1~10。詳細については、「シャード」をご参照ください。

enableTracking

bool

いいえ

WebTracking を有効にするかどうかを指定します。

  • True:WebTracking を有効にします。Logstore はインターネットからの匿名での書き込みリクエストを受け入れます。これらのリクエストは認証されないため、Logstore にダーティデータが書き込まれる可能性があります。

  • False(デフォルト):WebTracking を無効にします。

説明

WebTracking を使用すると、ブラウザ、iOS アプリ、Android アプリからアクセス情報を収集できます。詳細については、「Web Tracking を使用したフロントエンドログの収集」をご参照ください。

appendMeta

bool

いいえ

パブリック IP の記録 機能を有効にするかどうかを指定します。

  • True:機能を有効にします。Simple Log Service は、ログのタグフィールドに以下の情報を追加します。

    • __client_ip__:クライアントのパブリック IP アドレス。

    • __receive_time__:ログがサーバーに到着した時刻(UNIX タイムスタンプ形式)。

  • False(デフォルト):機能を無効にします。

autoSplit

bool

いいえ

自動シャーディング: を有効にするかどうかを指定します。

maxSplitShard

int

いいえ

シャードの最大破片:自動シャーディング: を有効にした場合、1 つのシャードは最大 256 シャードに自動分割されます。

重要

autoSplit を True に設定する場合は、このパラメーターが必要です。

encryptConf

dict

いいえ

暗号化構成のデータ構造。enableencrypt_type、および user_cmk_info パラメーターを含みます。詳細については、「EncryptConf」および「データ暗号化」をご参照ください。

telemetryType

String

いいえ

観測可能なデータのタイプ。有効値:

  • None(デフォルト):ログデータ。

  • metric:メトリックデータ。metric を指定した場合、以下のパラメーターのみ有効になります。

    • logstoreName

    • ttl

    • shardCount

    • autoSplit

    • maxSplitShard

    • appendMeta

重要

Logstore 作成後は、このパラメーターを変更できません

hotTtl

int

いいえ

Logstore 内のデータのホットストレージ期間(日数)。最小値は 7 で、ttl の値を超えてはいけません。-1 を指定すると、保持期間 (ttl) 内のすべてのデータがホットストレージ階層に保存されます。

ホットストレージ期間が終了すると、データは低頻度アクセスストレージに移動します。ホットストレージ、低頻度アクセスストレージ、アーカイブストレージ、およびデータ変換プロセスの詳細については、「インテリジェント階層ストレージの管理」をご参照ください。

  • データは最低でも 7 日間ホットストレージに保持された後でないと、低頻度アクセスストレージに移動できません。また、低頻度アクセスストレージには最低でも 30 日間保持された後でないと、アーカイブストレージに移動できません。

  • データは最低でも 30 日間ホットストレージに保持された後でないと、アーカイブストレージに移動できません。

mode

String

いいえ

Simple Log Service には 標準 および クエリ の 2 種類の Logstore があります。

  • 標準(デフォルト):リアルタイムモニタリング、インタラクティブな分析、エンドツーエンドの可観測性など、Simple Log Service の完全なデータ分析機能をサポートします。

  • クエリ:標準 タイプのおよそ半分のインデックスコストで高性能クエリをサポートします。このタイプは SELECT 文をサポートせず、データ量が大きく、保持期間が長く、ログ分析の要件がないシナリオに適しています。

詳細については、「Logstore のタイプ」をご参照ください。

infrequentAccessTtl

int

いいえ

Logstore 内のデータの低頻度アクセスストレージ期間(日数)。詳細については、「インテリジェント階層ストレージの管理」をご参照ください。

レスポンスパラメーター

レスポンスパラメーターの詳細については、「CreateLogStore」をご参照ください。

createIndex

リクエストパラメーター

パラメーター

タイプ

必須

説明

projectName

String

はい

プロジェクトの名前。Simple Log Service のプロジェクトは、異なるユーザーのリソースを分離し、特定のリソースへのアクセスを制御するために使用されます。「プロジェクトの管理」をご参照ください。

logstoreName

String

はい

Logstore の名前。Simple Log Service の Logstore は、ログの収集、保存、およびクエリに使用されます。「Logstore の管理」をご参照ください。

index

index

はい

インデックス構成。

レスポンスパラメーター

レスポンスパラメーターの詳細については、「CreateIndex」をご参照ください。

getLogs

リクエストパラメーター

パラメーター

タイプ

必須

説明

projectName

String

はい

プロジェクトの名前。Simple Log Service のプロジェクトは、異なるユーザーのリソースを分離し、特定のリソースへのアクセスを制御するために使用されます。「プロジェクトの管理」をご参照ください。

logstoreName

String

はい

Logstore の名前。Simple Log Service の Logstore は、ログの収集、保存、およびクエリに使用されます。「Logstore の管理」をご参照ください。

from

int

はい

クエリする時間範囲の開始時刻。値は UNIX タイムスタンプです。

説明
  • Logstore がログを受信した時刻。__tag__:__receive_time__ フィールドは Simple Log Service の予約済みフィールドです。

  • 開始時刻と終了時刻で定義される時間範囲は左閉右開区間です。つまり、開始時刻を含み、終了時刻を含みません。両者が同じ場合、区間は無効となり、エラーが返されます。

  • 完全なデータを確実にクエリできるように、クエリ時間範囲を分単位で指定してください。分析文にも時間範囲を指定した場合、その時間範囲がクエリと分析に使用されます。

  • 秒単位で時間範囲を指定したい場合は、日付および時刻関数を使用して時間形式を変換できます。例:

    • * | SELECT * FROM log WHERE from_unixtime(__time__) > from_unixtime(1664186624) AND from_unixtime(__time__) < now()

    • * | SELECT * FROM log WHERE __time__ > to_unixtime(date_parse('2022-10-19 15:46:05', '%Y-%m-%d %H:%i:%s')) AND __time__ < to_unixtime(now())

to

int

はい

クエリする時間範囲の終了時刻。値は UNIX タイムスタンプです。

説明
  • Logstore がログを受信した時刻。__tag__:__receive_time__ フィールドは Simple Log Service の予約済みフィールドです。

  • 開始時刻と終了時刻で定義される時間範囲は左閉右開区間です。つまり、開始時刻を含み、終了時刻を含みません。両者が同じ場合、区間は無効となり、エラーが返されます。

  • 完全なデータを確実にクエリできるように、クエリ時間範囲を分単位で指定してください。分析文にも時間範囲を指定した場合、その時間範囲がクエリと分析に使用されます。

  • 秒単位で時間範囲を指定したい場合は、日付および時刻関数を使用して時間形式を変換できます。例:

    • * | SELECT * FROM log WHERE from_unixtime(__time__) > from_unixtime(1664186624) AND from_unixtime(__time__) < now()

    • * | SELECT * FROM log WHERE __time__ > to_unixtime(date_parse('2022-10-19 15:46:05', '%Y-%m-%d %H:%i:%s')) AND __time__ < to_unixtime(now())

topic

String

いいえ

ログのトピック。デフォルト値は空文字列です。詳細については、「ログトピック」をご参照ください。

query

String

いいえ

検索または分析文。詳細については、「ログのクエリと分析」をご参照ください。専用 SQL を使用するには、分析文に set session parallel_sql=true; を追加します。例:* | set session parallel_sql=true; select count(*) as pv。一般的なクエリと分析の問題については、「ログのクエリと分析時の一般的なエラー」をご参照ください。

説明

query パラメーターに分析文(SQL ステートメント)が含まれている場合、line パラメーターおよび offset パラメーターは無視されます。これらのパラメーターは 0 に設定し、SQL ステートメント内で LIMIT 句を使用してページネーションを行うことを推奨します。詳細については、「クエリと分析結果のページネーション」をご参照ください。

line

int

いいえ

このパラメーターは query パラメーターに検索文が含まれている場合にのみ適用されます。返されるログの最大数を指定します。値の範囲:0~100。デフォルト:100。

offset

int

いいえ

このパラメーターは query パラメーターに検索文が含まれている場合にのみ適用されます。結果を返す前にスキップするログの数を指定します。デフォルト:0。

reverse

bool

いいえ

タイムスタンプの降順でログを返すかどうかを指定します。精度は分単位です。

  • True:タイムスタンプの降順でログを返します。

  • False(デフォルト):タイムスタンプの昇順でログを返します。

重要
  • query パラメーターに検索文が含まれている場合、reverse パラメーターは有効で、返されるログのソート順を指定します。

  • query パラメーターに分析文が含まれている場合、reverse パラメーターは無視されます。ソート順は分析文内の ORDER BY 句で指定されます。

powerSql

bool

いいえ

専用 SQL を使用するかどうかを指定します。詳細については、「高性能かつ高精度なクエリと分析(専用 SQL)」をご参照ください。

  • True:専用 SQL を使用します。

  • False(デフォルト):標準 SQL を使用します。

query パラメーター内で 専用 SQL を有効にすることもできます。

レスポンスパラメーター

レスポンスパラメーターの詳細については、「GetLogs」をご参照ください。

コード例

Node.js コードによるログ収集

以下の例では、SLSQuickStart.js という名前の Node.js スクリプトを使用して、プロジェクト、Logstore、およびインデックスを作成し、ログデータを書き込んでクエリします。


const Client = require('@alicloud/log')
const sls = new Client({
    // この例では、AccessKey ID および AccessKey Secret は環境変数から読み取ります。
    accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
    accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
    // Simple Log Service のエンドポイント。この例では中国 (杭州) リージョンのエンドポイントを使用します。ご利用のリージョンのエンドポイントに置き換えてください。
    endpoint: 'cn-hangzhou.log.aliyuncs.com'
})
// 必須。プロジェクト名。
const projectName = "aliyun-test-node-project"
// 必須。Logstore 名。
const logstoreName = "request_log"


async function test() {
    // プロジェクトを作成します。
    await sls.createProject(projectName, {
        description: 'test'
    })
    // Logstore を作成します。
    await sls.createLogStore(projectName, logstoreName, {
        // 必須。データ保持期間(日数)。3650 を指定すると、データは永久に保存されます。
        ttl: 3600,
        // 必須。シャード数。
        shardCount: 2
    })
    // インデックスを作成します。
    const index = {
        "keys": {
            "request_method": {
                // クエリの大文字と小文字を区別するかどうかを指定します。`false` を指定すると、大文字と小文字を区別しません。
                "caseSensitive": false,
                // このフィールドに対して統計分析を有効にするかどうかを指定します。
                "doc_value": true,
                "token": ["\n", "\t", ";", ",", "=", ":"],
                "type": "text"
            }, "status": {
                // クエリの大文字と小文字を区別するかどうかを指定します。`false` を指定すると、大文字と小文字を区別しません。
                "caseSensitive": false,
                // このフィールドに対して統計分析を有効にするかどうかを指定します。
                "doc_value": true,
                "token": ["\n", "\t", ";", ",", "=", ":"],
                "type": "long"
            }
        },
    }
    await sls.createIndex(projectName, logstoreName, index)
    // ログを書き込みます。
    const logGroup = {
        logs: [
          { content: { request_method: 'GET', status: '200' }, timestamp: Math.floor(new Date().getTime() / 1000) },
          { content: { request_method: 'GET', status: '500' }, timestamp: Math.floor(new Date().getTime() / 1000) },
          { content: { request_method: 'GET', status: '200' }, timestamp: Math.floor(new Date().getTime() / 1000) },
          { content: { request_method: 'POST', status: '500'}, timestamp: Math.floor(new Date().getTime() / 1000) }
        ],
        tags: [{ tag1: 'testTag' }],
        topic: 'testTopic',
        source: 'testSource'
      };
      await sls.postLogStoreLogs(projectName, logstoreName, logGroup);
      // クエリ例 1:過去 1 日間のログをクエリします。
      const from = new Date();
      from.setDate(from.getDate() - 1);
      const to = new Date();
      const res = await sls.getLogs(projectName, logstoreName, from, to);
      
      // クエリ例 2:分析文を使用して過去 10 分間のログ数をカウントします。
      // const from = new Date();
      // from.setSeconds(from.getSeconds() - 600)
      // const to = new Date();
      // query = '* | select count(*) as count';
      // topic = 'testTopic';
    
      // const res = await sls.getLogs(projectName,logstoreName,from,to,{
      //     query: query,
      //     topic: topic,
      //     line: 100,
      //     offset: 0,
      //     reverse: false,
      //     powersql: false
      // });
      
      console.log(res)
}
// 関数を実行します。
test()

サンプルレスポンス:

[
  {
    request_method: 'GET',
    status: '200',
    __topic__: 'testTopic',
    __source__: 'testSource',
    '__tag__:tag1': 'testTag',
    __time__: '1744882259'
  },
  {
    request_method: 'GET',
    status: '500',
    __topic__: 'testTopic',
    __source__: 'testSource',
    '__tag__:tag1': 'testTag',
    __time__: '1744882259'
  },
  {
    request_method: 'GET',
    status: '200',
    __topic__: 'testTopic',
    __source__: 'testSource',
    '__tag__:tag1': 'testTag',
    __time__: '1744882259'
  },
  {
    request_method: 'POST',
    status: '500',
    __topic__: 'testTopic',
    __source__: 'testSource',
    '__tag__:tag1': 'testTag',
    __time__: '1744882259'
  }
]

以下の表に、その他のコード例を示します。

GitHub ソースコード

説明

integration.test.js

プロジェクト、Logstore、およびインデックスの作成。ログおよび Logstore の書き込みとクエリ。ログディストリビューションの取得。

Logtail を使用した Node.js ログの収集

Logtail を使用して Node.js アプリケーションの log4js ログを収集する方法については、「Node.js ログの収集」をご参照ください。