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 開発者会議セキュリティフォーラムで最先端のセキュリティ技術を探りましょう。

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

推薦する

SEO の背後にある競争: ブランド優先

今日の検索エンジンに直面しても、Baidu のパターンは変わりません。コンテンツは核心の中心になって...

金融技術イノベーションの深耕:ファーウェイクラウドは証券業界のエンパワーメント機能をあらゆる面で最適化します

5G、クラウドコンピューティング、ビッグデータ、人工知能などの新しいICT技術が何千もの業界に浸透す...

ID とアクセス管理の問題がハイブリッドおよびマルチクラウドの導入を妨げているのでしょうか?

[[392873]]クラウド プラットフォームにおける ID およびアクセス管理に関する懸念により、...

Bespin Globalがクラウド管理サービスで「Excellence Level」認定を取得し、中国のMSP業界をリードし続けている

2020年1月7日、北京—中国情報通信研究院(CAICT)主催の「2020年クラウド管理およびクラウ...

新浪の数億ドルの投資はまだ利益を生んでおらず、微博の商業化は苦戦している

中国新聞社ITチャンネルによる地図中国新聞社、7月17日(ITチャンネル左盛丹) 課金するべきか、し...

エッジコンピューティングは AI の開発を促進します。将来、クラウドコンピューティングを排除できるでしょうか?

[[212281]] 現在の国家政策による支援から、企業による業務応用の推進まで、人工知能がいかに...

スパイダーに記事をクロールさせる方法

最近、Baidu のオリジナルの火星計画が効果を発揮し、Baidu はオリジナルコンテンツのあるウェ...

クラウドネットワークとは何ですか?

クラウドの未来は明るい。 2024 年までに、IT 支出の 45% 以上が、レガシー ネットワークの...

hostens-20 ユーロ/年 VPS/2g メモリ/40g ハードディスク/1T トラフィック/リトアニア

興味のある方は、hostens.eu のリトアニア データ センターの VPS をご覧ください。この...

#黒5# alphavps: 15ユーロ/年、KVM/1Gメモリ/2コア/15gNVMe/1Tトラフィック、ロサンゼルス、大容量ハードドライブVPS

2017年から運営しているAlphavpsは、2017年のブラックフライデーに低価格のVPSを提供し...

QingCloud Technology CIC 2021クラウドコンピューティングサミットが成功裏に開催され、強固なデジタル基盤でイノベーションを促進

7月29日、「先見・デジタル自由」をテーマにしたCIC 2021クラウドコンピューティングサミットが...

資格のあるSEOERのウェブサイト最適化方法

今は、SEO において適者生存の時代です。SEO 担当者として、SEO の革新のペースをどう把握すれ...

shockhosting: 50% オフ、月額 4.99 ドル、KVM/2G メモリ/1 コア/300g ハード ドライブ/1T トラフィック、米国/オランダ/英国の 5 つのデータ センター

今年運営を開始した小規模で精巧なホスティング会社であるshockhostingは、2つの朗報をもたら...

新バージョンの西遊記の登場人物から学んだ最適化プロセスの重要なポイント

張継中版『西遊記』全60話が最近、主要衛星テレビ局で放送され、ネットユーザーの間ではこの映画に対する...