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.
CatatanDalam 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.
CatatanX-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
Buat grup DingTalk untuk menerima notifikasi peringatan.
Klik ikon
di pojok kanan atas jendela obrolan grup DingTalk. Di panel Group Settings, klik Bot.Di panel Manajemen Robot, klik Add Robot.
Di kotak dialog Robot, klik Add Robot.
Klik kartu Custom. Di kotak dialog Detail Robot, klik Add.
Di kotak dialog Tambah Robot, pilih Custom Keywords untuk Pengaturan Keamanan. Masukkan satu atau lebih kata kunci dalam bidang yang muncul.
PentingKata kunci harus termasuk dalam informasi peringatan yang Anda konfigurasikan.
Baca dan setujui syarat layanan, lalu klik Finished.
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
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.
Instal NGINX pada instance ECS.
Konfigurasikan file nginx.conf.
Ganti konfigurasi
serverdi 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.
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.
Konfigurasikan aturan grup keamanan untuk instance ECS.
Aturan grup keamanan digunakan untuk mengizinkan proxy NGINX pada instance ECS menerima notifikasi peringatan dari kluster Elasticsearch.
Masuk ke Konsol ECS.
Di bilah navigasi di sebelah kiri, pilih Instance & Gambar > Instances.
Di halaman Instances, temukan instance ECS dan klik namanya.
Di halaman detail instance, klik tab Security Groups.
Pada tab Security Groups, klik nama grup keamanan yang diinginkan.
Di tab Inbound bagian Aturan Akses, klik Add Rule.
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.
CatatanUntuk informasi lebih lanjut tentang cara memperoleh alamat IP node, lihat Lihat informasi dasar node.
Description
Deskripsi aturan.
Klik Save.
Langkah 3: Konfigurasikan watch untuk peringatan
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.
CatatanDalam contoh ini, kluster Elasticsearch V6.7.0 digunakan. Operasi pada kluster versi lain mungkin berbeda. Operasi aktual di konsol yang berlaku.
Di bilah navigasi di sebelah kiri halaman yang muncul, klik Dev Tools.
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.
CatatanJika 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.
Jika Anda tidak lagi memerlukan watch ini, Anda dapat menjalankan perintah berikut untuk menghapus watch:
DELETE _xpack/watcher/watch/ccr_watcher