Penyimpanan (store) adalah unit dasar untuk penyimpanan dan kueri data di SLS. SLS menyediakan tiga jenis penyimpanan untuk data berbeda: Logstore, Metricstore, dan Eventstore.
Pilih jenis toko
Jenis-jenis penyimpanan ini berbeda dalam model data dasarnya. Pilih jenis yang sesuai dengan struktur data Anda: log, metrik, atau event. Jika tidak ada kebutuhan khusus, gunakan Logstore secara default.
|
Tipe penyimpanan |
Deskripsi |
|
Logstore |
|
|
Metricstore |
Metrik: Deret waktu yang terdiri dari pengenal unik dan rangkaian titik data. Gunakan metricstore untuk menyimpan dan mengkueri data deret waktu secara efisien. |
|
Eventstore |
Event: Catatan kejadian penting, seperti alert pemantauan atau hasil inspeksi berkala. Gunakan eventstore untuk menyimpan data diskrit berbasis event. |
LogStore, Metricstore, dan Eventstore dikelompokkan dalam tab yang berbeda di Konsol SLS. LogStore muncul pada tab Log Storage, sedangkan Metricstore muncul pada tab Time Series Storage. Jika Anda tidak dapat menemukan Metricstore yang telah dibuat (misalnya, yang namanya diawali dengan aliyun-prom-) dalam daftar LogStore, beralihlah ke tab Time Series Storage untuk melihatnya.
Logstore
Logstore adalah unit dasar untuk menyimpan dan mengkueri data log. Setiap logstore termasuk dalam satu proyek. Anda dapat membuat beberapa logstore dalam satu proyek untuk mengisolasi jenis log yang berbeda dari aplikasi yang sama. Misalnya, untuk mengumpulkan log operasi, log aplikasi, dan log akses untuk aplikasi A, buat proyek bernama app-a. Dalam proyek ini, buat logstore bernama operation_log, application_log, dan access_log untuk menyimpan setiap jenis log secara terpisah.
Tentukan logstore saat menulis, mengkueri, menganalisis, memproses, mengonsumsi, atau mengirimkan log:
-
Kumpulkan dan tulis log ke logstore.
-
Simpan log di logstore untuk diproses, dikonsumsi, atau dikirimkan.
-
Buat indeks di logstore untuk mengkueri dan menganalisis log.
Metricstore
Metricstore adalah unit dasar untuk menyimpan dan mengkueri data deret waktu (metrik). Setiap metricstore termasuk dalam satu proyek. Buat beberapa metricstore dalam satu proyek untuk memisahkan jenis data deret waktu yang berbeda. Misalnya, untuk mengumpulkan data pemantauan host dasar, data pemantauan layanan cloud, dan data pemantauan aplikasi, buat proyek bernama demo-monitor. Kemudian, dalam proyek ini, buat metricstore bernama host-metrics, cloud-service-metrics, dan app-metrics untuk menyimpan jenis data tersebut secara terpisah.
Tentukan metricstore saat Anda menulis, mengkueri, menganalisis, atau mengonsumsi data deret waktu:
-
Kumpulkan data deret waktu ke dalam metricstore sebagai unit pengumpulan.
-
Gunakan metricstore untuk menyimpan data deret waktu guna analisis dan konsumsi.
-
Kueri dan analisis data deret waktu menggunakan Prometheus Query Language (PromQL), sintaks SQL-92, atau SQL+PromQL.
Eventstore
Eventstore adalah unit dasar untuk menyimpan dan mengkueri data event. Setiap eventstore termasuk dalam satu proyek. Buat beberapa eventstore dalam satu proyek untuk memisahkan jenis event yang berbeda, seperti event anomali infrastruktur, event aplikasi bisnis, dan event kustom.
Tentukan eventstore saat Anda menulis, mengkueri, menganalisis, atau mengonsumsi data event:
-
Kumpulkan data event dengan eventstore sebagai unit pengumpulan.
-
Simpan data event dan lakukan operasi konsumsi dengan eventstore sebagai unit penyimpanan.
Referensi
Kelompok log
Kelompok log (log group) menggabungkan beberapa log sebagai unit dasar baca/tulis. Log dalam kelompok yang sama berbagi metadata seperti alamat IP dan sumber. Penggabungan ini mengurangi operasi I/O dan meningkatkan efisiensi. Ukuran maksimum kelompok: 5 MB.

