Penyimpanan (store) adalah unit dasar untuk penyimpanan dan kueri data di Simple Log Service (SLS). Untuk mendukung berbagai tipe data, SLS menyediakan Logstore, Metricstore, dan Eventstore.
Cara memilih tipe toko
Simple Log Service mendukung tiga tipe penyimpanan: Logstore, Metricstore, dan Eventstore. Perbedaan utama di antara ketiganya terletak pada kompatibilitas model datanya. Pilih tipe penyimpanan yang paling sesuai dengan data Anda. Jika tidak memiliki persyaratan khusus, gunakan Logstore sebagai pilihan default.
Jenis toko | Skenario |
Logstore |
|
Metricstore | Data deret waktu (metric): Deret waktu yang terdiri dari pengenal unik dan rangkaian titik data. Gunakan Metricstore untuk menyimpan dan mengkueri data deret waktu secara efisien. |
Eventstore | Data event: Catatan kejadian penting, seperti alert pemantauan atau hasil inspeksi berkala. Gunakan Eventstore untuk menyimpan data diskrit berbasis event. |
Logstore
Logstore adalah unit dasar untuk menyimpan dan mengkueri data log di Simple Log Service. Setiap Logstore termasuk dalam satu proyek. Anda dapat membuat beberapa Logstore dalam satu proyek untuk memisahkan berbagai tipe log dari aplikasi yang sama. Misalnya, untuk mengumpulkan log operasi, log aplikasi, dan log akses untuk Aplikasi A, buat proyek bernama app-a. Di dalam proyek tersebut, buat Logstore bernama operation_log, application_log, dan access_log untuk menyimpan masing-masing tipe log secara terpisah.
Anda menentukan Logstore saat menulis, mengkueri, menganalisis, memproses, mengonsumsi, atau mengirimkan log. Penggunaan spesifik meliputi hal-hal berikut:
Kumpulkan log menggunakan Logstore sebagai unit pengumpulan.
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. Setiap Metricstore termasuk dalam satu proyek. Anda dapat membuat beberapa Metricstore dalam satu proyek sesuai kebutuhan, misalnya membuat Metricstore terpisah untuk berbagai tipe data deret waktu. Sebagai contoh, untuk mengumpulkan data pemantauan host dasar, data pemantauan layanan cloud, dan data pemantauan aplikasi bisnis, buat proyek bernama demo-monitor. Kemudian, di dalam proyek tersebut, buat Metricstore bernama host-metrics, cloud-service-metrics, dan app-metrics untuk menyimpan masing-masing tipe data secara terpisah.
Anda menentukan Metricstore saat menulis, mengkueri, menganalisis, atau mengonsumsi data deret waktu. Penggunaan spesifik meliputi hal-hal berikut:
Kumpulkan data deret waktu menggunakan Metricstore sebagai unit pengumpulan.
Gunakan Metricstore untuk menyimpan data deret waktu dan melakukan operasi 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. Anda dapat membuat beberapa Eventstore dalam satu proyek sesuai kebutuhan, biasanya untuk berbagai tipe data event. Sebagai contoh, kategorikan dan simpan event anomali infrastruktur, event aplikasi bisnis, dan event kustom di Eventstore terpisah untuk penyimpanan dan analisis.
Anda menentukan Eventstore saat menulis, mengkueri, menganalisis, atau mengonsumsi data event. Penggunaan spesifik meliputi hal-hal berikut:
Kumpulkan data event menggunakan Eventstore sebagai unit pengumpulan.
Simpan data event dan lakukan operasi konsumsi menggunakan Eventstore sebagai unit penyimpanan.
Referensi
LogGroup
Log group (LogGroup) adalah kumpulan log dan berfungsi sebagai unit dasar untuk menulis dan membaca data. Semua log dalam satu LogGroup memiliki metadata yang sama, seperti alamat IP dan sumber. Saat Anda menulis atau membaca log ke/dari SLS, beberapa log digabung menjadi satu LogGroup. Pendekatan ini mengurangi jumlah operasi baca/tulis dan meningkatkan efisiensi. Setiap LogGroup memiliki ukuran maksimum 5 MB.

