Skywalking 分散リンク トレーシングの概要

Skywalking 分散リンク トレーシングの概要

今日は、分散リンクトラッキングソフトウェアを紹介します。リンクトラッキングを導入する必要があるのはなぜですか?

現在、インターネット業界は活況を呈しており、ビジネスはますます複雑かつ大規模になっています。スタンドアロン アプリケーションでは日常のニーズを満たすことができなくなり、分散型およびマイクロサービス アーキテクチャが登場しました。マイクロサービス環境では、さまざまなサービスで日常的なシステムへの呼び出しがレイヤーごとに継続的に行われます。呼び出しチェーンの完全な記録がない場合、問題のトラブルシューティングは非常に困難になります。

[[357992]]

APM (アプリケーション パフォーマンス管理)

上記の状況に対応して、apm は解決策を提示しました。業界で一般的な APM ツールとしては、Cat、Zipkin、Pinpoint、SkyWalking などがあります。

本記事では、国産の優れたAPMツールであり、Apache FoundationのトッププロジェクトにもなっているSkyWalkingを中心に紹介します。これには、分散トレース、パフォーマンス指標分析、アプリケーションおよびサービスの依存関係分析などが含まれます。

スカイウォーキングを始める

ソフトウェアのインストールについては説明されていませんが、情報はご自身で確認できます。

公式アドレス: https://skywalking.apache.org/

まず、以下に示すように、ソフトウェアの操作インターフェースを見てみましょう。


スカイウォーキングの3つの重要な概念を紹介する

  • サービス: サービス クラスターを参照します
  • エンドポイント: 外部インターフェース
  • インスタンス: クラスター内のインスタンスを指します

スカイウォーキングアーキテクチャ図


スカイウォーキングは、3 つの主要な部分から構成されています。最初の部分はデータ収集、2 番目の部分はスカイウォーキング サービス、3 番目の部分はデータ ストレージです。

プロジェクトをスカイウォーキングにどうつなげるか?

スカイウォーキングへのアクセスは非常に簡単です。以下に示すように、Javaの起動パラメータを指定するだけです。


  1. //実行するJavaエージェントを指定する
  2. -javaagent:D:\soft\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
  3. // スカイウォーキングのプログラム名を設定する
  4. -Dskywalking.agent.service_name=ストレステスト
  5. // スカイウォーキング管理ポート
  6. -Dskywalking.collector.backend_service=localhost:11800

スカイウォーキングの原理

上記のアプリケーションケースを見るとわかるように、次のコードがあります。

  1. -javaagent:/path//skywalking-agent.jar

Java エージェントについて知っている場合は、Skywalking の原理は Java エージェント (Java プローブ) を使用することだとわかります。 Java エージェントは、java コマンドのパラメーターです。パラメータ javaagent を使用して jar パッケージを指定できます。

  • この jar パッケージの MANIFEST.MF ファイルでは、Premain-Class 項目を指定する必要があります。
  • Premain-Class で指定されたクラスは、premain() メソッドを実装する必要があります。

Java 仮想マシンが起動すると、main 関数を実行する前に、JVM はまず -javaagent で指定された jar パッケージ内の Premain Class クラスの premain メソッドを実行します。

独自のJavaエージェントの実装

簡単なJavaエージェントを書いてみよう

エージェントコード

  1. パブリッククラスMyAgent {
  2. /**
  3. * agentArgs は、premain 関数によって取得されるプログラム パラメーターであり、「-javaagent」とともに渡されます。
  4. * Inst は java.lang.instrument.Instrumentation のインスタンスであり、JVM によって自動的に渡されます。
  5. */
  6. 公共 静的void premain(文字列agentArgs、インストルメンテーションinst) {
  7. システム。 out .println( "=========premainメソッド実行1=========" );
  8. システム。 .println(agentArgs)を出力します}
  9. /**
  10. * 存在しない場合はpremain(String agentArgs, Instrumentation inst)
  11. * premain(String agentArgs)を実行します
  12. */
  13. 公共 静的void premain(String agentArgs) {
  14. システム。 out .println( "=========premainメソッド実行2=========" );
  15. システム。 .println(agentArgs)を出力します
  16. }
  17. }

