全部产品
Search
文档中心

Elasticsearch:Gunakan X-Pack Watcher untuk memonitor metrik terkait CCR dan melaporkan peringatan untuk pengecualian

更新时间:Jul 06, 2025

X-Pack Watcher yang disediakan oleh Alibaba Cloud Elasticsearch dapat melacak aktivitas jaringan, memonitor metrik infrastruktur, data indeks, dan status kesehatan kluster, serta melaporkan peringatan. Anda dapat memperoleh metrik terkait fitur replikasi lintas kluster (CCR) di konsol Kibana dari kluster Elasticsearch dan menggunakan X-Pack Watcher untuk memonitor metrik tersebut serta melaporkan peringatan untuk pengecualian. Topik ini menjelaskan cara menggunakan X-Pack Watcher untuk memonitor metrik terkait CCR dan melaporkan peringatan berdasarkan waktu yang dikonsumsi oleh permintaan baca data yang diterima oleh fitur CCR dan titik pemeriksaan CCR.

Prasyarat

  • Kluster Elasticsearch Alibaba Cloud telah dibuat. Untuk informasi lebih lanjut, lihat Buat kluster Elasticsearch Alibaba Cloud.

    Catatan
    • Dalam arsitektur jaringan asli, X-Pack Watcher hanya tersedia untuk kluster Elasticsearch zona tunggal.

    • Dalam arsitektur jaringan baru, Anda perlu mengonfigurasi koneksi privat untuk kluster Elasticsearch agar dapat terhubung ke Internet. Untuk informasi lebih lanjut, lihat Konfigurasikan koneksi privat untuk kluster Elasticsearch.

    Untuk informasi lebih lanjut tentang arsitektur jaringan, lihat [Pemberitahuan] Penyesuaian arsitektur jaringan.

  • X-Pack Watcher diaktifkan untuk kluster Elasticsearch. Secara default, X-Pack Watcher dinonaktifkan. Untuk informasi lebih lanjut, lihat Konfigurasikan file YML.

  • Instance Elastic Compute Service (ECS) dibuat di virtual private cloud (VPC) Anda. Untuk informasi lebih lanjut, lihat Buat instance pada tab Peluncuran Kustom.

    Catatan

    X-Pack Watcher tidak dapat langsung mengakses Internet dan harus menggunakan titik akhir internal kluster Elasticsearch Anda untuk mengakses Internet. Dalam hal ini, Anda dapat mengaktifkan source network address translation (SNAT) atau mengaitkan alamat IP elastis (EIP) dengan instance ECS yang ditempatkan di VPC Anda. Dengan cara ini, Anda dapat menggunakan instance ECS sebagai proxy untuk meneruskan permintaan. Untuk informasi lebih lanjut, lihat Kaitkan EIP atau Konfigurasikan SNAT.

Prosedur

Langkah 1: Konfigurasikan chatbot DingTalk

  1. Buat grup DingTalk untuk menerima notifikasi peringatan.

  2. Klik ikon 设置.png di pojok kanan atas jendela obrolan grup DingTalk. Di panel Group Settings, klik Bot.

  3. Di panel Manajemen Robot, klik Add Robot.

  4. Di kotak dialog Robot, klik Add Robot.

  5. Klik kartu Custom. Di kotak dialog Detail Robot, klik Add.

  6. Di kotak dialog Tambah Robot, pilih Custom Keywords untuk Pengaturan Keamanan. Masukkan satu atau lebih kata kunci dalam bidang yang muncul.

    Penting

    Kata kunci harus termasuk dalam informasi peringatan yang Anda konfigurasikan.

  7. Baca dan setujui syarat layanan, lalu klik Finished.

  8. Klik Copy di sebelah kanan Webhook untuk menyalin URL webhook chatbot.

    Simpan URL webhook untuk digunakan nanti. Selain itu, Anda harus menjaga kerahasiaan URL webhook. Jika URL webhook bocor, risiko dapat muncul.

