Setelah Anda melakukan instrumentasi aplikasi menggunakan SkyWalking dan melaporkan data jejak ke Managed Service for OpenTelemetry, Managed Service for OpenTelemetry mulai memantau aplikasi Anda. Anda dapat melihat berbagai data pemantauan, seperti topologi aplikasi, jejak (traces), transaksi abnormal, transaksi lambat, dan analisis SQL. Topik ini menjelaskan cara menggunakan SkyWalking Java Agent untuk instrumentasi otomatis serta menyediakan informasi mengenai atribut-atributnya yang dapat dikonfigurasi.
Prasyarat
-
Buka halaman unduhan SkyWalking dan unduh SkyWalking versi 6.X.X atau versi yang lebih baru (disarankan menggunakan versi stabil terbaru). Tempatkan folder agent hasil ekstraksi di direktori yang dapat diakses oleh proses Java.
-
Semua plugin disimpan di direktori
/plugins. Untuk mengaktifkan plugin baru, tambahkan ke direktori ini sebelum startup. Untuk menonaktifkan plugin, hapus dari direktori ini. Secara default, file log ditulis ke direktori/logs.
File log, plugin, dan file konfigurasi berada di folder agent. Jangan mengubah struktur direktorinya.
Latar Belakang
SkyWalking adalah alat Application Performance Monitoring (APM) populer yang dirancang untuk aplikasi berbasis arsitektur microservice, Cloud Native, dan containerized (Docker, Kubernetes, dan Mesos). Inti dari SkyWalking adalah sistem pelacakan terdistribusi (distributed tracing).
Untuk menggunakan SkyWalking dalam melaporkan data dari aplikasi Java Anda ke konsol Managed Service for OpenTelemetry, Anda harus terlebih dahulu melakukan instrumentasi aplikasi. SkyWalking mendukung instrumentasi otomatis untuk framework seperti Dubbo, gRPC, JDBC, OkHttp, Spring, Tomcat, Struts, dan Jedis, serta instrumentasi manual dengan OpenTracing. Topik ini menjelaskan metode instrumentasi otomatis.
Demo
Repositori kode: SkyWalking Demo
Lakukan instrumentasi aplikasi Java dengan SkyWalking
-
Unduh SkyWalking Java Agent.
-
Konfigurasikan informasi koneksi dan layanan di file konfigurasi SkyWalking Java Agent.
collector.backend_service=<endpoint> // Ganti dengan endpoint yang diperoleh dari prasyarat. agent.authentication=<token> // Ganti dengan token otentikasi yang diperoleh dari prasyarat. agent.service_name=<service-name> // Ganti dengan nama layanan aktual Anda. -
Tentukan jalur ke agen SkyWalking berdasarkan lingkungan runtime aplikasi Anda.
CatatanPada contoh berikut, ganti
<skywalking-agent-path>dengan jalur mutlak ke skywalking-agent.jar di folder agent.Linux Tomcat 7 / Tomcat 8
Tambahkan baris berikut ke baris pertama
tomcat/bin/catalina.sh:CATALINA_OPTS="$CATALINA_OPTS -javaagent:<skywalking-agent-path>"; export CATALINA_OPTSWindows Tomcat 7 / Tomcat 8
Tambahkan baris berikut ke baris pertama
tomcat/bin/catalina.bat:set "CATALINA_OPTS=-javaagent:<skywalking-agent-path>"JAR atau Spring Boot
Tambahkan parameter -javaagent ke perintah startup aplikasi Anda.
PentingParameter -javaagent harus muncul sebelum parameter -jar.
java -javaagent:<skywalking-agent-path> -jar yourApp.jarJetty
Tambahkan baris-baris berikut ke file konfigurasi
{JETTY_HOME}/start.ini:--exec -javaagent:<skywalking-agent-path> -
Mulai ulang aplikasi Anda.
Atribut agen Java yang dapat dikonfigurasi
Agen Java SkyWalking mendukung berbagai atribut yang dapat dikonfigurasi pengguna. Untuk daftar lengkap atribut, lihat file config/agent.config dalam demo contoh.
Atribut utama
Atribut berikut didasarkan pada apache-skywalking-java-agent-8.16.0.
Metode konfigurasi
Properti sistem
Gunakan awalan -Dskywalking. diikuti nama atribut dari file agent.config. Contohnya:
# Konfigurasikan agent.service_name menggunakan properti sistem
java -javaagent:/path/to/skywalking-agent.jar -Dskywalking.agent.service_name=<your_service_name> -jar your-project.jar
Opsi agen
Tambahkan atribut ke jalur agen dalam argumen JVM.
# Sintaks
-javaagent:/path/to/skywalking-agent.jar=[key1]=[value1],[key2]=[value2]
# Contoh
java -javaagent:/path/to/skywalking-agent.jar=agent.service_name=<your-service-name>,agent.authentication=<your-token> -jar your-project.jar
Variabel lingkungan
Agen SkyWalking secara otomatis membaca variabel lingkungan. Anda dapat menemukan variabel lingkungan yang sesuai untuk setiap atribut di file config/agent.config. Misalnya, variabel lingkungan untuk agent.service_name adalah SW_AGENT_NAME.
agent.service_name=${SW_AGENT_NAME:default_name}
# Atur variabel lingkungan
export SW_AGENT_NAME=<your_service_name>
Urutan prioritas
Pengaturan konfigurasi diterapkan dengan urutan prioritas berikut, dari tertinggi ke terendah: opsi agen, properti sistem, variabel lingkungan, dan file konfigurasi.
Plugin agen Java
Agen Java SkyWalking mendukung berbagai middleware, framework, dan library. Semua plugin yang didukung tersedia di folder /plugins aplikasi demo.
Aktifkan plugin
Semua plugin di folder /plugins aktif. Untuk menonaktifkan plugin, hapus file JAR-nya dari folder /plugins.
Plugin yang didukung resmi
Semua plugin yang didukung resmi berada di folder /plugins.
Plugin opsional
Plugin opsional berada di folder optional-plugins dalam paket agen atau di repositori pihak ketiga. Untuk mengaktifkan plugin opsional, pindahkan file JAR-nya ke folder /plugins.
optional-plugins/
apm-customize-enhance-plugin-8.16.0.jar
apm-ehcache-2.x-plugin-8.16.0.jar
apm-fastjson-1.x-plugin-8.16.0.jar
apm-gson-2.x-plugin-8.16.0.jar
apm-guava-cache-plugin-8.16.0.jar
apm-jackson-2.x-plugin-8.16.0.jar
apm-kotlin-coroutine-plugin-8.16.0.jar
apm-mybatis-3.x-plugin-8.16.0.jar
apm-quartz-scheduler-2.x-plugin-8.16.0.jar
apm-resttemplate-6.x-plugin-8.16.0.jar
apm-sentinel-1.x-plugin-8.16.0.jar
apm-shenyu-2.4.x-plugin-8.16.0.jar
apm-spring-annotation-plugin-8.16.0.jar
apm-spring-cloud-gateway-2.0.x-plugin-8.16.0.jar
apm-spring-cloud-gateway-2.1.x-plugin-8.16.0.jar
apm-spring-cloud-gateway-3.x-plugin-8.16.0.jar
apm-spring-tx-plugin-8.16.0.jar
apm-spring-webflux-5.x-plugin-8.16.0.jar
apm-springmvc-annotation-6.x-plugin-8.16.0.jar
apm-trace-ignore-plugin-8.16.0.jar
apm-zookeeper-3.4.x-plugin-8.16.0.jar
trace-sampler-cpu-policy-plugin-8.16.0.jar
Plugin bootstrap
Karena potensi risiko stabilitas, semua plugin bootstrap bersifat opsional. Plugin ini berada di folder bootstrap-plugins. Untuk mengaktifkan plugin bootstrap, pindahkan file JAR-nya ke folder /plugins.
bootstrap-plugins/
apm-jdk-forkjoinpool-plugin-8.16.0.jar
apm-jdk-http-plugin-8.16.0.jar
apm-jdk-threading-plugin-8.16.0.jar
apm-jdk-threadpool-plugin-8.16.0.jar
Plugin yang didukung
Beberapa plugin hanya tersedia dari repositori pihak ketiga karena potensi dampak kinerja atau batasan penggunaan. Untuk informasi lebih lanjut, lihat repositori Ekstensi Plugin Java SkyAPM.
Pengembangan plugin
Untuk mengembangkan plugin agen Java SkyWalking kustom, rujuk ke dokumentasi resmi.
Managed Service for OpenTelemetry mendukung pelaporan jejak. Lihat dokumentasi resmi untuk detail mengenai pengembangan plugin jejak kustom.
FAQ
T: Mengapa aplikasi saya tidak muncul setelah Agen SkyWalking terhubung ke server?
J: Masalah ini terjadi ketika data pelacakan terdistribusi tidak dilaporkan. Untuk memverifikasi hal ini, periksa file {skywalking agent path}/logs/skywalking-api.log. Jika data sedang dilaporkan, Anda akan melihat log DEBUG dari SkyWalking Agent seperti di bawah ini. Pesan kunci, TraceSegmentServiceClient : 1 trace segments have been sent to collector., mengonfirmasi bahwa data pelacakan terdistribusi berhasil dikirim ke collector.
DEBUG 2020-03-09 17:18:16:356 SkywalkingAgent-5-ServiceAndEndpointRegisterClient-0 ServiceAndEndpointRegisterClient : ServiceAndEndpointRegisterClient running, status:CONNECTED.
DEBUG 2020-03-09 17:18:19:357 SkywalkingAgent-5-ServiceAndEndpointRegisterClient-0 ServiceAndEndpointRegisterClient : ServiceAndEndpointRegisterClient running, status:CONNECTED.
DEBUG 2020-03-09 17:18:21:301 DataCarrier.DEFAULT.Consumer.0.Thread TraceSegmentServiceClient : 1 trace segments have been sent to collector.
DEBUG 2020-03-09 17:18:22:353 SkywalkingAgent-2-GRPCChannelManager-0 GRPCChannelManager : Selected collector grpc service running, reconnect:false.
DEBUG 2020-03-09 17:18:22:357 SkywalkingAgent-5-ServiceAndEndpointRegisterClient-0 ServiceAndEndpointRegisterClient : ServiceAndEndpointRegisterClient running, status:CONNECTED.
DEBUG 2020-03-09 17:18:25:356 SkywalkingAgent-5-ServiceAndEndpointRegisterClient-0 ServiceAndEndpointRegisterClient : ServiceAndEndpointRegisterClient running, status:CONNECTED.
Jika pelaporan data tidak terjadi, kemungkinan penyebabnya termasuk pengambilan sampel yang diaktifkan, filter yang dikonfigurasi, atau tidak adanya permintaan yang menghasilkan jejak terdistribusi.
T: Apakah ARMS mendukung SkyWalking Java Agent versi 9.x atau yang lebih baru? Bagaimana cara mengatasi masalah kompatibilitas di lingkungan JDK 21?
J: ARMS mendukung koneksi ke agen open-source SkyWalking. Namun, kompatibilitas versi tertentu SkyWalking Java Agent (seperti skywalking-java-agent:9.2.0 atau skywalking-java-agent:9.6.0) dengan versi JDK ditentukan oleh komunitas open-source. Untuk memastikan kompatibilitas versi, konsultasikan dokumentasi resmi SkyWalking.
Jika Anda menjalankan JDK 21 dan mengalami error Unsupported class file major version 65, penyebabnya adalah versi Agent lama (seperti 8.7.0) bergantung pada versi Byte-buddy yang tidak mendukung Java 21 (class file major version 65). Untuk mengatasi masalah ini, gunakan salah satu metode berikut:
-
Upgrade SkyWalking Java Agent Anda ke versi 8.16.0 atau yang lebih baru. Versi ini menyertakan rilis Byte-buddy yang mendukung Java 21.
-
Turunkan JDK aplikasi Anda ke versi yang didukung oleh Agent Anda saat ini.
Jika Anda membutuhkan dukungan stabil untuk versi JDK yang lebih tinggi, kami sarankan menggunakan agen pemantauan aplikasi proprietary ARMS.
T: Apakah agen SkyWalking berdampak signifikan terhadap penggunaan disk lokal Pod?
J: Agen SkyWalking memiliki dampak minimal terhadap disk lokal Pod. Agen hanya menulis log secara sementara ke penyimpanan lokal (jalur default: ArmsAgent/log atau direktori /logs di dalam folder Agent). Agen tidak menyimpan data jejak secara persisten. Konsumsi sumber daya utama agen SkyWalking adalah CPU dan memori, bukan disk. File log disimpan untuk periode singkat dan secara otomatis dibersihkan oleh sistem. Oleh karena itu, agen SkyWalking memiliki dampak yang dapat diabaikan terhadap penggunaan disk lokal Pod.