Log
Log mencatat peristiwa atau perubahan dalam sistem seiring waktu. Log dapat merepresentasikan file teks, peristiwa sistem, BinLog database, atau data deret waktu. Di SLS, log menggunakan model semi-terstruktur dengan lima bidang: topik, waktu, konten, sumber, dan tag. Tabel berikut mencantumkan persyaratan formatnya.
|
Bidang |
Deskripsi |
Format |
|
Topik |
SLS menggunakan bidang terpesan Hubungan antara logstore, topik, dan shard adalah sebagai berikut: |
String berukuran 0 hingga 128 byte, termasuk string kosong. Jika Anda tidak perlu membedakan log dalam logstore, Anda dapat mengatur topik menjadi string kosong saat mengumpulkan log. String kosong merupakan topik yang valid. |
|
Waktu |
Bidang terpesan ( |
Stempel waktu UNIX. |
|
Konten |
Konten log, yang terdiri dari satu atau beberapa pasangan Saat Anda menggunakan Logtail dalam mode simple (single-line atau multi-line) untuk mengumpulkan log, Logtail tidak mengurai konten log. Seluruh log mentah diunggah ke bidang content. |
Berikut ini penjelasan format
|
|
Sumber |
Bidang terpesan ( |
String berukuran 0 hingga 128 byte. |
|
Tag |
Tag log, yang mencakup:
|
Kamus pasangan kunci-nilai string. Di dalam log, tag ditampilkan dengan awalan |
Contoh
Contoh berikut menggunakan log akses website untuk menunjukkan pemetaan antara log mentah dan model data di SLS.
-
Log mentah
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 -
Log yang dikumpulkan dalam mode simple. Seluruh log mentah disimpan di bidang 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 -
Log yang dikumpulkan dalam mode ekspresi reguler. Konten log distrukturkan dengan mengekstraksi konten menjadi beberapa pasangan kunci-nilai berdasarkan ekspresi reguler yang dikonfigurasi.
Contoh log akses Nginx yang diurai berisi bidang kunci-nilai berikut:
-
remote_addr:127.0.0.1 -
request_method:GET -
request_uri:/index.html -
request__protocol:HTTP/1.1 -
status:200 -
body_bytes_sent:612 -
http_user_agent: Informasi browser Mozilla/5.0 -
http_referer:- -
time_local:01/Mar/2021:12:36:49 +0800 -
__source__: IP sumber log -
__tag__:__path__:/opt/log.txt
-
Metrik
Data deret waktu terdiri dari pengenal metrik dan titik data. Titik-titik dengan pengenal yang sama membentuk deret waktu. Model SLS kompatibel dengan model data Prometheus. Semua data metricstore disimpan sebagai deret waktu.

Pengenal metrik
Setiap deret waktu diidentifikasi secara unik oleh nama metrik dan sekumpulan label.
-
Nama metrik adalah string yang mengidentifikasi jenis metrik. Nama metrik harus sesuai dengan ekspresi reguler [a-zA-Z_:][a-zA-Z0-9_:]*. Contohnya, http_request_total merepresentasikan jumlah total permintaan HTTP yang diterima.
-
Label adalah sekumpulan pasangan kunci-nilai yang mengidentifikasi atribut metrik. Kunci harus sesuai dengan ekspresi reguler [a-zA-Z_][a-zA-Z0-9_]*. Nilai tidak boleh mengandung tanda pipa (|). Contohnya, method adalah POST, dan URL adalah /api/v1/get.
Titik data
Titik data menangkap nilai deret waktu pada momen tertentu. Setiap titik terdiri dari stempel waktu (presisi nanodetik) dan nilai double.
Struktur data
Data deret waktu menggunakan protokol penulisan pengkodean data Protobuf yang sama dengan log. Pengenal dan titik data disimpan di bidang content:
|
Bidang |
Deskripsi |
Contoh |
|
__name__ |
Nama metrik. |
nginx_ingress_controller_response_size |
|
__labels__ |
Informasi label. Formatnya adalah Catatan
|
app#$#ingress-nginx|controller_class#$#nginx|controller_namespace#$#kube-system|controller_pod#$#nginx-ingress-controller-589877c6b7-hw9cj |
|
__time_nano__ |
Stempel waktu mendukung berbagai presisi (s, ms, us, ns) tetapi selalu dinormalisasi ke mikrodetik (us) dalam hasil kueri agar perhitungan konsisten. |
1585727297293000 |
|
__value__ |
Nilainya. |
36.0 |
Bidang kustom seperti Topic, Source, atau LogTags tidak disimpan di metricstore saat ditulis melalui SDK. Untuk informasi selengkapnya, lihat Kirim metrik dengan SDK.
Contoh
Contoh berikut menunjukkan kueri untuk semua data deret waktu mentah metrik `process_resident_memory_bytes` dalam rentang waktu tertentu.
* | select * from "sls-mall-k8s-metrics.prom" where __name__ = 'process_resident_memory_bytes' limit all
Hasil kueri berisi empat kolom: __name__ (nama metrik), __labels__ (informasi label, termasuk pasangan kunci-nilai seperti cluster, instance, job, namespace, dan node), __time_nano__ (stempel waktu), dan __value__ (nilai metrik).
Event
Event adalah catatan data penting, seperti alert pemantauan atau hasil pekerjaan inspeksi berkala. Data event di SLS mengikuti spesifikasi CloudEvents, seperti dijelaskan dalam tabel berikut.
|
Jenis bidang |
Nama bidang |
Wajib |
Format data |
Deskripsi |
|
Protokol |
|
Ya |
String |
Nilai default adalah |
|
|
Ya |
String |
ID event. Anda dapat menggunakan |
|
|
|
Ya |
String |
Konteks tempat event terjadi, seperti sumber event atau instans yang menerbitkan event. |
|
|
|
Ya |
String |
Jenis event, seperti |
|
|
|
Tidak |
String |
Subjek event. Bidang ini memberikan informasi tambahan ke bidang |
|
|
|
Tidak |
String |
Tipe konten nilai data. Nilai default adalah |
|
|
|
Tidak |
URI |
Skema yang harus diikuti oleh nilai |
|
|
|
Tidak |
JSON |
Konten event spesifik. Formatnya bervariasi tergantung sumber dan jenis event. |
|
|
|
Ya |
Stempel waktu |
Stempel waktu event, diformat sesuai RFC 3339. Contoh: |
|
|
Ekstensi |
|
Ya |
String |
Judul event. |
|
|
Ya |
String |
Deskripsi event. |
|
|
|
Ya |
String |
Status event. Nilai yang valid:
|
Contoh
Contoh berikut menunjukkan data untuk event alert:
{
"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"
}
Trace
Trace mencatat pemrosesan end-to-end dari satu permintaan, termasuk semua panggilan layanan dan durasinya. Trace merepresentasikan jalur eksekusi transaksi atau proses melalui sistem terdistribusi. Sesuai standar OpenTracing, trace adalah Graf Terarah Tak Berputar (Directed Acyclic Graph/DAG) dari span, di mana setiap span merepresentasikan segmen eksekusi bernama, bertempo, dan berkelanjutan. Struktur data lengkapnya didefinisikan dalam Format data trace.