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

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

推薦する

「9つの言葉、1つの手、専用のクラウド」、Youfu Networkのクラウドへの道

[51CTO.com オリジナル記事]プロプライエタリクラウドと専用クラウドは単に名前が違うだけでし...

Baiduの外部データを分析して対象ウェブサイトのSEOパワーソースを特定する

それは仕事上の職業上の習慣と使命感から来るものであるべきです。Shu Yan が毎日コンピューターの...

ウェブサイトのトラフィックを増やすには細部に注意を払ってください

トラフィックは現金を意味し、ウェブサイトが存続するにはトラフィックが必要です。そのため、ほとんどのウ...

Kubernetes リソースを管理する際に注意すべき 5 つのポイント!

Kubernetes は、大規模なコンテナ管理のタスクの多くを自動化します。ただし、コンテナ化された...

製造業におけるクラウドコンピューティングの課題と開発動向

クラウド コンピューティングの発展に伴い、製造会社の日常業務にますます多くのクラウド アプリケーショ...

Baidu とウェブマスター

ウェブマスター向けのよくある質問ウェブサイトは更新されましたが、Baidu によってインデックスされ...

インターネット マーケティングの 6 つのマーケティング武器

オンラインマーケティングの実施方法、オンラインマーケティングの実施方法、この記事では、一般的に使用さ...

ネットワークマーケティング - 農地マーケティングのルール

実際、多くの点が似ています。最も人気のあるオンライン マーケティングと従来のマーケティング モデルの...

テンセントは今月、決済、電子商取引、宝くじを統合するWeChatビジネスグループを設立すると言われている

テンセントの内部関係者によると、テンセントは今月中にWeChat事業グループの設立を発表し、その後、...

販売者として、Weibo をマーケティングにどのように活用できますか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス新浪微博から騰訊微博への...

SEOウェブサイトの戦略を変更し、ソフトカルチャーの強さを向上させる

近年、SEO ウェブサイトは急速に発展しており、ウェブマスターも SEO ウェブサイトに多大な労力を...

ウェブサイトの通常の掲載に影響を与える6つの主な理由

多くの SEO 担当者は、なぜ自分の Web サイトのインデックスが少ないのか、または新しい Web...

Hostus Asia 最適化 VPS シンプルレビュー/Quadranet ロサンゼルス データセンター

Hostusのアジア最適化VPSがリリースされました。「Hostus-高速アジア最適化回線VPS/ク...

Baidu は本当に事故による怪我に素早く反応するのだろうか。

みなさんこんにちは。私はShi Touです。今日、ホームページがK-edされた私のウェブサイトの一つ...

HUAWEI Cloud for Good: テクノロジーで四川省を活性化し、土地を温暖化させる

10月28日、「スマートで美しい成都、約束とと​​もに前進」ファーウェイ成都市サミット2020が盛大...