Uygulamanızı SkyWalking kullanarak enstrümante ettikten ve izleme verilerini Managed Service for OpenTelemetry hizmetine raporladıktan sonra, Managed Service for OpenTelemetry uygulamanızı izlemeye başlar. Uygulama topolojisi, izler, anormal işlemler, yavaş işlemler ve SQL analizi gibi çeşitli izleme verilerini görüntüleyebilirsiniz. Bu konuda, otomatik enstrümantasyon için SkyWalking Java Aracısının nasıl kullanılacağı açıklanmakta ve yapılandırılabilir nitelikleri hakkında bilgi verilmektedir.
Ön koşullar
SkyWalking indirme sayfasını açın ve SkyWalking 6.X.X veya daha yeni bir sürümü (en son kararlı sürüm önerilir) indirin. Çıkarılan agent klasörünü, Java işlemi tarafından erişilebilen bir dizine yerleştirin.
Tüm eklentiler
/pluginsdizininde depolanır. Yeni bir eklentiyi etkinleştirmek için başlatmadan önce bu dizine ekleyin. Bir eklentiyi devre dışı bırakmak için bu dizinden kaldırın. Varsayılan olarak günlük dosyaları/logsdizinine yazılır.
Günlük dosyaları, eklentiler ve yapılandırma dosyaları agent klasöründe bulunur. Dizin yapısını değiştirmeyin.
Arka plan
SkyWalking, mikro hizmet, Cloud Native ve konteyner tabanlı (Docker, Kubernetes ve Mesos) mimariler üzerine inşa edilmiş uygulamalar için tasarlanmış popüler bir Uygulama Performans İzleme (APM) aracıdır. SkyWalking'in çekirdeğinde dağıtık izleme sistemi yer alır.
Java uygulamanızdan Managed Service for OpenTelemetry konsoluna veri raporlamak için SkyWalking'i kullanmanız gerekir; bunun için öncelikle uygulamayı enstrümante etmelisiniz. SkyWalking, Dubbo, gRPC, JDBC, OkHttp, Spring, Tomcat, Struts ve Jedis gibi çerçeveler için otomatik enstrümantasyonu ve OpenTracing ile manuel enstrümantasyonu destekler. Bu konuda otomatik enstrümantasyon yöntemi açıklanmaktadır.
Demo
Kod deposu: SkyWalking Demo
SkyWalking ile Java uygulamasını enstrümante etme
SkyWalking Java Agent paketini indirin.
-
SkyWalking Java Agent yapılandırma dosyasında bağlantı ve hizmet bilgilerini yapılandırın.
collector.backend_service=<endpoint> // Replace with the endpoint obtained from the prerequisites. agent.authentication=<token> // Replace with the authentication token obtained from the prerequisites. agent.service_name=<service-name> // Replace with your actual service name. -
Uygulamanızın çalışma zamanı ortamına göre SkyWalking aracının yolunu belirtin.
NotAşağıdaki örneklerde
<skywalking-agent-path>ifadesini, agent klasöründeki skywalking-agent.jar dosyasının mutlak yoluyla değiştirin.Linux Tomcat 7 / Tomcat 8
Aşağıdaki satırı
tomcat/bin/catalina.shdosyasının ilk satırına ekleyin:CATALINA_OPTS="$CATALINA_OPTS -javaagent:<skywalking-agent-path>"; export CATALINA_OPTSWindows Tomcat 7 / Tomcat 8
Aşağıdaki satırı
tomcat/bin/catalina.batdosyasının ilk satırına ekleyin:set "CATALINA_OPTS=-javaagent:<skywalking-agent-path>"JAR or Spring Boot
Uygulamanızın başlatma komutuna -javaagent parametresini ekleyin.
Önemli-javaagent parametresi -jar parametresinden önce gelmelidir.
java -javaagent:<skywalking-agent-path> -jar yourApp.jarJetty
Aşağıdaki satırları
{JETTY_HOME}/start.iniyapılandırma dosyasına ekleyin:--exec -javaagent:<skywalking-agent-path> Uygulamanızı yeniden başlatın.
Yapılandırılabilir Java agent nitelikleri
SkyWalking Java aracı, kullanıcı tarafından yapılandırılabilen çok sayıda niteliği destekler. Niteliklerin tam listesi için demo örneğindeki config/agent.config dosyasına bakın.
Temel nitelikler
Aşağıdaki nitelikler apache-skywalking-java-agent-8.16.0 sürümüne dayanmaktadır.
Yapılandırma yöntemleri
Sistem özellikleri
agent.config dosyasındaki nitelik adından önce -Dskywalking. ön ekini kullanın. Örneğin:
# Configure agent.service_name using a system property
java -javaagent:/path/to/skywalking-agent.jar -Dskywalking.agent.service_name=<your_service_name> -jar your-project.jar
Agent seçenekleri
JVM bağımsız değişkenlerinde agent yoluna nitelikleri ekleyin.
# Syntax
-javaagent:/path/to/skywalking-agent.jar=[key1]=[value1],[key2]=[value2]
# Example
java -javaagent:/path/to/skywalking-agent.jar=agent.service_name=<your-service-name>,agent.authentication=<your-token> -jar your-project.jar
Ortam değişkenleri
SkyWalking aracı ortam değişkenlerini otomatik olarak okur. Her niteliğe karşılık gelen ortam değişkenini config/agent.config dosyasında bulabilirsiniz. Örneğin, agent.service_name için ortam değişkeni SW_AGENT_NAME şeklindedir.
agent.service_name=${SW_AGENT_NAME:default_name}
# Set the environment variable
export SW_AGENT_NAME=<your_service_name>
Öncelik sırası
Yapılandırma ayarları yüksekten düşüğe doğru şu öncelik sırasıyla uygulanır: agent seçenekleri, sistem özellikleri, ortam değişkenleri ve yapılandırma dosyası.
Java agent eklentileri
SkyWalking Java aracı çeşitli ara katmanları, çerçeveleri ve kitaplıkları destekler. Desteklenen tüm eklentiler demo uygulamasının /plugins klasöründe mevcuttur.
Eklentileri etkinleştirme
/plugins klasöründeki tüm eklentiler etkindir. Bir eklentiyi devre dışı bırakmak için JAR dosyasını /plugins klasöründen kaldırın.
Resmi olarak desteklenen eklentiler
Resmi olarak desteklenen tüm eklentiler /plugins klasöründe bulunur.
İsteğe bağlı eklentiler
İsteğe bağlı eklentiler, agent paketinin optional-plugins klasöründe veya üçüncü taraf bir depoda bulunur. İsteğe bağlı bir eklentiyi etkinleştirmek için JAR dosyasını /plugins klasörüne taşıyın.
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
Bootstrap eklentileri
Olası kararlılık riskleri nedeniyle tüm bootstrap eklentileri isteğe bağlıdır. Bunlar bootstrap-plugins klasöründe bulunur. Bir bootstrap eklentisini etkinleştirmek için JAR dosyasını /plugins klasörüne taşıyın.
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
Desteklenen eklentiler
Bazı eklentiler, olası performans etkileri veya kullanım sınırlamaları nedeniyle yalnızca üçüncü taraf bir depodan edinilebilir. Daha fazla bilgi için SkyAPM Java Plugin Extension deposuna bakın.
Eklenti geliştirme
Özel bir SkyWalking Java agent eklentisi geliştirmek için resmi belgelere bakın.
Managed Service for OpenTelemetry izleme raporlamasını destekler. Özel bir izleme eklentisi geliştirmeyle ilgili ayrıntılar için resmi belgelere bakın.
SSS
S: SkyWalking Aracısı sunucuya bağlandıktan sonra uygulamam neden görünmüyor?
C: Bu sorun, dağıtık izleme verilerinin raporlanmadığında ortaya çıkar. Bunu doğrulamak için {skywalking agent path}/logs/skywalking-api.log dosyasını kontrol edin. Veri raporlanıyorsa, aşağıdakine benzer bir SkyWalking Aracısı DEBUG günlüğünü görürsünüz. TraceSegmentServiceClient : 1 trace segments have been sent to collector. anahtar mesajı, dağıtık izleme verilerinin toplayıcıya başarıyla gönderildiğini onaylar.
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.
Veri raporlaması gerçekleşmiyorsa, olası nedenler arasında etkin örnekleme, yapılandırılmış filtreler veya dağıtık izler oluşturan isteklerin bulunmaması yer alabilir.
S: ARMS, SkyWalking Java Agent 9.x veya sonraki sürümleri destekliyor mu? JDK 21 ortamındaki uyumluluk sorunlarını nasıl çözebilirim?
C: ARMS, SkyWalking açık kaynaklı ajanlara bağlanmayı destekler. Ancak, belirli SkyWalking Java Agent sürümlerinin (örneğin skywalking-java-agent:9.2.0 veya skywalking-java-agent:9.6.0) JDK sürümleriyle uyumluluğu açık kaynak topluluğu tarafından belirlenir. Sürüm uyumluluğunu doğrulamak için resmi SkyWalking belgelerine danışın.
JDK 21 çalıştırıyorsanız ve Unsupported class file major version 65 hatasıyla karşılaşıyorsanız, bunun nedeni eski Agent sürümlerinin (örneğin 8.7.0) Java 21'i (sınıf dosyası ana sürümü 65) desteklemeyen bir Byte-buddy sürümüne bağlı olmasıdır. Bu sorunu çözmek için aşağıdaki yöntemlerden birini kullanın:
SkyWalking Java Agent sürümünüzü 8.16.0 veya daha yeni bir sürüme yükseltin. Bu sürüm, Java 21'i destekleyen bir Byte-buddy sürümü içerir.
Uygulamanızın JDK'sını mevcut Agent tarafından desteklenen bir sürüme düşürün.
Daha yüksek JDK sürümleri için kararlı desteğe ihtiyacınız varsa, bunun yerine ARMS'e özgü uygulama izleme ajanını kullanmanızı öneririz.
S: SkyWalking aracısının Pod yerel disk kullanımında önemli bir etkisi var mı?
C: SkyWalking aracısının Pod yerel diski üzerinde minimal bir etkisi vardır. Aracı, günlükleri yalnızca geçici olarak yerel depolamaya yazar (varsayılan yollar: ArmsAgent/log veya Agent klasörü içindeki /logs dizini). İzleme verilerini kalıcı olarak depolamaz. SkyWalking aracısının temel kaynak tüketimi CPU ve bellektir, disk değildir. Günlük dosyaları kısa bir süre tutulur ve sistem tarafından otomatik olarak temizlenir. Bu nedenle, SkyWalking aracısının Pod yerel disk kullanımında ihmal edilebilir bir etkisi vardır.
