Elasticsearch X-Pack Watcher memantau infrastruktur, data indeks, dan metrik kesehatan kluster melalui fitur peringatan bawaannya. Anda dapat menggunakannya bersama Konsol Kibana untuk melacak status replikasi antar kluster (CCR) serta mengirim peringatan ketika latensi permintaan baca atau keterlambatan checkpoint melebihi ambang batas yang ditentukan.
Cara kerja
X-Pack Watcher terdiri dari empat komponen: trigger yang menentukan frekuensi eksekusi watch, input yang mengambil data pemantauan dari kluster, condition yang mengevaluasi apakah ambang batas peringatan tercapai, dan actions yang menentukan respons saat kondisi terpenuhi, seperti mengirim webhook.
Prasyarat
Anda telah membuat instans Alibaba Cloud Elasticsearch. Untuk informasi selengkapnya, lihat Buat instans Alibaba Cloud Elasticsearch.
CatatanPada arsitektur jaringan lama, X-Pack Watcher hanya mendukung instans Elasticsearch zona ketersediaan tunggal. Instans multi-zona ketersediaan tidak didukung.
Pada arsitektur jaringan baru, Anda harus mengonfigurasi koneksi PrivateLink untuk instans agar melewati pembatasan jaringan. Untuk informasi selengkapnya, lihat Konfigurasikan koneksi PrivateLink untuk instans.
Untuk informasi selengkapnya tentang arsitektur jaringan, lihat [Pemberitahuan] Penyesuaian arsitektur jaringan.
Anda telah mengaktifkan X-Pack Watcher pada instans Elasticsearch Anda. Untuk informasi selengkapnya, lihat Konfigurasikan parameter YML.
Anda telah membuat instans ECS di virtual private cloud (VPC) Anda. Untuk informasi selengkapnya, lihat Buat instans menggunakan pengaturan kustom.
CatatanX-Pack Watcher di Alibaba Cloud Elasticsearch tidak dapat mengakses internet publik secara langsung. Komunikasi dilakukan melalui titik akhir pribadi instans Anda di dalam VPC. Oleh karena itu, instans ECS di VPC Anda harus memiliki akses internet publik, baik dengan mengaitkan alamat IP elastis (EIP) maupun dengan mengonfigurasi translasi alamat jaringan sumber (SNAT). Untuk informasi selengkapnya, lihat Kaitkan EIP atau Konfigurasikan SNAT.
Prosedur
Langkah 1: Buat dan konfigurasikan bot DingTalk
Buat grup DingTalk untuk menerima peringatan.
Di pojok kanan atas grup, klik ikon
. Di panel Group Settings, klik Bot.Di kotak dialog Robot Management , klik Add Robot, pilih Custom, lalu klik Add.
Masukkan Robot Name, pilih Custom Keywords, lalu masukkan kata kunci Anda.
PentingKata kunci tersebut harus disertakan dalam pesan peringatan yang Anda konfigurasi.
Pilih I have read and agree to the "Custom Robot Service and Disclaimer Terms", lalu klik Complete.
Di samping Webhook, klik Copy untuk menyalin URL webhook bot.
Jaga kerahasiaan URL webhook tersebut. Membagikannya di situs web eksternal menimbulkan risiko keamanan.
Langkah 2: Konfigurasikan proxy NGINX dan security group ECS
Konfigurasikan proxy NGINX pada instans ECS Anda.
X-Pack Watcher mengirim peringatan ke proxy NGINX di instans ECS Anda, yang kemudian meneruskannya ke DingTalk atau WeCom.
Instal NGINX pada instans ECS.
Konfigurasikan file nginx.conf.
Ganti bagian
serverdalam file nginx.conf dengan konfigurasi berikut.server { listen 8080;# Port listener server_name localhost;# Nama domain index index.html index.htm index.php; root /usr/local/webserver/nginx/html;# Direktori situs 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 <Webhook URL>; } location ~ .*\.(js|css)?$ { expires 15d; # access_log off; } access_log off; }Ganti <Webhook URL> dengan URL webhook bot DingTalk yang Anda salin di Langkah 1.
Muat ulang file konfigurasi dan restart NGINX.
/usr/local/webserver/nginx/sbin/nginx -s reload # Muat ulang file konfigurasi /usr/local/webserver/nginx/sbin/nginx -s reopen # Restart NGINX
Konfigurasikan security group ECS.
Izinkan lalu lintas inbound dari instans Alibaba Cloud Elasticsearch Anda ke proxy NGINX pada instans ECS.
Login ke Konsol ECS Alibaba Cloud.
Di panel navigasi kiri, pilih .
Di halaman Cluster, klik nama instans target.
Klik tab Security Group.
Di tab Security Groups, klik nama security group target.
Di tab Inbound, klik Add Rule.
Konfigurasikan parameter.
Parameter
Deskripsi
Action
Pilih Permitted.
Priority
Pertahankan nilai default.
Protocol
Pilih Custom TCP.
Access Source
Masukkan alamat IP semua node di instans Alibaba Cloud Elasticsearch Anda.
CatatanUntuk mendapatkan alamat IP node, lihat Lihat informasi dasar tentang node.
Destination
Masukkan port yang dikonfigurasi NGINX untuk didengarkan. Topik ini menggunakan port 8080 sebagai contoh.
Description
Masukkan deskripsi aturan.
Klik OK.
Langkah 3: Konfigurasikan watch
Login ke konsol Kibana kluster Elasticsearch Anda.
Untuk petunjuknya, lihat Login ke konsol Kibana.
CatatanContoh ini menggunakan Elasticsearch V6.7.0. Langkah-langkahnya mungkin sedikit berbeda untuk versi lain.
Di bilah navigasi kiri, pilih .
-
Di Console, 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\": \"Please note: {{ctx.payload}}\"}}" } } } }Tabel berikut menjelaskan parameter utama.
Parameter
Deskripsi
trigger
Interval pemicu watch. Dalam contoh ini, intervalnya adalah 10 detik. Sesuaikan nilai ini sesuai kebutuhan.
input.search.request.indices
Indeks target untuk dikueri. Indeks .monitoring-es* menyimpan semua metrik pemantauan untuk kluster, termasuk metrik CCR.
input.search.request.body
Body kueri. Contoh ini mengkueri status CCR dari 10 menit terakhir. Watch dilanjutkan jika salah satu kondisi berikut terpenuhi:
-
ccr_stats.time_since_last_read_millis > 600000 ms (10 menit): Lebih dari 10 menit telah berlalu sejak operasi baca terakhir dari kluster leader. Sesuaikan ambang batas ini sesuai kebutuhan.
-
Selisih antara ccr_stats.leader_global_checkpoint dan ccr_stats.follower_global_checkpoint lebih besar dari 1.000. Artinya checkpoint follower tertinggal lebih dari 1.000 operasi dari checkpoint leader. Sesuaikan ambang batas ini sesuai kebutuhan.
condition
Kondisi pemicu peringatan. Dalam contoh ini, peringatan dipicu jika kondisi dalam input.search.request.body terpenuhi dan kueri mengembalikan lebih dari nol dokumen yang cocok.
transform
Langkah pra-pemrosesan. Contoh ini melakukan iterasi melalui kunci bucket dan mengekstraksi nama-nama indeks yang tertinggal.
actions
Aksi yang dieksekusi jika kondisi bernilai true. Contoh ini menentukan dua aksi:
-
add_index: Menulis hasil ke indeks, yang berguna untuk debugging konfigurasi watch. -
my_webhook: Mengirim peringatan menggunakan webhook.
<yourAddress>
Alamat server yang menerima peringatan:
-
Untuk kluster yang menggunakan arsitektur jaringan baru, atur parameter ini ke titik akhir koneksi privat. Untuk informasi selengkapnya tentang cara mendapatkan titik akhir, lihat Konfigurasikan koneksi privat untuk kluster Elasticsearch.
-
Untuk kluster yang menggunakan arsitektur jaringan asli, atur parameter ini ke salah satu alamat berikut:
-
Alamat IP proxy NGINX. Proxy NGINX meneruskan permintaan dari dalam VPC ke internet.
-
URL webhook chatbot DingTalk.
-
body
Konfigurasikan nilai ini sesuai pengaturan keamanan chatbot DingTalk.
Sebagai contoh, jika Anda memilih Custom Keywords sebagai Security Settings dan menambahkan note sebagai kata kunci di Langkah 1: Buat dan konfigurasikan chatbot DingTalk, bidang content dalam body harus berisi kata note agar chatbot memproses peringatan tersebut.
CatatanJika Anda melihat error
No handler found for uri [/_xpack/watcher/watch/log_error_watch_2] and method [PUT]saat menjalankan perintah, X-Pack Watcher belum diaktifkan pada instans Alibaba Cloud Elasticsearch Anda. Aktifkan terlebih dahulu, lalu jalankan kembali perintah tersebut. Untuk informasi selengkapnya, lihat Konfigurasikan parameter YML. -
Langkah 4: Lihat peringatan
Jika status CCR memenuhi kondisi peringatan yang dikonfigurasi di Langkah 3: Konfigurasikan watch, Anda akan menerima peringatan di grup DingTalk Anda.
Jika Anda tidak lagi memerlukan watch tersebut, jalankan perintah berikut untuk menghapusnya.
DELETE _watcher/watch/ccr_watcher