Langkah 2: Konfigurasikan proxy NGINX dan atur aturan grup keamanan untuk instance ECS

  1. Konfigurasikan proxy NGINX pada instance ECS.

    Proxy NGINX digunakan untuk meneruskan notifikasi peringatan. X-Pack Watcher mengirimkan notifikasi peringatan ke proxy, yang kemudian meneruskan notifikasi tersebut ke DingTalk atau WeCom.

    1. Instal NGINX pada instance ECS.

    2. Konfigurasikan file nginx.conf.

      Ganti konfigurasi server di file nginx.conf dengan kode berikut:

      server
        {
          listen 8080;# Port mendengarkan.
          server_name localhost;# Nama domain.
          index index.html index.htm index.php;
          root /usr/local/webserver/nginx/html;# Direktori situs web.
            location ~ .*\.(php|php5)?$
          {
            #fastcgi_pass unix:/tmp/php-cgi.sock;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
          }
          location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
          {
            expires 30d;
            # access_log off;
          }
          location / {
            proxy_pass <URL Webhook chatbot DingTalk>;
          }
          location ~ .*\.(js|css)?$
          {
            expires 15d;
            # access_log off;
          }
          access_log off;
        }

      Ganti <URL Webhook chatbot DingTalk> dengan URL webhook chatbot DingTalk yang Anda konfigurasikan untuk menerima notifikasi peringatan.

    3. Muat ulang file konfigurasi NGINX dan mulai ulang NGINX.

      /usr/local/webserver/nginx/sbin/nginx -s reload            # Muat ulang file konfigurasi NGINX.
      /usr/local/webserver/nginx/sbin/nginx -s reopen            # Mulai ulang NGINX.
  2. Konfigurasikan aturan grup keamanan untuk instance ECS.

    Aturan grup keamanan digunakan untuk mengizinkan proxy NGINX pada instance ECS menerima notifikasi peringatan dari kluster Elasticsearch.

    1. Masuk ke Konsol ECS.

    2. Di bilah navigasi di sebelah kiri, pilih Instance & Gambar > Instances.

    3. Di halaman Instances, temukan instance ECS dan klik namanya.

    4. Di halaman detail instance, klik tab Security Groups.

    5. Pada tab Security Groups, klik nama grup keamanan yang diinginkan.

    6. Di tab Inbound bagian Aturan Akses, klik Add Rule.

    7. Konfigurasikan parameter.

      Parameter

      Deskripsi

      Action

      Pilih Allow.

      Priority

      Biarkan nilai default.

      Protocol Type

      Pilih Custom TCP.

      Port Range

      Atur parameter ini ke port yang sering Anda gunakan. Dalam contoh ini, port 8080 digunakan.

      Authorization Object

      Masukkan alamat IP semua node di kluster Elasticsearch.

      Catatan

      Untuk informasi lebih lanjut tentang cara memperoleh alamat IP node, lihat Lihat informasi dasar node.

      Description

      Deskripsi aturan.

    8. Klik Save.