Data log
Data log mencatat peristiwa atau perubahan dalam sistem seiring waktu dan terdiri dari kumpulan operasi yang tersusun secara kronologis beserta hasilnya untuk objek tertentu. Secara luas, ini mencakup file teks (LogFiles), event (Events), log biner database (BinLogs), dan data deret waktu (metrics). Simple Log Service menggunakan model data semi-terstruktur untuk mendefinisikan log, yang terdiri dari lima domain data utama: topik, waktu, konten, sumber, dan tag. Tabel berikut menjelaskan persyaratan format untuk setiap domain data.
Domain data | Deskripsi | Format |
Topik | Simple Log Service 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, atur topik menjadi string kosong saat mengumpulkan log. String kosong merupakan topik yang valid. |
Waktu log | Bidang terpesan ( | Stempel waktu UNIX. |
Konten log | Konten log, yang terdiri dari satu atau beberapa item konten dalam format 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 penjelasan format
|
Sumber log | Bidang terpesan ( | String apa pun berukuran 0 hingga 128 byte. |
Tag | Tag log mencakup hal-hal berikut:
| Kamus pasangan kunci-nilai string. Di dalam log, tag muncul dengan awalan |
Contoh
Contoh berikut menggunakan log akses website untuk menunjukkan pemetaan antara log mentah dan model data di Simple Log Service.
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.36Log yang dikumpulkan dalam mode simple. Seluruh log mentah disimpan di bidang content.

Log yang dikumpulkan dalam mode ekspresi reguler. Konten log distrukturkan dengan mengekstraksi konten menjadi beberapa pasangan kunci-nilai berdasarkan ekspresi reguler yang dikonfigurasi.

Data deret waktu (metric)
Data deret waktu terdiri dari pengenal deret waktu dan titik data. Titik data dengan pengenal yang sama membentuk satu deret waktu. Tipe data deret waktu di Simple Log Service kompatibel dengan model data Prometheus. Semua data di Metricstore disimpan sebagai data deret waktu.

Pengenal deret waktu
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 total jumlah 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 vertikal (|). Contohnya, method adalah POST, dan URL adalah /api/v1/get .
Titik data
Titik data merepresentasikan nilai deret waktu pada waktu tertentu. Setiap titik data terdiri dari stempel waktu dan nilai. Stempel waktu akurat hingga nanodetik, dan nilainya berupa double.
Struktur data
Protokol penulisan data deret waktu sama dengan protokol log dan menggunakan metode encoding data Protobuf. Pengenal deret waktu dan titik data disimpan di bidang content, seperti dijelaskan dalam tabel berikut.
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. Anda dapat menulis stempel waktu dengan berbagai presisi, seperti detik (s), milidetik (ms), mikrodetik (us), dan nanodetik (ns). Saat menjalankan kueri SQL, semua stempel waktu distandarisasi ke presisi mikrodetik (us) dalam output untuk memastikan konsistensi perhitungan waktu. | 1585727297293000 |
__value__ | Nilai. | 36.0 |
Contoh
Kueri semua data deret waktu mentah untuk metrik process_resident_memory_bytes dalam rentang waktu tertentu.
* | select * from "sls-mall-k8s-metrics.prom" where __name__ = 'process_resident_memory_bytes' limit all
Data event
Event adalah catatan data penting, seperti alert pemantauan atau hasil pekerjaan inspeksi berkala. Data event di Simple Log Service mengikuti spesifikasi CloudEvents, seperti dijelaskan dalam tabel berikut.
Tipe bidang | Nama bidang | Wajib | Format data | Deskripsi |
Bidang 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 | Tipe event, seperti | |
| Tidak | String | Subjek event. Bidang ini memberikan informasi tambahan ke bidang | |
| Tidak | String | Tipe event. Nilai default adalah | |
| Tidak | URI | Skema yang harus diikuti oleh bidang | |
| Tidak | JSON | Konten event spesifik. Formatnya bervariasi tergantung sumber dan tipe event. | |
| Ya | Stempel waktu | Waktu event. Untuk informasi lebih lanjut tentang formatnya, lihat RFC 3339. Contoh: | |
Bidang 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"
}Data jejak
Data jejak mencatat pemrosesan end-to-end dari satu permintaan, termasuk semua pemanggilan layanan dan durasinya. Setiap data jejak berkorespondensi dengan satu jejak (trace). Jejak merepresentasikan jalur eksekusi suatu transaksi atau proses melalui sistem terdistribusi. Menurut standar OpenTracing, jejak adalah grafik asiklik terarah (DAG) dari Spans. Setiap Span merepresentasikan segmen eksekusi bernama, berdurasi, dan kontinu dalam jejak. Untuk informasi lebih lanjut, lihat Format data jejak.