Untuk data deret waktu, volume data meningkat seiring waktu. Jika Anda ingin menyimpan volume data yang besar, biaya penyimpanan akan meningkat secara linear. Dalam skenario ini, Anda dapat menggunakan mekanisme rollup dari Elasticsearch untuk menyimpan data dengan sebagian kecil dari biaya tersebut. Prosedur berikut menunjukkan cara menggunakan mekanisme rollup untuk meringkas data trafik Logstash.
Prasyarat
Anda memiliki izin manage atau manage_rollup.
Untuk menggunakan mekanisme rollup, Anda harus memiliki izin manage atau manage_rollup. Untuk informasi lebih lanjut, lihat Hak istimewa Keamanan.
Anda telah membuat instance Elasticsearch Alibaba Cloud.
Untuk informasi lebih lanjut, lihat Buat kluster Elasticsearch Alibaba Cloud. Topik ini menggunakan instance Elasticsearch V7.4 Edisi Standar sebagai contoh.
nullPerintah rollup yang tercantum dalam topik ini adalah milik Elasticsearch V7.4. Untuk informasi lebih lanjut tentang perintah Elasticsearch V6.x, lihat deskripsi pekerjaan rollup.
Informasi latar belakang
Persyaratan:
Elasticsearch memberikan ringkasan per jam untuk bidang networkoutTraffic dan networkinTraffic pada interval 15 menit. Bidang networkoutTraffic dan networkinTraffic sesuai dengan ID instance tertentu.
Elasticsearch menggunakan grafik yang disajikan di Kibana console untuk memvisualisasikan data dari bidang networkoutTraffic dan networkinTraffic.
Dalam topik ini, indeks yang diawali oleh monitordata-logstash-sls-* digunakan sebagai contoh. * menunjukkan tanggal dalam format YYYY-MM-DD. Jenis indeks ini dihasilkan setiap hari. Format pemetaan indeks:
"monitordata-logstash-sls-2020-04-05" : {
"mappings" : {
"properties" : {
"@timestamp" : {
"type" : "date"
},
"__source__" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"disk_type" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"host" : {
"type" : "keyword"
},
"instanceId" : {
"type" : "keyword"
},
"metricName" : {
"type" : "keyword"
},
"monitor_type" : {
"type" : "keyword"
},
"networkinTraffic" : {
"type" : "double"
},
"networkoutTraffic" : {
"type" : "double"
},
"node_spec" : {
"type" : "keyword"
},
"node_stats_node_master" : {
"type" : "keyword"
},
"resource_uid" : {
"type" : "keyword"
}
}
}
}
}Anda dapat menjalankan perintah yang disediakan dalam topik ini di Kibana console. Untuk informasi lebih lanjut, lihat Masuk ke Kibana console.
Prosedur
Langkah 1: Buat pekerjaan rollup
Langkah ini memberikan instruksi tentang cara menjalankan pekerjaan, kapan mengindeks dokumen, dan kueri apa yang dilakukan pada indeks rollup. Contoh berikut menggunakan perintah PUT _rollup/job untuk mendefinisikan pekerjaan rollup dalam satu jam.
PUT _rollup/job/ls-monitordata-sls-1h-job1
{
"index_pattern": "monitordata-logstash-sls-*",
"rollup_index": "monitordata-logstash-rollup-1h-1",
"cron": "0 */15 * * * ?",
"page_size" :1000,
"groups" : {
"date_histogram": {
"field": "@timestamp",
"fixed_interval": "1h"
},
"terms": {
"fields": ["instanceId"]
}
},
"metrics": [
{
"field": "networkoutTraffic",
"metrics": ["sum"]
},
{
"field": "networkinTraffic",
"metrics": ["sum"]
}
]
}Parameter | Diperlukan | Tipe | Deskripsi |
| Ya | string | Indeks atau pola indeks dari pekerjaan rollup. Karakter wildcard (*) didukung. |
| Ya | string | Indeks ringkasan rollup. Wildcard tidak didukung, dan nama lengkap diperlukan. |
| Ya | string | Interval antara pekerjaan rollup. Ini independen dari interval saat data digulung. |
| Ya | integer | Jumlah hasil bucket yang diproses pada setiap iterasi indeks rollup. Nilai yang lebih besar menunjukkan pemrosesan lebih cepat dan penggunaan memori lebih tinggi selama pemrosesan. |
| Ya | object | Mengizinkan Anda mendefinisikan bidang pengelompokan dan metode agregasi untuk pekerjaan. |
└ | Ya | object | Mengizinkan Anda menggulung bidang tanggal ke bucket berbasis waktu. |
└ | Ya | string | Bidang tanggal yang ingin Anda gulung. |
└ | Ya | unit waktu | Interval saat data digulung. Misalnya, jika parameter ini diatur ke 1h, bidang tanggal yang ditentukan oleh parameter field digulung setiap jam. Parameter ini menentukan interval minimum saat data digulung. |
| Tidak | object | Tidak ada. |
└ | Ya | string | Himpunan bidang terms. Bidang dalam array ini bisa bertipe keyword atau numerik, dan dapat diatur tanpa urutan tertentu. |
| Tidak | object | Tidak ada. |
└ | Ya | string | Bidang metrik yang ingin Anda kumpulkan. Dalam kode sebelumnya, parameter ini diatur ke networkoutTraffic dan networkinTraffic. |
└ | Ya | array | Operator yang ingin Anda gunakan untuk agregasi. Jika parameter ini diatur ke sum, jumlah bidang networkinTraffic dihitung. Parameter ini dapat diatur ke min, max, sum, average, atau value count. |
└ menunjukkan parameter anak.
Untuk informasi lebih lanjut tentang parameter ini, lihat API buat pekerjaan rollup. Perhatikan poin-poin berikut saat Anda mengonfigurasi parameter:
Jika
index_patterndiatur ke pola wildcard, pastikan nilai index_pattern berbeda darirollup_index. Jika tidak, kesalahan akan dikembalikan.Pemetaan rollup_index adalah tipe objek. Pastikan index_pattern tidak diatur ke nilai yang sama dengan rollup_index. Jika tidak, kesalahan akan dikembalikan.
Pekerjaan rollup hanya mendukung agregasi histogram tanggal, agregasi histogram, dan agregasi terms. Untuk informasi lebih lanjut, lihat Keterbatasan agregasi rollup.
Langkah 2: Mulai pekerjaan rollup dan lihat informasi pekerjaan
Mulai pekerjaan rollup.
POST _rollup/job/ls-monitordata-sls-1h-job1/_startLihat konfigurasi, statistik, dan status pekerjaan rollup.
GET _rollup/job/ls-monitordata-sls-1h-job1/Untuk informasi lebih lanjut, lihat Dapatkan API pekerjaan rollup.
Jika perintah berhasil dieksekusi, hasil berikut dikembalikan:
{ ........ "status" : { "job_state" : "indexing", "current_position" : { "@timestamp.date_histogram" : 1586775600000, "instanceId.terms" : "ls-cn-ddddez****" }, "upgraded_doc_id" : true }, "stats" : { "pages_processed" : 3, "documents_processed" : 11.472.500, "rollups_indexed" : 3.000, "trigger_count" : 1, "index_time_in_ms" : 766, "index_total" : 3, "index_failures" : 0, "search_time_in_ms" : 68.559, "search_total" : 3, "search_failures" : 0 } }
Langkah 3: Kueri data indeks rollup
Saat pekerjaan rollup dijalankan, struktur dokumen rollup berbeda dari data mentah. Port kueri rollup membangun ulang Query DSL menjadi pola yang cocok dengan dokumen rollup, mendapatkan respons, dan memulihkan Query DSL ke pola yang diharapkan oleh klien yang digunakan untuk kueri asli.
Gunakan match_all untuk mendapatkan semua data indeks rollup.
GET monitordata-logstash-rollup-1h-1/_search { "query": { "match_all": {} } }Hanya satu indeks rollup yang dapat ditentukan untuk kueri. Pencocokan kabur tidak didukung. Beberapa indeks dapat ditentukan untuk kueri data real-time.
Kueri berikut didukung: kueri term, kueri terms, kueri range, kueri match all, dan kueri majemuk apa pun. Kueri majemuk adalah kombinasi kueri, termasuk kueri Boolean, kueri boosting, dan kueri constant score. Untuk batasan lebih lanjut, lihat Keterbatasan pencarian rollup.
Gunakan
_rollup_searchuntuk mendapatkan jumlah networkoutTraffic.GET /monitordata-logstash-rollup-1h-1/_rollup_search { "size": 0, "aggregations": { "sum_temperature": { "sum": { "field": "networkoutTraffic" } } } }_rollup_searchmendukung subset fitur operasi pencarian umum:query: parameter Query DSL dengan batasan tertentu. Untuk informasi lebih lanjut, lihat Keterbatasan pencarian rollup dan Keterbatasan agregasi rollup.
aggregations: parameter agregasi.
_rollup_searchtidak mendukung fitur berikut:size: Atur parameter ini ke 0 atau jangan tentukan parameter ini. Ini karena rollup hanya digunakan untuk agregasi data dan hasil kueri tidak dapat dikembalikan.
Parameter seperti highlighter, suggestors, post_filter, profile, dan explain tidak didukung.
Langkah 4: Buat pola indeks rollup
Masuk ke Kibana console.
Untuk informasi lebih lanjut, lihat Masuk ke Kibana console.
Di bilah navigasi sisi kiri, klik ikon Management.

