全部产品
Search
文档中心

Simple Log Service:Pengantar Cepat SDK Node.js

更新时间:Nov 09, 2025

Topik ini menjelaskan cara menggunakan Simple Log Service (SLS) SDK for Node.js untuk melakukan operasi umum seperti membuat Proyek, membuat logstore, menulis log, dan mengkueri log.

Prasyarat

Penting

Contoh ini menggunakan titik akhir publik wilayah Tiongkok (Hangzhou): https://cn-hangzhou.log.aliyuncs.com. Jika Anda mengakses SLS dari layanan Alibaba Cloud lainnya di wilayah yang sama dengan proyek Anda, gunakan titik akhir internal: https://cn-hangzhou-intranet.log.aliyuncs.com. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung oleh SLS, lihat Titik Akhir.

Parameter

createProject

Parameter permintaan

Parameter

Tipe

Diperlukan

Deskripsi

projectName

String

Ya

Nama proyek. Nama tersebut harus unik secara global. Anda tidak dapat mengubah nama setelah proyek dibuat.

Nama tersebut harus memenuhi persyaratan berikut:

  • Nama dapat berisi huruf kecil, angka, dan tanda hubung (-).

  • Nama harus dimulai dengan huruf kecil dan diakhiri dengan huruf kecil atau angka.

  • Nama harus memiliki panjang 3 hingga 63 karakter.

description

String

Ya