Langkah 3: Konfigurasikan watch untuk peringatan

  1. Masuk ke konsol Kibana kluster Elasticsearch Anda dan buka halaman utama konsol Kibana sesuai petunjuk.

    Untuk informasi lebih lanjut tentang cara masuk ke konsol Kibana, lihat Masuk ke konsol Kibana.

    Catatan

    Dalam contoh ini, kluster Elasticsearch V6.7.0 digunakan. Operasi pada kluster versi lain mungkin berbeda. Operasi aktual di konsol yang berlaku.

  2. Di bilah navigasi di sebelah kiri halaman yang muncul, klik Dev Tools.

  3. Di tab Console halaman yang muncul, jalankan perintah berikut untuk membuat watch.

    PUT _watcher/watch/ccr_watcher
    {
      "trigger": {
        "schedule": {
          "interval": "10s"
        }
      },
      "input": {
        "search": {
          "request": {
            "indices": [
              ".monitoring-es*" 
            ],
            "body": {
              "size": 0,
              "sort": [
                {
                  "timestamp": {
                    "order": "desc"
                  }
                }
              ],
              "query": {
                "bool": {
                  "must": [
                    {
                      "range": {
                        "timestamp": {
                          "gte": "now-10m"
                        }
                      }
                    },
                    {
                      "term": {
                        "type": {
                          "value": "ccr_stats"
                        }
                      }
                    },
                    {
                      "bool": {
                        "should": [
                          {
                            "range": {
                              "ccr_stats.time_since_last_read_millis": {
                                "gte": 600000
                              }
                            }
                          },
                          {
                            "script": {
                              "script": "long gap = doc['ccr_stats.leader_global_checkpoint'].value - doc['ccr_stats.follower_global_checkpoint'].value;\n            return gap>1000;"
    
    
                            }
                          }
                        ]
                      }
                    }
                  ]
                }
              },
              "aggs": {
                "NAME": {
                  "terms": {
                    "field": "ccr_stats.follower_index",
                    "size": 1000
                  }
                }
              }
            }
          }
        }
      },
      "condition": {
        "compare": {
          "ctx.payload.hits.total": {
            "gt": 0
          }
        }
      },
      "transform": {
        "script": """
        StringBuilder message = new StringBuilder();
    for (def bucket : ctx.payload.aggregations.NAME.buckets) {
      message.append(bucket.key).append('  ')
    }
        return [ 'delay_indices' : message.toString().trim()  ]
    """
      },
      "actions" : {
         "add_index": {
          "index": {
            "index": "ccr_delay_indices",
            "doc_type": "doc"
          }
        },
         "my_webhook": {
         "webhook" : {
            "method" : "POST",
            "url" : "http://<yourAddress>:8080",
            "body" : "{\"msgtype\": \"text\", \"text\": { \"content\": \"Harap diperhatikan: {{ctx.payload}}\"}}"
          }
        }
      }
    
    }

    Tabel berikut menjelaskan beberapa parameter kunci yang digunakan dalam kode di atas.

    Parameter

    Deskripsi

    trigger

    Interval pemeriksaan dilakukan. Konfigurasikan parameter ini berdasarkan kebutuhan bisnis Anda. Dalam contoh ini, parameter ini diatur ke 10s, yang menunjukkan bahwa pemeriksaan dilakukan setiap 10 detik.

    input.search.request.indices

    Indeks yang ingin Anda kueri dan periksa. Indeks .monitoring-es* menyimpan semua metrik yang didukung oleh kluster Elasticsearch, termasuk metrik terkait CCR.

    input.search.request.body

    Badan permintaan. Dalam contoh ini, informasi metrik terkait CCR yang dihasilkan dalam 10 menit terakhir dikueri dari sistem pemantauan. Jika salah satu dari kondisi berikut terpenuhi, sistem akan menentukan apakah akan melaporkan peringatan berdasarkan nilai parameter kondisi:

    • ccr_stats.time_since_last_read_millis > 600000 ms (10 min): Latensi pengiriman permintaan baca ke indeks pemimpin lebih besar dari 10 menit. Konfigurasikan parameter ini berdasarkan kebutuhan bisnis Anda.

    • ccr_stats.leader_global_checkpoint - ccr_stats.follower_global_checkpoint > 1000: Jarak antara pemimpin dan pengikut lebih besar dari 1.000. Konfigurasikan parameter ini berdasarkan kebutuhan bisnis Anda.

    condition

    Kondisi untuk melakukan tindakan. Dalam contoh ini, peringatan hanya dapat dilaporkan jika kondisi yang ditentukan dalam parameter input.search.request.body terpenuhi dan jumlah dokumen agregat yang dikembalikan lebih besar dari 0.

    transform

    Metode pra-pemrosesan. Dalam contoh ini, kunci bucket diperoleh dalam loop dan dipisahkan dengan spasi. Dengan cara ini, nama indeks tempat latensi terjadi dapat diidentifikasi.

    actions

    Tindakan yang dilakukan jika kondisi yang ditentukan terpenuhi. Dalam contoh ini, tindakan berikut ditentukan:

    • add_index: Tulis hasil yang dikembalikan ke indeks dan definisikan indeks yang digunakan untuk men-debug konfigurasi watch.

    • my_webhook: Kirim notifikasi peringatan menggunakan URL webhook.

    <yourAddress>

    Alamat host yang digunakan untuk menerima notifikasi peringatan.

    • Jika kluster Elasticsearch Anda ditempatkan di arsitektur jaringan baru, atur parameter ini ke nama domain titik akhir. Permintaan diteruskan berdasarkan nama domain. Untuk informasi lebih lanjut tentang cara memperoleh nama domain titik akhir, lihat Konfigurasikan koneksi privat untuk kluster Elasticsearch.

    • Jika kluster Elasticsearch Anda ditempatkan di arsitektur jaringan asli, atur parameter ini ke salah satu item berikut:

      • Alamat IP proxy NGINX. Dalam hal ini, permintaan diteruskan melalui Internet menggunakan proxy NGINX yang berada di VPC yang sama dengan kluster Elasticsearch.

      • URL webhook chatbot DingTalk.

    body

    Anda harus mengonfigurasi parameter ini berdasarkan pengaturan keamanan chatbot DingTalk.

    Sebagai contoh, di Langkah 1: Konfigurasikan chatbot DingTalk, Security Settings diatur ke Custom Keywords dan kata kunci catatan ditentukan. Dalam hal ini, chatbot DingTalk hanya mengirimkan notifikasi peringatan jika bidang konten di parameter body berisi catatan.

    Catatan

    Jika kesalahan No handler found for uri [/_xpack/watcher/watch/log_error_watch_2] and method [PUT] dikembalikan setelah Anda menjalankan perintah di atas, X-Pack Watcher dinonaktifkan untuk kluster Elasticsearch. Dalam hal ini, aktifkan X-Pack Watcher dan jalankan perintah lagi. Untuk informasi lebih lanjut, lihat Konfigurasikan file YML.

Langkah 4: Lihat notifikasi peringatan

Dalam kondisi normal, jika kondisi yang ditentukan di Langkah 3: Buat watch untuk peringatan terpenuhi, notifikasi peringatan dikirim ke grup DingTalk, seperti yang ditunjukkan pada gambar berikut.查看报警结果

Catatan

Jika Anda tidak lagi memerlukan watch ini, Anda dapat menjalankan perintah berikut untuk menghapus watch:

DELETE _xpack/watcher/watch/ccr_watcher