Di area Kibana, klik Index Patterns.
Opsional:Tutup halaman About index patterns.
nullLewati langkah ini jika ini bukan pertama kali Anda membuat pola indeks.
Pilih .

Di bidang Pola Indeks, masukkan nama pola indeks seperti monitordata-logstash-rollup-1h-1, lalu klik Next step.

Dari daftar drop-down Time Filter field name, pilih @timestamp.

Klik Create index pattern.
Langkah 5: Buat grafik untuk pemantauan trafik di Kibana console
Prosedur berikut menunjukkan cara membuat grafik networkinTraffic dan networkoutTraffic untuk indeks rollup di Kibana console.
Masuk ke Kibana console.
Untuk informasi lebih lanjut, lihat Masuk ke Kibana console.
Buat grafik garis.
Di bilah navigasi sisi kiri, klik ikon Visualize.

Klik Create new visualization.
Di kotak dialog New Visualization yang muncul, klik Line.
Dalam daftar pola indeks, klik pola indeks rollup yang telah dibuat.
Tentukan parameter di Metrics dan Buckets.
Di bagian Metrics, klik
.Tentukan parameter Y-axis.
Parameter
Deskripsi
Aggregation
Atur nilai parameter ke Sum.
Field
Atur nilai parameter ke networkinTraffic atau networkoutTraffic.
Custom label
Masukkan label sumbu-Y kustom.
Di bagian Buckets, pilih .
Tentukan parameter X-axis.
Parameter
Deskripsi
Aggregation
Atur nilai parameter ke
date_histogramyang didefinisikan untukgroupdi Langkah 1: Buat pekerjaan rollup.Field
Atur nilai parameter ke @timestamp.
Minimum interval
Nilai default adalah granularitas waktu agregasi yang didefinisikan dalam pekerjaan rollup. Nilainya harus merupakan kelipatan bulat dari interval rollup, seperti 2h atau 3h.
Klik ikon
.
Di bilah navigasi atas, klik Save.
Buat grafik gauge dengan cara yang sama.
Langkah 6: Buat dasbor pemantauan trafik di Kibana console
Di Kibana console, klik ikon Dashboard di bilah navigasi sisi kiri.

Klik Create new dashboard.
Di bilah navigasi atas, klik Add.
Di halaman Add panels, klik grafik yang dikonfigurasi di Langkah 5.
Tutup halaman Add panels. Di bilah navigasi atas, klik Save.
Ubah nama dasbor dan klik Confirm Save.
Setelah konfigurasi dasbor disimpan, Anda dapat melihat dasbor.
Klik + Add filter, pilih item filter, konfigurasikan kondisi filter, dan klik Save.