MANIFREST.MFファイルを手動で記述することを避けるために、Mavenプラグインを導入します。

  1. <プラグイン>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-jar-plugin</artifactId>
  4. <バージョン>3.1.0</バージョン>
  5. <構成>
  6. <アーカイブ>
  7. <! --META-INF/MANIFEST.MF を自動的に追加 -->  
  8. <マニフェスト>
  9. <addClasspath>は true </addClasspath>
  10. </マニフェスト>
  11. <マニフェストエントリ>
  12. <Premain クラス>com.example.agent.PreMainAgent</Premain クラス>
  13. </マニフェストエントリ>
  14. </アーカイブ>
  15. </構成>
  16. </プラグイン>

mvn clean package パッケージ プログラムを実行すると、以下に示すように myAgent.jar が取得されます。


メインプログラムを書く

  1. パブリッククラステスト{
  2. 公共 静的void main(String[] args) {
  3. System.out.println ( "メインプログラム..." ) ;
  4. }
  5. }

以下のように、アイデアが開始されたときにエージェントを指定します。


メインプログラムを実行した結果は次のようになります。

  1. =========premain メソッド実行 1========
  2. ヌル 
  3. メインプログラム...

メインプログラム...

premain メソッドが実行され、パラメータが渡されていないことがわかります。パラメータを渡す必要がある場合は、javagent プロパティを次のように設定します。

  1. -javaagent:/Users/ganhuojun/code/myagent/target/myAgent.jar=abc

<<:  2020 TECHO PARK 開発者会議セキュリティフォーラムで最先端のセキュリティ技術を探りましょう。

>>:  モノリシックからサーバーレスに移行する際の落とし穴を避けるためのガイド

推薦する

Hostodo の新しい商人、シンプルな VPS レビュー、驚きは少ない

Hostodo は設立されてまだ日が浅いです。そのコンピュータルームは QuadraNet のロサン...

電子商取引代理店業界は資本化の「黄金時代」を先導したのでしょうか?

昨年のダブル11では、テンセントテクノロジーと共同で電子商取引代理業務に関するシリーズの最初の解釈を...

SEO オンライン スタジオ: 未来はどこにあるのか?

SEO 業界は爆発的な成長段階に達し、それに伴って無数の SEO オンライン スタジオが登場しました...

分散アーキテクチャでは、従来のデータベースの運用と保守はどのような変化に直面するでしょうか?

[[319472]]分散アーキテクチャは近年最もホットなトピックかもしれません。この記事では、集中型...

エッジコンピューティングを採用する3つの理由

クラウドへの移行により、ビジネスの俊敏性、スピード、パフォーマンスが向上し、コストも削減されます。し...

企業のウェブサイトはホームページのキーワードランキングにもっと注意を払っているようだ

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています企業のウェ...

徹底解説!時系列データベース HiTSDB: 分散ストリーミング集約エンジン

[[226527]]背景Alibaba グループ内の顧客にサービスを提供する際に、HiTSDB 時系...

SEO クライアントからの苦情を減らすにはどうすればよいでしょうか?

SEO の仕事は血と涙を伴う厳しい仕事だという人もいます。王世凡はこの意見に大いに賛同しており、中国...

なぜ一部の企業はWeiboマーケティングに消極的か

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス企業がWeiboマーケテ...

Weiboマーケティングの利点と限界の簡単な分析

すべての物事には良い面と悪い面という二つの面があります。どのマーケティング手法にも利点と限界がありま...

ワールドカップがやって来ます!大手ブランドがこの祭りでどのようにマーケティングの機会を活用しているかをご覧ください

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています4年に一度...

専用com: 月額 54 ドル、米国専用サーバー (ロサンゼルスを含む 9 つのデータセンター)、E3-1270v5/v6/64G メモリ/2*512GSSD/100T トラフィック/5IPv4

Dedicated.com は、米国の老舗サーバープロバイダーです。主に低価格の独立サーバー事業を運...

ハッカーがPayPalのセキュリティの抜け穴を暴き、いくつかのトリックを使って口座資金を2倍にする

PayPalのセキュリティ欠陥によりハッカーが口座資金を倍増させることが可能にフェニックステクノロジ...

「初心者」から「超神」まで、ウェブサイト最適化の重要な3つの段階

現在、中国国内のウェブサイトの最適化は、基本的に百度検索エンジン向けに最適化されています。Googl...