Alibaba Cloud Elasticsearch menyediakan plugin bernama aliyun-timestream untuk meningkatkan penyimpanan dan penggunaan data deret waktu. Plugin ini memungkinkan Anda menggunakan API untuk membuat, menghapus, memodifikasi, dan menanyakan indeks deret waktu, serta menulis data ke dalam dan menanyakan data di indeks deret waktu. Topik ini menjelaskan cara menggunakan API yang didukung oleh aliyun-timestream untuk melakukan operasi tersebut.
Informasi latar belakang
aliyun-timestream adalah plugin yang dikembangkan oleh tim Alibaba Cloud Elasticsearch berdasarkan fitur produk deret waktu dari komunitas Elastic. Plugin ini digunakan untuk meningkatkan kinerja penyimpanan dan penggunaan data deret waktu. aliyun-timestream menggunakan pernyataan Prometheus Querying Language (PromQL) sebagai pengganti pernyataan bahasa domain-spesifik (DSL) untuk menanyakan data metrik yang tersimpan. Hal ini membantu menyederhanakan operasi query dan meningkatkan efisiensi query. aliyun-timestream juga mengurangi biaya penyimpanan. Untuk informasi lebih lanjut, lihat Ikhtisar aliyun-timestream.
Prasyarat
Kluster Elasticsearch yang memenuhi persyaratan versi berikut telah dibuat: Versi kluster adalah V7.10 dan versi kernel kluster adalah V1.8.0 atau lebih baru, atau versi kluster adalah V7.16 atau lebih baru dan versi kernel kluster adalah V1.7.0 atau lebih baru. Untuk informasi tentang cara membuat kluster Elasticsearch, lihat Buat Kluster Alibaba Cloud Elasticsearch.
Buat indeks deret waktu
Sintaks permintaan
Tidak ada konten yang ditentukan dalam badan permintaan.
PUT _time_stream/{name}Template kustom diunggah ke badan permintaan.
PUT _time_stream/{name} { --- index template --- }
Catatan penggunaan
Saat membuat indeks deret waktu, Anda tidak perlu mengonfigurasi pola indeks. Namun, Anda harus menentukan nama spesifik untuk indeks. Karakter wildcard tidak didukung untuk nama.
Anda dapat membiarkan badan permintaan kosong atau mengunggah template kustom ke badan permintaan. Untuk informasi tentang format badan permintaan, lihat Template Indeks dalam dokumentasi Elasticsearch sumber terbuka.
Contoh
Permintaan Contoh
PUT _time_stream/test_stream { "template": { "settings": { "index.number_of_shards": "10" } } }Respon Contoh
{ "acknowledged" : true }
Perbarui konfigurasi indeks deret waktu
Sintaks permintaan
Tidak ada konten yang ditentukan dalam badan permintaan.
POST _time_stream/{name}/_updateTemplate kustom diunggah ke badan permintaan.
POST _time_stream/{name}/_update { --- index template --- }
Catatan penggunaan
Badan permintaan yang dilewatkan untuk API yang digunakan untuk memperbarui konfigurasi indeks deret waktu sama dengan badan permintaan yang dilewatkan untuk API yang digunakan untuk membuat indeks deret waktu. Untuk informasi lebih lanjut, lihat bagian Membuat Indeks Deret Waktu dalam topik ini.
Setelah memperbarui konfigurasi indeks deret waktu, konfigurasi baru tidak langsung diterapkan pada indeks. Anda harus melakukan rollover indeks deret waktu agar konfigurasi baru diterapkan.
Contoh
Permintaan Contoh
POST _time_stream/test_stream/_update { "template": { "settings": { "index.number_of_shards": "10" } } }Respon Contoh
{ "acknowledged" : true }
Hapus indeks deret waktu
Sintaks permintaan
Delete _time_stream/{name}Catatan penggunaan
Anda dapat melakukan pencocokan fuzzy untuk mencari beberapa indeks deret waktu dan menghapus indeks tersebut sekaligus. Anda juga dapat menentukan nama indeks deret waktu yang ingin dihapus dan memisahkan nama-nama tersebut dengan koma (,) untuk menghapus indeks sekaligus.
Setelah menghapus indeks deret waktu, data yang disimpan dalam indeks juga akan dihapus. Sebelum melakukan operasi penghapusan, pastikan bahwa operasi tersebut tidak memengaruhi bisnis Anda.
Contoh
Permintaan Contoh
DELETE _time_stream/test_streamRespon Contoh
{ "acknowledged" : true }
Menanyakan indeks deret waktu
Sintaks permintaan
Menanyakan semua indeks deret waktu.
GET _time_streamMenanyakan indeks deret waktu tertentu.
GET _time_stream/{name}
Catatan penggunaan
Anda dapat melakukan pencocokan fuzzy untuk mencari indeks deret waktu yang ingin Anda tanyakan. Anda juga dapat menentukan nama indeks deret waktu yang ingin Anda tanyakan dan memisahkan nama-nama tersebut dengan koma (,) untuk mencari indeks.
Contoh
Permintaan Contoh
GET _time_streamRespon Contoh
{ "time_streams" : { "test_stream" : { "name" : "test_stream", "datastream_name" : "test_stream", "template_name" : ".timestream_test_stream", "template" : { "index_patterns" : [ "test_stream" ], "template" : { "settings" : { "index" : { "number_of_shards" : "10" } } }, "composed_of" : [ ".system.timestream.template" ], "data_stream" : { "hidden" : true } } } } }
Menanyakan metrik indeks deret waktu
Sintaks permintaan
Menanyakan metrik semua indeks deret waktu.
GET _time_stream/_statsMenanyakan metrik indeks deret waktu tertentu.
GET _time_stream/{name}/_stats
Catatan penggunaan
Anda dapat memanggil API yang digunakan untuk menanyakan metrik indeks deret waktu untuk mendapatkan informasi tentang metrik seperti time_stream_count. Nilai metrik time_stream_count menunjukkan jumlah deret waktu.
Deskripsi metrik time_stream_count:
Metode Perhitungan
Metrik time_stream_count mengumpulkan jumlah deret waktu setiap shard utama untuk sebuah indeks. Setiap shard utama memiliki deret waktu yang berbeda. Jumlah total deret waktu sebuah indeks adalah jumlah dari jumlah deret waktu semua shard utama untuk indeks tersebut.
Metrik time_stream_count mengembalikan nama indeks yang memiliki jumlah deret waktu terbesar.
Perhatian
Metrik time_stream_count mengumpulkan jumlah deret waktu setiap shard utama dari doc values bidang _tsid yang menentukan ID deret waktu. Proses ini menghasilkan biaya query yang sangat tinggi. Untuk mengurangi biaya tersebut, Elasticsearch memungkinkan Anda mengonfigurasi kebijakan caching. Setelah Anda mengonfigurasi kebijakan tersebut untuk indeks yang hanya-baca, metrik time_stream_count hanya mengumpulkan jumlah deret waktu setiap shard utama untuk indeks tersebut sekali. Secara default, sistem memperbarui cache setiap interval 5 menit untuk jenis indeks lainnya. Anda dapat mengonfigurasi parameter index.timeSeries.stats.refresh_interval untuk indeks-indeks tersebut untuk mengubah interval. Interval minimum adalah 1 menit.
Contoh
Permintaan Contoh
GET _time_stream/_statsRespon Contoh
{ "_shards" : { "total" : 4, "successful" : 4, "failed" : 0 }, "time_stream_count" : 2, "indices_count" : 2, "total_store_size_bytes" : 1278822, "time_streams" : [ { "time_stream" : "test_stream", "indices_count" : 1, "store_size_bytes" : 31235, "tsidCount" : 1 }, { "time_stream" : "prom_index", "indices_count" : 1, "store_size_bytes" : 1247587, "tsidCount" : 317 } ] }
Tulis data deret waktu ke indeks deret waktu
Sintaks permintaan
Plugin aliyun-timestream menggunakan API yang disediakan oleh Elasticsearch sumber terbuka, seperti bulk API dan index API, untuk menulis data ke indeks deret waktu.
Saat plugin aliyun-timestream menggunakan API untuk menulis data ke indeks deret waktu, plugin tersebut hanya dapat menambahkan data. Plugin tidak dapat mengindeks, memperbarui, atau menghapus data yang sudah ada.
Model penulisan data
Saat menggunakan plugin aliyun-timestream untuk menulis data ke indeks deret waktu, Anda harus memastikan bahwa data memenuhi persyaratan model data deret waktu. Model data deret waktu berisi bidang default yang dijelaskan dalam tabel berikut.
Bidang | Deskripsi |
labels | Properti yang terkait dengan metrik. Bidang ini secara unik menandai metadata rekaman data yang ditulis. ID deret waktu dapat dihasilkan oleh pengaturan bidang ini. |
metrics | Metrik. Nilai bidang ini harus bertipe data LONG atau DOUBLE. |
@timestamp | Waktu saat data metrik dikumpulkan. Nilai default bidang ini adalah timestamp dalam milidetik. |
Kode Contoh:
{
"labels": {
"namespce": "cn-hanzhou",
"clusterId": "cn-xxx-xxxxxx",
"nodeId": "node-xxx",
"label": "test-cluster",
"disk_type": "cloud_ssd",
"cluster_type": "normal"
},
"metrics": {
"cpu.idle": 10.0,
"mem.free": 100.1,
"disk_ioutil": 5.2
},
"@timestamp": 1624873606000
}Contoh
Permintaan Contoh
POST test_stream/_doc { "labels": { "namespce": "cn-hanzhou", "clusterId": "cn-xxx-xxxxxx", "nodeId": "node-xxx", "label": "test-cluster", "disk_type": "cloud_ssd", "cluster_type": "normal" }, "metrics": { "cpu.idle": 10, "mem.free": 100.1, "disk_ioutil": 5.2 }, "@timestamp": 1624873606000 }Respon Contoh
{ "_index" : ".ds-test_stream-2021.09.03-000001", "_id" : "suF_qnsBGKH6s8C_OuFS", "_version" : 1, "result" : "created", "_shards" : { "total" : 1, "successful" : 1, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1 }
Konfigurasikan bidang untuk model data deret waktu
Saat membuat indeks deret waktu, Anda dapat mengunggah satu atau lebih bidang dimensi kustom dan bidang metrik. Plugin aliyun-timestream secara otomatis membuat pemetaan dinamis untuk bidang dimensi dan bidang metrik serta mengonfigurasi parameter timeSeriesDimension untuk bidang dimensi. Elasticsearch secara otomatis menghasilkan ID deret waktu berdasarkan bidang dimensi. Secara default, bidang metrik hanya menyimpan doc values. Saat mengonfigurasi bidang dimensi dan bidang metrik, Anda dapat menggunakan wildcard (*) untuk melakukan pencocokan fuzzy. Kode berikut memberikan contoh tentang cara mengonfigurasi bidang dimensi dan bidang metrik:
Unggah satu bidang dimensi kustom atau bidang metrik.
PUT _time_stream/{name} { --- index template --- "time_stream": { "labels_fields": "@label.*", "metrics_fields": "@metrics.*" } }Unggah beberapa bidang dimensi kustom atau bidang metrik.
PUT _time_stream/{name} { --- index template --- "time_stream": { "labels_fields": ["label.*", "dim*"], "metrics_fields": ["@metrics.*", "metrics.*"] } }
Parameter | Deskripsi |
labels_fields | Opsional. Nilai default: label.*. |
metrics_fields | Opsional. Nilai default: metrics.*. |
Menanyakan data dalam indeks deret waktu
Sintaks permintaan
Plugin aliyun-timestream menggunakan API yang disediakan oleh Elasticsearch sumber terbuka, seperti API Pencarian dan get API, untuk menanyakan data dalam indeks deret waktu.
Contoh
Permintaan Contoh
GET test_stream/_searchRespon Contoh
{ "took" : 172, "timed_out" : false, "_shards" : { "total" : 10, "successful" : 10, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : ".ds-test_stream-2021.09.03-000001", "_id" : "suF_qnsBGKH6s8C_OuFS", "_score" : 1.0 } ] } }
Catatan penggunaan untuk downsampling
Downsampling adalah fitur yang umum digunakan dalam skenario deret waktu. Saat membuat indeks deret waktu, Anda dapat mengonfigurasi aturan downsampling untuk indeks tersebut. Setelah mengonfigurasi aturan downsampling untuk indeks deret waktu, Anda hanya perlu membaca data dari atau menulis data ke indeks, dan indeks secara otomatis melakukan downsampling pada data dalam indeks. Saat menanyakan data dalam indeks deret waktu, indeks secara otomatis menentukan ruang lingkup data yang telah di-downsample berdasarkan nilai parameter interval yang dikonfigurasi untuk agregasi.
Saat mengonfigurasi aturan downsampling untuk indeks deret waktu, Anda hanya perlu mengonfigurasi parameter interval. Indeks deret waktu secara otomatis melakukan downsampling pada data berdasarkan konfigurasi bidang labels dan metrics. Setelah downsampling, tipe data nilai bidang metrics diubah menjadi aggregate_metric_double, dan sistem menghasilkan sub-bidang berikut untuk bidang metrics: max, min, sum, dan count.
Aturan downsampling dipicu selama tahap rollover. Setelah aturan downsampling dipicu, downsampling dilakukan pada indeks ke mana data tidak lagi ditulis. Sistem menghasilkan indeks downsampling untuk setiap indeks asli berdasarkan aturan downsampling. Secara default, setiap indeks downsampling mewarisi pengaturan indeks asli terkait. Jika Anda ingin menyesuaikan pengaturan indeks downsampling, Anda dapat mengonfigurasi pengaturan dalam aturan downsampling terkait. Misalnya, jika Anda ingin mengurangi kapasitas indeks downsampling, Anda dapat mengurangi jumlah shard utama untuk indeks tersebut. Jika Anda ingin indeks downsampling disimpan untuk jangka waktu yang lebih lama, Anda dapat mengonfigurasi kebijakan manajemen siklus hidup indeks (ILM) untuk indeks tersebut.
Kode berikut memberikan contoh tentang cara mengonfigurasi aturan downsampling:
PUT _time_stream/{name}
{
"time_stream": {
"downsample": [
{
"interval": "1m",
"settings": {
"index.lifecycle.name": "my-rollup-ilm-policy_60m",
"index.number_of_shards": "1"
}
},
{
"interval": "10m"
}
]
}
}Anda dapat menambahkan parameter downsample ke konfigurasi parameter time_stream. Kemudian, Anda dapat mengonfigurasi parameter yang diperlukan dalam downsample. Tabel berikut menjelaskan parameter yang dapat dikonfigurasi dalam downsample.
Parameter | Diperlukan | Deskripsi |
interval | Ya | Interval di mana downsampling dilakukan. Selama downsampling, data digulung pada interval yang ditentukan oleh parameter ini. Anda dapat menentukan maksimal lima interval. Jika Anda menentukan lebih dari satu interval, Anda harus memastikan bahwa interval tersebut merupakan kelipatan. Misalnya, Anda dapat menentukan 1m, 10m, dan 60m. |
settings | Tidak | Pengaturan indeks downsampling, seperti pengaturan terkait siklus hidup dan jumlah shard utama. |