全部产品
Search
文档中心

Elasticsearch:Gunakan mekanisme rollup untuk meringkas data trafik

更新时间:Jun 24, 2025

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.

    null

    Perintah 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"
        }
      }
    }
  }
}
null

Anda dapat menjalankan perintah yang disediakan dalam topik ini di Kibana console. Untuk informasi lebih lanjut, lihat Masuk ke Kibana console.

Prosedur

  1. Langkah 1: Buat pekerjaan rollup

  2. Langkah 2: Mulai pekerjaan rollup dan lihat informasi pekerjaan

  3. Langkah 3: Kueri data indeks rollup

  4. Langkah 4: Buat pola indeks rollup

  5. Langkah 5: Buat grafik untuk pemantauan trafik di Kibana console

  6. Langkah 6: Buat dasbor pemantauan trafik di Kibana console

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

index_pattern

Ya

string

Indeks atau pola indeks dari pekerjaan rollup. Karakter wildcard (*) didukung.

rollup_index

Ya

string

Indeks ringkasan rollup. Wildcard tidak didukung, dan nama lengkap diperlukan.

cron

Ya

string

Interval antara pekerjaan rollup. Ini independen dari interval saat data digulung.

page_size

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.

groups

Ya

object

Mengizinkan Anda mendefinisikan bidang pengelompokan dan metode agregasi untuk pekerjaan.

date_histogram

Ya

object

Mengizinkan Anda menggulung bidang tanggal ke bucket berbasis waktu.

field

Ya

string

Bidang tanggal yang ingin Anda gulung.

fixed_interval

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.

terms

Tidak

object

Tidak ada.

fields

Ya

string

Himpunan bidang terms. Bidang dalam array ini bisa bertipe keyword atau numerik, dan dapat diatur tanpa urutan tertentu.

metrics

Tidak

object

Tidak ada.

field

Ya

string

Bidang metrik yang ingin Anda kumpulkan. Dalam kode sebelumnya, parameter ini diatur ke networkoutTraffic dan networkinTraffic.

metrics

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.

null

└ 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_pattern diatur ke pola wildcard, pastikan nilai index_pattern berbeda dari rollup_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

  1. Mulai pekerjaan rollup.

    POST _rollup/job/ls-monitordata-sls-1h-job1/_start
  2. Lihat 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.

  1. 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.

  2. Gunakan _rollup_search untuk mendapatkan jumlah networkoutTraffic.

    GET /monitordata-logstash-rollup-1h-1/_rollup_search
    {
        "size": 0,
        "aggregations": {
            "sum_temperature": {
                "sum": {
                    "field": "networkoutTraffic"
                }
            }
        }
    }

    _rollup_search mendukung subset fitur operasi pencarian umum:

    _rollup_search tidak 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

  1. Masuk ke Kibana console.

    Untuk informasi lebih lanjut, lihat Masuk ke Kibana console.

  2. Di bilah navigasi sisi kiri, klik ikon Management.

    Management icon

  3. Di area Kibana, klik Index Patterns.

  4. Opsional:Tutup halaman About index patterns.

    null

    Lewati langkah ini jika ini bukan pertama kali Anda membuat pola indeks.

  5. Pilih Create index pattern > Rollup index pattern.

    Rollup index pattern

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

    Index pattern field

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

    Time Filter field name drop-down list

  8. 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.

  1. Masuk ke Kibana console.

    Untuk informasi lebih lanjut, lihat Masuk ke Kibana console.

  2. Buat grafik garis.

    1. Di bilah navigasi sisi kiri, klik ikon Visualize.

      Visualize icon

    2. Klik Create new visualization.

    3. Di kotak dialog New Visualization yang muncul, klik Line.

    4. Dalam daftar pola indeks, klik pola indeks rollup yang telah dibuat.

  3. Tentukan parameter di Metrics dan Buckets.

    1. Di bagian Metrics, klik Y-axis drop-down arrow.

    2. 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.

    3. Di bagian Buckets, pilih Add > X-axis.

    4. Tentukan parameter X-axis.

      Parameter

      Deskripsi

      Aggregation

      Atur nilai parameter ke date_histogram yang didefinisikan untuk group di 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.

    5. Klik ikon Apply Changes icon.

  4. Di bilah navigasi atas, klik Save.

  5. Buat grafik gauge dengan cara yang sama.

Langkah 6: Buat dasbor pemantauan trafik di Kibana console

  1. Di Kibana console, klik ikon Dashboard di bilah navigasi sisi kiri.

    Dashboard icon

  2. Klik Create new dashboard.

  3. Di bilah navigasi atas, klik Add.

  4. Di halaman Add panels, klik grafik yang dikonfigurasi di Langkah 5.

  5. Tutup halaman Add panels. Di bilah navigasi atas, klik Save.

  6. Ubah nama dasbor dan klik Confirm Save.

    Setelah konfigurasi dasbor disimpan, Anda dapat melihat dasbor.

  7. Klik + Add filter, pilih item filter, konfigurasikan kondisi filter, dan klik Save.