Deskripsi proyek. Deskripsi tersebut dapat memiliki panjang hingga 64 karakter. Tidak boleh berisi tanda kurung sudut (<>), tanda kutip tunggal ('), garis miring terbalik (\), atau tanda kutip ganda (").

resourceGroupId

String

Tidak

ID kelompok sumber daya. Jika Anda tidak menentukan parameter ini, kelompok sumber daya default akan digunakan. Untuk informasi lebih lanjut, lihat Buat kelompok sumber daya.

dataRedundancyType

String

Tidak

Tipe redundansi penyimpanan default adalah penyimpanan redundan lokal. Beberapa wilayah mendukung penyimpanan redundan lokal dan zona-redundan. Tipe redundansi penyimpanan tidak dapat diubah setelah proyek dibuat. Untuk informasi lebih lanjut, lihat Redundansi Penyimpanan.

  • LRS: penyimpanan redundan lokal

  • ZRS: penyimpanan redundan zona

Parameter respons

Untuk informasi lebih lanjut tentang parameter respons, lihat CreateProject.

createLogStore

Parameter permintaan

Parameter

Tipe

Diperlukan

Deskripsi

projectName

String

Ya

Nama proyek. Proyek dalam Simple Log Service digunakan untuk mengisolasi sumber daya pengguna yang berbeda dan mengontrol akses ke sumber daya tertentu. Lihat Kelola proyek.

logstoreName

String

Ya

Nama logstore. Nama tersebut harus unik secara global. Anda tidak dapat mengubah nama setelah proyek dibuat.

Nama tersebut harus memenuhi persyaratan berikut:

  • Dapat berisi huruf kecil, angka, tanda hubung (-), dan garis bawah (_).

  • Harus dimulai dengan huruf kecil dan diakhiri dengan huruf kecil atau angka.

  • Harus memiliki panjang 3 hingga 63 karakter.

ttl

int

Tidak

Data Retention Period, dalam hari. Nilai valid: 1 hingga 3650. Jika Anda menetapkan parameter ini ke 3650, data disimpan secara permanen. Jika periode retensi yang ditentukan berakhir, data log akan dihapus.

Periode retensi data (ttl) adalah jumlah dari periode berikut:

  • Periode penyimpanan panas (hotTtl)

  • Periode penyimpanan IA (infrequentAccessTtl)

  • Periode penyimpanan arsip

shardCount

int

Tidak

Jumlah shard. Nilai valid: 1 hingga 10. Untuk informasi lebih lanjut, lihat Rentang Shard.

enableTracking

bool

Tidak

Menentukan apakah akan mengaktifkan fitur WebTracking.

  • True: Mengaktifkan fitur WebTracking, memungkinkan logstore menerima permintaan tulis anonim dari internet tanpa autentikasi yang valid. Ini dapat menghasilkan data kotor.

  • False (default): Menonaktifkan WebTracking.

Catatan

WebTracking memungkinkan Anda mengumpulkan informasi akses dari berbagai browser, serta dari aplikasi iOS dan Android. Untuk informasi lebih lanjut, lihat Gunakan Web Tracking untuk mengumpulkan log.

appendMeta

bool

Tidak

Menentukan apakah akan mengaktifkan fitur Record Public IP Address.

  • true: Menambahkan alamat IP klien. Setelah fitur ini diaktifkan, SLS secara otomatis menambahkan informasi berikut ke bidang tag log.

    • __client_ip__: Alamat IP publik klien.

    • __receive_time__: Waktu kedatangan log, dalam format stempel waktu UNIX.

  • false (default): Tidak menambahkan alamat IP klien.

autoSplit

bool

Tidak

Menentukan apakah akan mengaktifkan Automatic Shard Splitting.

maxSplitShard

int

Tidak

Maximum Split Count: Setelah Anda mengaktifkan Auto Shard Splitting, sebuah shard dapat dipisah secara otomatis menjadi maksimal 256 partisi. Parameter ini diperlukan jika parameter auto_split diatur ke True.

Penting

Parameter ini diperlukan jika auto_split diatur ke true.

encryptConf

dict

Tidak

Struktur data untuk konfigurasi enkripsi. Ini mencakup parameter enable, encrypt_type, dan user_cmk_info. Untuk informasi lebih lanjut, lihat EncryptConf dan Enkripsi Data.

telemetryType

String

Tidak

Tipe data observabilitas. Nilai valid:

  • None: Data log. Ini adalah nilai default.

  • Metrics: Metrik. Dalam hal ini, hanya parameter berikut yang berlaku:

    • logstoreName

    • ttl

    • shardCount

    • autoSplit

    • maxSplitShard

    • appendMeta

Penting

Parameter ini tidak dapat diubah setelah dibuat.

hotTtl

int

Tidak

Periode penyimpanan data di lapisan penyimpanan panas logstore, dalam hari. Nilai minimum adalah 7. Nilainya tidak boleh lebih besar dari nilai ttl. Nilai -1 menunjukkan bahwa semua data dalam periode retensi (ttl) disimpan sebagai penyimpanan panas.

Setelah periode penyimpanan panas berakhir, data dikonversi ke penyimpanan IA. Untuk informasi lebih lanjut tentang konsep dan proses konversi penyimpanan panas, penyimpanan IA, dan penyimpanan arsip, lihat Kelola penyimpanan tiered cerdas.

  • Data panas harus disimpan setidaknya 7 hari sebelum dapat dikonversi ke penyimpanan IA. Data IA harus disimpan setidaknya 30 hari sebelum dapat dikonversi ke penyimpanan arsip.

  • Data panas harus disimpan setidaknya 30 hari sebelum dapat dikonversi ke penyimpanan arsip.

mode

String

Tidak

Simple Log Service menyediakan dua jenis logstore: Standard dan Query.

  • standard (default): Mendukung analitik data satu atap. Jenis ini cocok untuk skenario seperti pemantauan waktu nyata, analisis interaktif, dan membangun sistem observabilitas lengkap.

  • query: Mendukung kueri berperforma tinggi. Biaya lalu lintas indeks sekitar setengah dari jenis Standard. Namun, jenis ini tidak mendukung pernyataan SELECT dan cocok untuk skenario dengan volume data besar, periode penyimpanan panjang (mingguan, bulanan, atau lebih lama), atau tanpa analisis log.

Untuk informasi lebih lanjut, lihat Tipe Logstore.

infrequentAccessTtl

int

Tidak

Periode penyimpanan data di lapisan penyimpanan IA logstore, dalam hari. Data IA harus disimpan setidaknya 30 hari sebelum dapat dikonversi ke penyimpanan arsip. Untuk informasi lebih lanjut, lihat Kelola penyimpanan tiered cerdas.

Parameter respons

Untuk informasi lebih lanjut tentang parameter respons, lihat CreateLogStore.

createIndex

Parameter permintaan

Parameter

Tipe

Diperlukan

Deskripsi

projectName

String

Ya

Nama proyek. Proyek dalam Simple Log Service digunakan untuk mengisolasi sumber daya pengguna yang berbeda dan mengontrol akses ke sumber daya tertentu. Lihat Kelola proyek.

logstoreName

String

Ya

Nama logstore. Logstore dalam Simple Log Service digunakan untuk mengumpulkan, menyimpan, dan menanyakan log. Lihat Kelola logstore.

index

index

Ya

Konfigurasi indeks.

Parameter respons

Untuk informasi lebih lanjut tentang parameter respons, lihat CreateIndex.

getLogs

Parameter permintaan

Parameter

Tipe

Diperlukan

Deskripsi

projectName

String

Ya

Nama proyek. Proyek dalam Simple Log Service digunakan untuk mengisolasi sumber daya pengguna yang berbeda dan mengontrol akses ke sumber daya tertentu. Lihat Kelola proyek.

logstoreName

String

Ya

Nama logstore. Logstore dalam Simple Log Service digunakan untuk mengumpulkan, menyimpan, dan menanyakan log. Lihat Kelola logstore.

from

int

Ya

Awal rentang waktu untuk kueri. Nilainya adalah stempel waktu UNIX.

Catatan
  • Waktu ketika logstore menerima log. Bidang __tag__:__receive_time__ adalah bidang cadangan dari Simple Log Service.

  • Rentang waktu yang didefinisikan oleh waktu mulai dan waktu akhir. Rentang waktu tersebut adalah interval tertutup di sebelah kiri dan terbuka di sebelah kanan. Interval mencakup waktu mulai dari rentang waktu, tetapi tidak mencakup waktu akhir. Jika keduanya sama, interval tidak valid dan kesalahan akan dikembalikan.

  • Untuk memastikan bahwa semua data dapat ditanyakan, tentukan rentang waktu kueri yang akurat hingga menit. Jika Anda juga menentukan rentang waktu dalam pernyataan analitik, rentang waktu tersebut digunakan untuk kueri dan analisis.

  • Jika Anda ingin menentukan rentang waktu yang akurat hingga detik, Anda dapat menggunakan fungsi tanggal dan waktu untuk mengonversi format waktu. Contoh:

    • * | 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

Ya

Akhir rentang waktu untuk kueri. Nilainya adalah stempel waktu UNIX.

Catatan
  • Waktu ketika logstore menerima log. Bidang __tag__:__receive_time__ adalah bidang cadangan dari Simple Log Service.

  • Rentang waktu yang didefinisikan oleh waktu mulai dan waktu akhir. Rentang waktu tersebut adalah interval tertutup di sebelah kiri dan terbuka di sebelah kanan. Interval mencakup waktu mulai dari rentang waktu, tetapi tidak mencakup waktu akhir. Jika keduanya sama, interval tidak valid dan kesalahan akan dikembalikan.

  • Untuk memastikan bahwa semua data dapat ditanyakan, tentukan rentang waktu kueri yang akurat hingga menit. Jika Anda juga menentukan rentang waktu dalam pernyataan analitik, rentang waktu tersebut digunakan untuk kueri dan analisis.

  • Jika Anda ingin menentukan rentang waktu yang akurat hingga detik, Anda dapat menggunakan fungsi tanggal dan waktu untuk mengonversi format waktu. Contoh:

    • * | 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

Tidak

Topik log. Nilai defaultnya adalah string kosong. Untuk informasi lebih lanjut, lihat Topik log.

query

String

Tidak

Pernyataan pencarian atau pernyataan analitik. Untuk informasi lebih lanjut, lihat Gambaran umum kueri dan analisis. Untuk menggunakan Dedicated SQL, tambahkan set session parallel_sql=true; ke pernyataan analitik dalam parameter query. Contoh: * | set session parallel_sql=true; select count(*) as pv. Untuk informasi tentang masalah umum kueri dan analisis, lihat Kesalahan umum yang terjadi saat Anda menanyakan dan menganalisis log.

Catatan

Jika parameter query berisi pernyataan analitik (pernyataan SQL), parameter line dan offset dari operasi API ini tidak valid. Atur parameter ini ke 0 dan gunakan klausa LIMIT dalam pernyataan SQL untuk paging. Untuk informasi lebih lanjut, lihat Tampilkan hasil kueri dan analisis per halaman.

line

int

Tidak

Parameter ini hanya valid jika parameter query adalah pernyataan pencarian. Ini menentukan jumlah maksimum log yang akan dikembalikan. Nilai minimum adalah 0. Nilai maksimum adalah 100. Nilai default adalah 100.

offset

int

Tidak

Parameter ini hanya valid jika parameter query adalah pernyataan pencarian. Ini menentukan baris awal kueri. Nilai default adalah 0.

reverse

bool

Tidak

Menentukan apakah akan mengembalikan log dalam urutan turun berdasarkan timestamp mereka. Presisi adalah hingga menit.

  • true: Mengembalikan log dalam urutan turun berdasarkan timestamp mereka.

  • false (default): Mengembalikan log dalam urutan naik berdasarkan timestamp mereka.

Penting
  • Jika parameter query adalah pernyataan pencarian, parameter reverse valid dan menentukan metode pengurutan untuk log yang dikembalikan.

  • Jika parameter query adalah pernyataan pencarian dan analitik, parameter reverse tidak valid. Metode pengurutan ditentukan oleh klausa order by dalam pernyataan SQL analitik.

powerSql

bool

Tidak

Apakah akan menggunakan Dedicated SQL. Untuk informasi lebih lanjut, lihat Kueri dan analisis tepat berperforma tinggi (Dedicated SQL).

  • true: Menggunakan Dedicated SQL.

  • false (default): Menggunakan Standard SQL.

Selain menggunakan parameter powerSql, Anda juga dapat menggunakan parameter query untuk mengonfigurasi Dedicated SQL.

Parameter respons

Untuk informasi lebih lanjut tentang parameter respons, lihat GetLogs.

Contoh

Tulis kode Node.js untuk mengumpulkan log

Dalam contoh ini, file bernama SLSQuickStart.js dibuat. File tersebut memanggil operasi API untuk membuat proyek, membuat logstore, membuat indeks, menulis data log, dan menanyakan data log. Berikut adalah contoh kode:


const Client = require('@alicloud/log')
const sls = new Client({
    // Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
    accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
    accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
    // Titik akhir SLS. Contoh ini menggunakan titik akhir wilayah Tiongkok (Hangzhou). Gantilah dengan titik akhir aktual.
    endpoint: 'cn-hangzhou.log.aliyuncs.com'
})
// Diperlukan. Nama proyek.
const projectName = "aliyun-test-node-project"
// Diperlukan. Nama logstore.
const logstoreName = "request_log"


async function test() {
    // Buat proyek.
    await sls.createProject(projectName, {
        description: 'test'
    })
    // Buat logstore.
    await sls.createLogStore(projectName, logstoreName, {
        // Diperlukan. Periode retensi data dalam hari. Nilai 3650 menunjukkan bahwa data disimpan secara permanen.
        ttl: 3600,
        // Diperlukan. Jumlah shard.
        shardCount: 2
    })
    // Buat indeks.
    const index = {
        "keys": {
            "request_method": {
                // Menentukan apakah kueri peka huruf besar-kecil. false menunjukkan bahwa kueri tidak peka huruf besar-kecil.
                "caseSensitive": false,
                // Menentukan apakah akan mengaktifkan analisis statistik untuk bidang tersebut.
                "doc_value": true,
                "token": ["\n", "\t", ";", ",", "=", ":"],
                "type": "text"
            }, "status": {
                // Menentukan apakah kueri peka huruf besar-kecil. false menunjukkan bahwa kueri tidak peka huruf besar-kecil.
                "caseSensitive": false,
                // Menentukan apakah akan mengaktifkan analisis statistik untuk bidang tersebut.
                "doc_value": true,
                "token": ["\n", "\t", ";", ",", "=", ":"],
                "type": "long"
            }
        },
    }
    await sls.createIndex(projectName, logstoreName, index)
    // Tulis log.
    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);
      // Contoh kueri 1: Kueri data log selama satu hari terakhir.
      const from = new Date();
      from.setDate(from.getDate() - 1);
      const to = new Date();
      const res = await sls.getLogs(projectName, logstoreName, from, to);
      
      // Contoh kueri 2: Gunakan pernyataan kueri untuk menghitung jumlah log dalam 10 menit terakhir.
      // 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)
}
// Jalankan fungsi.
test()

Berikut adalah contoh tanggapan:

[
  {
    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'
  }
]

Tabel berikut memberikan lebih banyak contoh kode untuk referensi Anda.

Sumber kode GitHub

Deskripsi

integration.test.js

Contoh cara membuat proyek, logstore, dan indeks, menulis log, menanyakan log dan logstore, serta mendapatkan distribusi log.

Kumpulkan log Node.js menggunakan Logtail

Untuk contoh cara menggunakan Logtail untuk mengumpulkan log log4js dari aplikasi Node.js, lihat Kumpulkan log Node.js.