SkyWalking adalah sistem Pemantauan Kinerja Aplikasi (APM) dan tracing terdistribusi. Topik ini menjelaskan cara mengonfigurasi SkyWalking agar menggunakan kluster Alibaba Cloud Elasticsearch V7.4.0 sebagai backend penyimpanannya, sehingga memungkinkan observabilitas end-to-end untuk aplikasi terdistribusi Anda.
Cara kerja
SkyWalking mengumpulkan data telemetri dari agen yang berjalan di aplikasi Anda, lalu meneruskan data tersebut ke server SkyWalking OAP (Observability Analysis Platform). OAP menganalisis dan mengagregasi data tersebut serta menyimpannya di Elasticsearch. UI SkyWalking membaca data dari Elasticsearch untuk merender Dasbor dan jejak.
SkyWalking mendukung dua mode instrumentasi:
-
Auto-instrument agents: Instrumentasi aplikasi Anda secara otomatis tanpa mengubah kode aplikasi. Mendukung berbagai framework dan library secara langsung.
-
Manual-instrument agents: Gunakan SDK OpenTracing untuk menginstrumentasi komponen yang tidak didukung oleh auto-instrument agents, termasuk komponen privat atau kustom. Instrumentasi otomatis dan manual dapat digunakan bersamaan.
SkyWalking menerima data dari berbagai sumber, termasuk agen SkyWalking untuk berbagai bahasa, Zipkin v1, Zipkin v2, telemetri Istio, dan Envoy.
Topik ini membahas penggunaan kluster Alibaba Cloud Elasticsearch V7.4.0 sebagai backend penyimpanan SkyWalking. Untuk melaporkan data aplikasi Java ke SkyWalking, lihat Gunakan SkyWalking untuk melaporkan data aplikasi Java. Untuk daftar lengkap middleware dan komponen yang didukung oleh SkyWalking, lihat Dokumentasi Apache SkyWalking.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Kluster Alibaba Cloud Elasticsearch V7.4.0. Lihat Buat kluster Alibaba Cloud Elasticsearch.
-
Server Linux dengan JDK 1.8.0 atau versi lebih baru yang telah diinstal. Disarankan menggunakan Instance Elastic Compute Service (ECS). Lihat Buat Instance ECS dan Instal JDK.
-
Port 8080, 10800, 11800, dan 12800 pada server Linux tersedia.
-
Firewall dan Security-Enhanced Linux (SELinux) dinonaktifkan pada server Linux.
Jika JDK tidak diinstal dengan benar, log SkyWalking akan menampilkanJava not foundataujava-xxx: No such file or directorysaat Anda menjalankan layanan.
Langkah 1: Unduh dan instal SkyWalking
-
Unduh paket SkyWalking untuk Elasticsearch 7 ke server Linux Anda. Karena topik ini menggunakan kluster Elasticsearch V7.4.0, pilih Binary Distribution for Elasticsearch 7 dari halaman unduhan SkyWalking. Jalankan perintah berikut untuk mengunduh paket:
wget https://archive.apache.org/dist/skywalking/7.0.0/apache-skywalking-apm-es7-7.0.0.tar.gz -
Ekstrak paket tersebut:
tar -zxvf apache-skywalking-apm-es7-7.0.0.tar.gz -
Verifikasi file yang diekstrak:
ls apache-skywalking-apm-bin-es7/Output yang diharapkan:
agent bin config LICENSE licenses NOTICE oap-libs README.txt tools webapp
Langkah 2: Konfigurasikan SkyWalking untuk terhubung ke kluster Elasticsearch
SkyWalking menggunakan H2 sebagai backend penyimpanan default, tetapi H2 tidak mendukung penyimpanan data persisten. Ubah backend penyimpanan ke Elasticsearch dengan mengedit file application.yml.
-
Buka file
application.ymldi folderconfig:cd apache-skywalking-apm-bin-es7/config/ vi application.yml -
Temukan bagian
storage. Ubah selector dariH2menjadielasticsearch7, lalu konfigurasikan parameter koneksi:storage: selector: ${SW_STORAGE:elasticsearch7} elasticsearch7: nameSpace: ${SW_NAMESPACE:"skywalking-index"} clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:es-cn-4591kzdzk000i****.public.elasticsearch.aliyuncs.com:9200} protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"} # trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"} # trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""} enablePackedDownsampling: ${SW_STORAGE_ENABLE_PACKED_DOWNSAMPLING:true} # Metrik Jam dan Hari akan digabungkan ke indeks menit. dayStep: ${SW_STORAGE_DAY_STEP:1} # Mewakili jumlah hari dalam satu indeks menit/jam/hari. user: ${SW_ES_USER:"elastic"} password: ${SW_ES_PASSWORD:"es_password"}PentingPertahankan
trustStorePathdantrustStorePassdalam keadaan dikomentari. Mengaktifkannya tanpa file keystore yang valid akan menyebabkan errorNoSuchFileException: ../es_keystore.jks.Parameter utama adalah:
Parameter Deskripsi selectorSelector backend penyimpanan. Atur ke elasticsearch7.nameSpaceAwalan yang diterapkan pada semua nama indeks yang dibuat di kluster Elasticsearch. clusterNodesTitik akhir publik kluster Elasticsearch Anda. Karena SkyWalking dan kluster Elasticsearch berada di VPC yang berbeda, gunakan titik akhir publik. Untuk menemukan titik akhir tersebut, lihat Lihat informasi dasar kluster. userUsername untuk kluster Elasticsearch. Default: elastic.passwordPassword untuk pengguna elastic, yang ditetapkan saat Anda membuat kluster. Untuk mengatur ulang password, lihat Atur ulang password akses kluster Elasticsearch. -
(Opsional) Ubah alamat IP pendengar atau nomor port di bagian
corepada fileapplication.yml. Nilai default adalah port 12800 untuk RESTful API dan port 11800 untuk gRPC. Topik ini menggunakan nilai default.core: selector: ${SW_CORE:default} default: # Mixed: Terima data agen, agregasi Level 1, agregasi Level 2 # Receiver: Terima data agen, agregasi Level 1 # Aggregator: agregasi Level 2 role: ${SW_CORE_ROLE:Mixed} # Mixed/Receiver/Aggregator restHost: ${SW_CORE_REST_HOST:0.0.0.0} restPort: ${SW_CORE_REST_PORT:12800} restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/} gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0} gRPCPort: ${SW_CORE_GRPC_PORT:11800} -
(Opsional) Modifikasi
webapp/webapp.ymluntuk mengubah port UI atau titik akhir backend. Topik ini menggunakan nilai default.server: port: 8080 collector: path: /graphql ribbon: ReadTimeout: 10000 # Arahkan ke semua restHost:restPort backend, dipisahkan dengan , listOfServers: 127.0.0.1:12800
Langkah 3: Jalankan SkyWalking dan verifikasi hasilnya
-
Pastikan kluster Elasticsearch sedang berjalan sebelum menjalankan SkyWalking.
-
Jalankan skrip startup dari direktori
bin:cd ../bin ./startup.shJika startup berhasil, Anda akan melihat:
SkyWalking OAP started successfully! SkyWalking Web Application started successfully!Menjalankan
startup.shakan menjalankan SkyWalking OAP dan UI SkyWalking sekaligus. -
Buka
http://<alamat IP server Linux>:8080/di browser untuk mengakses UI SkyWalking.Pertama kali SkyWalking terhubung ke Elasticsearch, proses startup lebih lambat dari biasanya karena SkyWalking membuat banyak indeks di kluster. Halaman UI mungkin tampak kosong hingga pembuatan indeks selesai. Untuk memeriksa perkembangannya, lihat log di
<path instalasi SkyWalking>/logs/skywalking-oap-server.log.Setelah berhasil diakses, Dasbor pemantauan SkyWalking Rocketbot akan ditampilkan. Dasbor tersebut berisi Bilah navigasi seperti Dashboard, Topology, dan Trace. Di tampilan Global, wajar jika panel pemantauan (Heatmap, Persentil Waktu Respons, Ringkasan Global, dan sebagainya) tidak menampilkan data. Hal ini menunjukkan bahwa layanan telah berjalan, tetapi belum ada data agen aplikasi yang terhubung.
-
Verifikasi bahwa SkyWalking telah membuat indeksnya di Elasticsearch. Masuk ke konsol Kibana kluster Anda — lihat Masuk ke konsol Kibana — lalu jalankan:
GET _cat/indices?vHasilnya akan menampilkan banyak indeks yang namanya diawali dengan
skywalking-index.Setelah menjalankan perintah tersebut, data indeks serupa berikut akan dikembalikan, yang menunjukkan bahwa SkyWalking telah berhasil menulis data ke Elasticsearch.
green open skywalking-index_all_percentile-20200408 green open skywalking-index_endpoint_inventory green open skywalking-index_service_apdex-20200408 green open skywalking-index_database_access_resp_time_month-202004 green open skywalking-index_service_relation_client_cpm-20200408 green open skywalking-index_database_access_sla_month-202004 green open skywalking-index_service_relation_server_call_sla-20200408 green open skywalking-index_endpoint_sla-20200408 green open skywalking-index_instance_jvm_memory_noheap-20200408 green open skywalking-index_service_relation_server_percentile-20200408 green open skywalking-index_service_instance_relation_server_resp_time-20200408 green open skywalking-index_profile_task_segment_snapshot-20200408 green open skywalking-index_endpoint_relation_cpm-20200408 green open skywalking-index_instance_jvm_old_gc_time-20200408 green open skywalking-index_service_sla-20200408 green open skywalking-index_top_n_database_statement-20200408 green open skywalking-index_service_relation_client_call_sla-20200408 green open skywalking-index_endpoint_percentile_month-202004 green open apm-agent-configuration
Langkah selanjutnya
-
Untuk menghubungkan aplikasi Anda ke SkyWalking, tambahkan JAR agen di
apache-skywalking-apm-bin-es7/agent/skywalking-agent.jarke argumen startup JVM aplikasi Anda. -
Untuk mempelajari lebih lanjut tentang middleware dan komponen yang didukung, lihat Dokumentasi Apache SkyWalking.
-
Untuk melaporkan data aplikasi Java langsung ke SkyWalking, lihat Gunakan SkyWalking untuk melaporkan data aplikasi Java.